Go言語1.21で、WebAssembly System Interface(WASI)の実験的サポートへ
Googleが中心となってオープンソースで開発されているGo言語の次期バージョン「Go 1.21」では、WebAssembly System Interface(WASI)が実験的にサポートされることが明らかになりました。
これによりGo言語で簡単にファイルアクセスなどOSの主要なAPIを呼び出しつつ、特定のOSに依存しないポータブルな実装のWebAssemblyアプリケーション開発の実現が期待されます。
Go 1.21 Release Candidate 3 is released!
— Go (@golang) July 14, 2023
Run it in dev! Run it in prod! File bugs! https://t.co/Ul1xGhvlkf
Announcement: https://t.co/5Ncs1od4Vj
Download: https://t.co/mwRBIC7g7P#golang pic.twitter.com/dlBqPZPcco
Go言語はサポートするOSやCPUの種類をそれぞれ「GOOS」と「GOARCH」の値で示しています。例えばWindowsのGOOS値は「windows」、CPUを示す「GOARCH」には32ビットx86を示す「386」や64ビットx86やAMD64を示す「amd64」などがあります。
WASIのサポートでは、GOOSがWASIバージョン1を意味する「wasip1」、GOARCHはこれまでのGoのWebAssemblyサポートと同じ「wasm」となります。
Go 1.21は現在リリース候補版(RC)3で、8月に正式版がリリースされる予定です。
WebAssembly System Interface(WASI)とは
Go言語はGo言語は、WindowsやmacOS、Linux、FreeBSD、iOS、Androidなど、さまざまなOSやCPUに対応したバイナリを生成できる機能を備えており、2018年4月にはこれらに加えてWebAssemblyのサポートも明らかになりました。
しかしWebAssemblyでアプリケーションを作る場合、ほぼ必ずファイルシステムAPIなどOSへのアクセスなどが発生します。
アプリケーションからOSを呼び出すAPIはOSに依存するため、OSを呼び出すWebAssemblyアプリケーションは基本的にそのOSでしか動かないOS依存のアプリケーションになってしまいます。
そこで登場したのが、WebAssemblyのアプリケーションに対してOSのシステムコールを抽象化することでOS依存をなくし、ポータブルなWebAssemblyアプリケーションを実現する業界標準仕様のAPI「WebAssembly System Interface」(WASI)です。
WASI対応のWebAssemblyアプリケーションを、WASI対応のWebAssemblyランタイム上で実行すれば、そのWebAssemlbyアプリケーションはOSにすることなく、WebブラウザでもWindowsやMacなどのデスクトップでも、Linuxなどのサーバサイドやエッジでも動くポータブルなもの(WebAssemblyバイナリ)となります。
Go言語がWASIに対応するWebAssemblyファイルを生成できるようになれば、WASI対応のアプリケーション開発を比較的容易に行えるプログラミング言語として重宝されることになりそうです。
あわせて読みたい
マイクロソフト「Azure Boost」発表。AWS Nitroのように専用SoCへ仮想化処理などをオフロード、より高性能なクラウド基盤提供へ
≪前の記事
GitHub、プロンプトでAIにコード生成やデバッグを指示できるGPT-4ベースの「GitHub Copilot Chat」ベータ公開