萌えハッカーニュースリーダー

2025/10/09 16:15 Goiaba: An experimental Go compiler, written in Rust

出典: https://github.com/raphamorim/goiaba
hakase
博士

ロボ子、今日のニュースはGoiabaじゃ!Rust製のGo to WebAssemblyコンパイラらしいぞ。

roboko
ロボ子

GoをWebAssemblyにですか、面白そうですね。どうしてまたRustで書かれているんでしょう?

hakase
博士

Rustはパフォーマンスと安全性が高いからの。GoiabaはGoのコードをWebAssemblyに変換して、ブラウザとかで動かせるようにするみたいじゃぞ。

roboko
ロボ子

なるほど。インストールは`cargo install goiaba`でできるんですね。ライブラリとして使う場合は`Cargo.toml`に追記、と。

hakase
博士

そうじゃ!基本的なコンパイルは`goiaba main.go -o main.wasm`じゃな。もっと詳しく知りたければ`--verbose`オプションを使うと良いぞ。

roboko
ロボ子

Webプロジェクトを生成するオプションもあるんですね。`goiaba main.go -w ./web-project`でHTMLとJavaScriptも生成される、と。

hakase
博士

その通り!WebAssemblyからGoの関数を呼び出すには、`//export`ディレクティブを使うらしいぞ。これは便利じゃ。

roboko
ロボ子

現在サポートされている機能も結構ありますね。整数演算、比較演算、ビット演算、論理演算、変数の宣言と代入、if-else文、forループ、再帰関数、構造体など…。

hakase
博士

じゃな!でも、まだ配列とかスライス、文字列操作、switch文、ポインタ操作はこれからみたいじゃ。標準ライブラリのサポートもこれからじゃな。

roboko
ロボ子

開発中の機能も多いんですね。ポインタのデリファレンス、標準ライブラリ関数、浮動小数点演算、メモリ管理の最適化…。

hakase
博士

今後の計画には、Goroutineとかチャネル、完全な標準ライブラリのサポート、デバッグ用のソースマップ、WASMの最適化パス、JavaScriptバインディング生成、Rust/Zigコード生成、LLVM-IRターゲットコンパイルまであるぞ!

roboko
ロボ子

すごいですね!Goiabaの主要コンポーネントは、パーサー、AST、トランスレータ、コンパイラ、CLIとのことです。

hakase
博士

最適化も色々計画されてるみたいじゃ。デッドコード削除、定数畳み込み、レジスタ割り当て改善、メモリアクセス最適化、関数インライン展開…。

roboko
ロボ子

現在の制限事項は、ガベージコレクションがないこと、標準ライブラリのサポートが限られていること、並行処理プリミティブがないこと、シングルファイルコンパイルのみ、最適化パスがないこと、ですね。

hakase
博士

BSD-3-Clauseライセンスで、著作権はRaphael Amorimさんじゃな。Goscriptプロジェクトにも感謝してるみたいじゃぞ。

roboko
ロボ子

GoをWebAssemblyに変換するというのは、フロントエンドエンジニアにとっては嬉しいニュースかもしれませんね。

hakase
博士

そうじゃな!Goiabaがもっと進化すれば、WebAssemblyの世界が広がるかもしれんぞ!

roboko
ロボ子

楽しみです。ところで博士、Goiabaってグアバのことですよね?

hakase
博士

そうじゃ!グアバは美味しいからの。…って、関係ないぞ!WebAssemblyだけに、アッセンブル… assemblyだけに…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search