프로젝트 소개
TinyGo는 Go로 작성된 프로그램을 위한 대체 컴파일 도구 모음을 제공합니다. Go 언어 도구의 라이브러리와 LLVM을 결합하여, 바이너리 크기, 배포 환경 또는 하드웨어 제약으로 인해 표준 컴파일러가 적합하지 않은 사용 사례를 대상으로 합니다.
임베디드 개발을 위해 TinyGo는 하드웨어 접근을 위한 `machine` 패키지를 포함하며, Arduino Uno, Adafruit Circuit Playground Express, Seeed Studio XIAO-ESP32S3와 같은 대상을 선택하여 동일한 프로그램을 지원되는 마이크로컨트롤러 보드에 컴파일하고 플래시할 수 있습니다. 이 프로젝트는 150개 이상의 마이크로컨트롤러 보드를 지원한다고 명시하고 있습니다.
WebAssembly의 경우, TinyGo는 브라우저 지향 WASM 모듈과 서버, 엣지 환경, Fastly Compute, Fermyon Spin, wazero와 같은 호스트를 위한 WASI 프로그램을 빌드할 수 있습니다. WASI Preview 1 대상과 내보낸 WASM 함수를 지원합니다.
Linux, macOS, Windows용 명령줄 프로그램도 빌드할 수 있습니다. 설치 옵션으로는 네이티브 설정과 Docker 컨테이너가 있으며, 문서와 시작 자료는 TinyGo 웹사이트에 게시되어 있습니다.
이 프로젝트의 명시된 목표에는 작은 바이너리, 광범위한 마이크로컨트롤러 지원, WebAssembly 사용성, 효율적인 CGo 상호 운용성, 그리고 많은 Go 프로그램이 수정 없이 컴파일되도록 하는 일반적인 표준 라이브러리 패키지와의 호환성이 포함됩니다. 모든 Go 프로그램을 컴파일하거나, 모든 성능 시나리오에서 표준 `gc` 컴파일러와 일치하거나, 극도로 많은 수의 고루틴에 주로 최적화하는 것을 목표로 하지는 않습니다.
TinyGo는 주로 BSD 3-clause 라이선스로 제공됩니다. 일부 가져온 LLVM 코드는 Apache 2.0 변형을 사용하며, Teensy 라이브러리에서 파생된 코드는 관련 파일 헤더에 표시된 대로 PJRC의 라이선스를 사용합니다. 커뮤니티 지원은 Gophers Slack #TinyGo 채널을 통해 제공되며, 기여 방법은 프로젝트 웹사이트에 문서화되어 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.