WebAssembly版SQLiteがWASI対応に。VMware Wasm Labsチームが明らかに
VMware Wasm LabsチームはSQLite開発チームと協力し、WebAssembly SQLiteがWASI対応になったことを明らかにしました。
SQLiteは昨年11月にリリースされたバージョン3.40からWebAssembly版の「SQLite3 WASM/JS」へのコンパイルをサポートし、配布される公式のバイナリにLinux版、Windows版、Mac OS X版、Android版などと共にWebAssembly版の「SQLite3 WASM/JS」が含まれるようになりました。
参考:「SQLite3 WASM/JS」パブリックベータ公開。SQLite 3.40でサポート開始、WebブラウザなどでSQLiteが実行可能に
今回このWebAssembly版SQLiteが、WebAssemblyでクロスプラットフォームを対応するWASI(WebAssembly System Interfaice)仕様に対応したことが発表されました。
WASIはWebAssemblyをクロスプラットフォーム対応にする
WASIとは、WebAssemblyアプリケーションをWebブラウザ以外の環境、具体的にはLinuxやmacOSやWindows上でWebAssemblyランタイムを用いて実行することを想定して作られた仕様です。
これらのOS上でWebAssemblyアプリケーションが実行される場合、ファイルシステムなどのOSのシステムをAPI経由で呼び出すことになります。
APIはOSごとに異なるため、アプリケーションをOSごとに作り分ける必要があります。WebAssemblyのアプリケーションはLinux用、macOS用、Windows用などのOSごとに異なるバイナリが生成されることになります。
これではせっかく特定のプロセッサに依存しないWebAssemblyバイナリの特長を活かすことが出来ません。
そこで登場したのが、WebAssemblyのアプリケーションに対してOSのシステムコールを抽象化することでOS依存をなくし、ポータブルなWebAssemblyアプリケーションを実現する業界標準仕様のAPI「WebAssembly System Interface」(WASI)です。
WASIに対応したWebAssemblyランタイムの上で、WASIに対応したWebAssemblyアプリケーションを実行することで、1つのバイナリでクロスプラットフォーム対応のWebAssemblyアプリケーションが実現するのです。
すでに主要なWebAssemblyランタイムのほとんどがWASI対応となっており、WASIの環境はおおむね揃いつつあります(ただし今後もWASIはアップデートされていくため、状況は変化していくと思われます)。
単一のSQLiteバイナリでクロスプラットフォーム対応を実現
今回、WebAssembly版のSQLiteがWASI対応となったことで、単一のWebAssembly版SQLiteがどのOSの上であっても実行可能になりました。
すでにWASI対応としてコンパイルされたWebAssembly版SQLiteのバイナリが「Release libs/sqlite/3.41.2+20230329-43f9aea · vmware-labs/webassembly-language-runtimes · GitHub」として公開されているため、興味のある方は試すことができるようになっています。
あわせて読みたい
Webエンジニアがセキュアコーディングを独習できるオンライン教材「KENRO」の一部を無料公開中[PR]
≪前の記事
Red Hat、ローカルマシンにコンテナとKubernetes環境などを構築する「Podman Desktop 1.0」正式リリース