WebAssembly版SQLiteがWASI対応に。VMware Wasm Labsチームが明らかに
今回は「WebAssembly版SQLiteがWASI対応に。VMware Wasm Labsチームが明らかに」についてご紹介します。
関連ワード (具体的、必要、特長等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
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」として公開されているため、興味のある方は試すことができるようになっています。