このプロジェクトについて
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サイトに記載されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.