このプロジェクトについて

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のWebサイトで公開されています。 プロジェクトの目標には、小さなバイナリ、幅広いマイクロコントローラサポート、WebAssemblyの使いやすさ、効率的なCGo相互運用、一般的な標準ライブラリパッケージとの互換性が含まれており、多くのGoプログラムが変更なしでコンパイルできることを目指しています。すべてのGoプログラムをコンパイルすること、すべてのパフォーマンスシナリオで標準の`gc`コンパイラと同等になること、極めて多数のゴルーチン向けに最適化することを主目的とはしていません。 TinyGoは主にBSD 3-clauseライセンスで提供されています。一部の取り込まれたLLVMコードはApache 2.0のバリアントを使用し、Teensyライブラリ由来のコードはPJRCのライセンスを使用しており、関連するファイルヘッダーに示されています。コミュニティサポートはGophers Slackの#TinyGoチャンネルで利用でき、貢献方法はプロジェクトのWebサイトに記載されています。