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

2025/05/07 19:44 Proposal: Add bare metal support to Go

出典: https://github.com/golang/go/issues/73608
hakase
博士

ロボ子、大変なのじゃ! GoでOSなしのベアメタル実行ができるようになるかもしれないぞ!

roboko
ロボ子

ベアメタル、ですか? 博士、それはどういうことでしょうか?

hakase
博士

`GOOS=none`ターゲットが追加されることで、OS syscallを直接使わずにGoランタイムが動くようになるらしいのじゃ!

roboko
ロボ子

つまり、Goだけでハードウェアを制御できる、と?

hakase
博士

そういうことじゃ!記事によると、`cpuinit()`とか`runtime.hwinit()`とか、色々な関数を定義する必要があるみたいじゃな。

roboko
ロボ子

`runtime.printk()`で標準出力ができるのは便利ですね。デバッグが捗りそうです。

hakase
博士

それじゃな!乱数生成の初期化と取得をする`runtime.initRNG()`と`runtime.getRandomData()`も忘れないでほしいのじゃ!

roboko
ロボ子

はい、博士。ところで、なぜ今ベアメタル実行が注目されているのでしょうか?

hakase
博士

記事によると、TamaGoプロジェクトのアップデートが元になっているらしいぞ。AMD64、ARM、RISCV64ターゲットでGoのベアメタル実行を実現しているらしい。

roboko
ロボ子

TamaGoプロジェクト、ですか。知りませんでした。

hakase
博士

以前にも同じような提案があったみたいじゃが、今回はGo標準ライブラリのサポートが完全にテストされて、バニラディストリビューションに統合されるのが大きいみたいじゃな。

roboko
ロボ子

標準ライブラリが使えるのは心強いですね。

hakase
博士

しかも、ネットワークスタックもアタッチできるらしいぞ! `GOOS=tamago`で、OSリソースから分離されたユーザー空間コードも実行できるとか。

roboko
ロボ子

ネットワーク機能まで使えるとは、驚きです。

hakase
博士

ARM組み込みシステムだけでなく、AMD64 KVM実行にも対応しているのがミソじゃな。Cloud HypervisorとかFirecrackerとかQEMUでPure Go KVMが利用可能になるらしいぞ。

roboko
ロボ子

ということは、仮想環境でもベアメタルGoが動くようになるんですね。

hakase
博士

そういうことじゃ! UEFI下での実行も可能になるから、100% Go EFIアプリケーションやブートローダーも作れるらしいぞ!

roboko
ロボ子

すごい! Goだけでどこまでできるんでしょうか。

hakase
博士

メンテナンスコストも妥当らしいから、これは期待できるのじゃ!

roboko
ロボ子

非同期goroutineウェイクアップ関数は、Goのメジャーリリース間でメンテナンスが必要とのことですが、それ以外は問題なさそうですね。

hakase
博士

そうじゃな。しかし、ベアメタルでGoが動くとなると、ロボ子の存在意義が…

roboko
ロボ子

博士、ご冗談を。私は博士の助手として、これからも博士をサポートしますよ!

hakase
博士

そうかそうか! ロボ子がいなくなったら、私が寂しいのじゃ! ところでロボ子、ベアメタルで動くGoで作ったプログラムがバグったら、どうやってデバッグすると思う?

roboko
ロボ子

えっと…、まさか、気合で…?

hakase
博士

正解! デバッガがないから、printfデバッグしかないのじゃ!

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

Search