C와 C++ 코드를 WebAssembly로 컴파일해 브라우저, Node.js 및 기타 Wasm 런타임에서 실행할 수 있게 하는 컴파일러 툴체인입니다.
tinygo-org/tinygo
LLVM 기반 Go 컴파일러로, 마이크로컨트롤러, WebAssembly(WASM/WASI), 명령줄 도구를 대상으로 합니다.
- 스타
- 17,828
- 포크
- 1,093
- 열린 이슈
- 601
- 마지막 커밋
- 10시간 전
어떤 프로젝트인가요?
TinyGo는 소규모 환경을 위한 대안 Go 컴파일러입니다. 표준 Go 툴체인 라이브러리의 일부를 재사용하고 LLVM을 백엔드로 사용하므로, 동일한 Go 소스 코드를 마이크로컨트롤러 보드, WebAssembly 런타임, 데스크톱 운영체제용으로 빌드할 수 있습니다.
임베디드 환경에서 프로그램은 machine 패키지를 사용해 GPIO 핀과 주변 장치를 제어하며, 컴파일러는 Arduino, Adafruit, Seeed Studio 모델을 포함한 다양한 보드를 지원합니다. 타깃을 선택해 tinygo flash 명령으로 프로그램을 바로 플래시할 수 있습니다. WebAssembly의 경우 브라우저용(WASM) 모듈과 WASI 런타임용 모듈을 생성하며, Fastly Compute, Fermyon Spin, wazero 같은 플랫폼에서도 사용할 수 있습니다.
프로젝트가 밝힌 목표는 바이너리 크기를 매우 작게 유지하고, 널리 쓰이는 보드를 폭넓게 지원하며, 대부분의 표준 라이브러리 패키지와 Go 코드를 수정 없이 컴파일하는 것입니다. 표준 gc 컴파일러와 같은 성능을 내거나 모든 Go 프로그램을 컴파일하는 것을 목표로 하지는 않는다고 명시하고 있습니다.
핵심 기능
- 01150종이 넘는 마이크로컨트롤러 보드용 Go 프로그램을 컴파일합니다.
- 02브라우저용(WASM) 및 WASI 런타임용 WebAssembly 모듈을 생성합니다.
- 03C 코드를 출력하는 대신 LLVM을 코드 생성 백엔드로 사용합니다.
- 04Linux, macOS, Windows 타깃용 빌드를 지원합니다.
- 05flash 및 build 하위 명령을 제공하는 tinygo 명령줄 도구를 제공합니다.
활용 사례
- Go로 Arduino, micro:bit 또는 기타 소형 보드용 펌웨어를 작성합니다.
- WebAssembly를 통해 브라우저나 엣지 플랫폼에서 실행되는 Go 코드를 빌드합니다.
- Fermyon Spin이나 wazero 같은 런타임용 WASI 컴포넌트를 만듭니다.
- 리소스가 제한된 장치에서 사용할 컴파일된 바이너리의 크기를 줄입니다.
빠른 시작
- 1
시작하기 안내에 따라 TinyGo를 설치합니다
- 2
blinky 예제를 Arduino Uno용으로 컴파일하고 플래시합니다
tinygo flash -target arduino-uno examples/blinky1 - 3
WASI 프로그램을 WebAssembly 모듈로 빌드합니다
tinygo build -buildmode=c-shared -o add.wasm -target=wasip1 add.go
사용 전 알아둘 점
- 모든 Go 프로그램이 컴파일되는 것은 아닙니다. 이 프로젝트는 모든 Go 코드를 지원하는 것을 명시적으로 목표로 하지 않습니다.
- 번들 코드의 일부는 별도 라이선스가 적용되는 LLVM 및 Teensy 라이브러리에서 가져왔으므로 라이선스가 혼합되어 있습니다.
토픽
자주 묻는 질문
- tinygo은(는) 무엇인가요?
- LLVM 기반 Go 컴파일러로, 마이크로컨트롤러, WebAssembly(WASM/WASI), 명령줄 도구를 대상으로 합니다. TinyGo는 소규모 환경을 위한 대안 Go 컴파일러입니다. 표준 Go 툴체인 라이브러리의 일부를 재사용하고 LLVM을 백엔드로 사용하므로, 동일한 Go 소스 코드를 마이크로컨트롤러 보드, WebAssembly 런타임, 데스크톱 운영체제용으로 빌드할 수 있습니다.
- tinygo은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- tinygo은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- tinygo은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. tinygo의 마지막 커밋은 2026년 10월 21일입니다.
- tinygo은(는) 어디에 사용할 수 있나요?
- Go로 Arduino, micro:bit 또는 기타 소형 보드용 펌웨어를 작성합니다. WebAssembly를 통해 브라우저나 엣지 플랫폼에서 실행되는 Go 코드를 빌드합니다. Fermyon Spin이나 wazero 같은 런타임용 WASI 컴포넌트를 만듭니다. 리소스가 제한된 장치에서 사용할 컴파일된 바이너리의 크기를 줄입니다.
- tinygo는 어떻게 설치하나요?
- 시작하기 안내에 따라 TinyGo를 설치합니다 blinky 예제를 Arduino Uno용으로 컴파일하고 플래시합니다: tinygo flash -target arduino-uno examples/blinky1 WASI 프로그램을 WebAssembly 모듈로 빌드합니다: tinygo build -buildmode=c-shared -o add.wasm -target=wasip1 add.go
- tinygo은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/tinygo-org/tinygo
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
마이크로컨트롤러와 기타 리소스가 제한된 기기에서 실행되며 하드웨어 접근 모듈을 제공하는 경량 Python 3 구현체입니다.
Node.js 없이 실행되는 네이티브 실행 파일이나 WebAssembly를 만드는 실험적인 TypeScript·JavaScript 컴파일러입니다.
소형 MCU부터 Linux 기반 MPU까지, 임베디드 기기용 그래픽 인터페이스를 만드는 무료 MIT 라이선스 C UI 라이브러리입니다.
Cranelift 코드 생성기를 기반으로 하며 WASI와 다양한 언어의 임베딩을 지원하는 독립형 WebAssembly 런타임입니다.