Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LinuxアプリのAOT-Wasm化による⾼速ブラウザ実⾏ 〜FOSDEM 2026での発表と...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Masashi Yoshimura Masashi Yoshimura
March 06, 2026
10

LinuxアプリのAOT-Wasm化による⾼速ブラウザ実⾏ 〜FOSDEM 2026での発表と振り返り〜

Avatar for Masashi Yoshimura

Masashi Yoshimura

March 06, 2026
Tweet

Transcript

  1. 1 © NTT, Inc. 2026 1. ⽒名︓吉村仁志 2. 修⼠課程修了後,2023年度に NTT

    へ新卒⼊社 3. グループ︓クラウドネイティブ技術,Linux など,システムソフト ウェア周りを主軸とした,様々なOSS関連の研究開発に従事 4. ⾃⾝は,WebAssembly関連の研究がメイン 5. X: @ming_rrr, Github ID: yomaytk ⾃⼰紹介
  2. 2 © NTT, Inc. 2026 • Free and Open Source

    Software Developers’ European Meeting › 様々なOSS・OSSコミュニティなどが集い,交流・議論する会議 › 始まり︓2000年,場所︓ブリュッセル(ベルギー) › 参加⼈数︓約8,000~10,000⼈程度 › 世界最⼤規模のOSSカンファレンス • FOSDEM 2026 › 1,014 events, 1186 speaker › 66 tracks/devrooms FOSDEM 2026
  3. 5 © NTT, Inc. 2026 1. WebAssembly Debugging with LLDB

    2. Your Workloads Can Lose Some Weight: WebAssembly on Kubernetes 3. Wastrel: WebAssembly Without the Runtime 4. JupyterGIS — Interactive, Collaborative, and Client-Side Geospatial Computing in JupyterLab 5. Bringing WebAssembly to constrained devices with Rust: Runtimes, tooling, and real-world tradeoffs 6. wSDR -- web based SDR processing 7. Building Interactive C/C++ workflows in Jupyter through clang-repl 8. Re-decentralizing the web platform with Wasm GC 9. Beyond JavaScript: Wasm GC present and future 10. High-Speed Linux Application Execution in the Browser with Binary Translation 11. WebNN and WebLLM on RISC-V: Closing the AI Acceleration Gap with RVV and Tenstorrent 12. Practical Persistence on Microkernels (ft. PhantomOS) 13. Lighter, faster, simpler: An Element Web for the future 14. SQLRooms: Local-First Analytics with DuckDB, Collaborative Canvas, and Loro CRDT Sync Wasm関連
  4. 6 © NTT, Inc. 2026 1. WebAssembly Debugging with LLDB

    2. Your Workloads Can Lose Some Weight: WebAssembly on Kubernetes 3. Wastrel: WebAssembly Without the Runtime 4. JupyterGIS — Interactive, Collaborative, and Client-Side Geospatial Computing in JupyterLab 5. Bringing WebAssembly to constrained devices with Rust: Runtimes, tooling, and real-world tradeoffs 6. wSDR -- web based SDR processing 7. Building Interactive C/C++ workflows in Jupyter through clang-repl 8. Re-decentralizing the web platform with Wasm GC 9. Beyond JavaScript: Wasm GC present and future 10. High-Speed Linux Application Execution in the Browser with Binary Translation 11. WebNN and WebLLM on RISC-V: Closing the AI Acceleration Gap with RVV and Tenstorrent 12. Practical Persistence on Microkernels (ft. PhantomOS) 13. Lighter, faster, simpler: An Element Web for the future 14. SQLRooms: Local-First Analytics with DuckDB, Collaborative Canvas, and Loro CRDT Sync Wasm関連 吉村の発表
  5. 7 © NTT, Inc. 2026 1. 昨今のブラウザは強⼒なプラットフォーム › ゲーム,動画再⽣,3Dレンダリング,LLM, ...

    2. 任意のプログラムは動作可能か︖ › 基本的に不可能 » ブラウザはsandbox環境として動作し,リソースアクセスが制限 (ファイルシステム,ネットワーク,ハードウェア,...) ブラウザ web-llm
  6. 8 © NTT, Inc. 2026 1. ⼀部のリッチなプログラムはブラウザに移植されている › e.g., postgres-wasm,

    ffmpeg.wasm, Libreoffice in the browser ブラウザ上で広範なプログラムが動作可能なら? ネイティブアプリとブラウザの融合は, ネイティブに近い性能とセキュリティ・ポータビリティを兼ねる
  7. 9 © NTT, Inc. 2026 1. v86 : x86 PC

    emulator and x86-to-wasm JIT, in the browser › リポジトリ : https://github.com/copy/v86 › 様々な x86 32bit OS (Linux, FreeBSD, ...) をブラウザで実⾏可能 › 性能劣化が⾮常に⼤きい 2. container2wasm : Container to WASM converter › リポジトリ : https://github.com/container2wasm/container2wasm › 64 bit Linux や Linuxコンテナをブラウザ上で実⾏可能 › 性能劣化が⾮常に⼤きい 既存プロジェクト CPUエミュレータの移植は性能が大きく劣化
  8. 10 © NTT, Inc. 2026 • elfconv : AOT binary

    translator of Linux apps → WebAssembly › リポジトリ : https://github.com/yomaytk/elfconv › Linux/ELF/AArch64 → Wasm をサポート › 性能劣化が少ない elfconv
  9. 11 © NTT, Inc. 2026 デモ (GNU Bash + BusyBox

    + Python in the browser) link: https://yomaytk.github.io/elfconv-demo/
  10. 12 © NTT, Inc. 2026 Benchmark Test Benchmark source (C)

    Benchmark source (C) Linux app Benchmark source (C) Linux app 1. 2. 3.
  11. 13 © NTT, Inc. 2026 Benchmark Test 4.2 2.0 59.5

    98.6 56.4 Higher is better Test 1. 素数計算 Test 2. MNIST-NN Test 3. LINPACK 100 100 100 1.2
  12. 14 © NTT, Inc. 2026 機械語 → LLVM IR https://github.com/lifting-bits/remill

    • elfconv : AOT binary translator of Linux apps → WebAssembly › リポジトリ : https://github.com/yomaytk/elfconv › Linux/ELF/AArch64 → Wasm をサポート elfconv (アーキテクチャ) Linux app LLVM bitcode アーキテクチャ Runtime (C++) メモリ管理 Linux システムコール実 装, ... with
  13. 15 © NTT, Inc. 2026 どのようなLLVM IRを⽣成するか︖ NPWY Y CMY

    BEEY Y Y NPW! WYMPBE4UBUFY TUPSFWY4UBUFY C! DBMMGVOD@Y  BEE! WYMPBE4UBUFY WYMPBE4UBUFY WYBEEWY WY TUPSF WY4UBUFY 0x400200 0x400204 0x400208 VMA $164UBUF Machine Code (AArch64) LLVM IR by Remill struct State { SIMD simd; // 512 bytes GPR gpr; // 518 bytes uint64_t NZCV; ... }; 機械語 → LLVM IR
  14. 16 © NTT, Inc. 2026 • Linux システムコールをブラウザ上でエミュレーションする必要がある › CPUエミュレータを⽤いる⼿法では不要

    › elfconv での難所 • 多くのシステムコールは libc (emscripten) の関数を呼べば良い › 例: openat, read, write, unlinkat, truncate, ... • ⼀部のシステムコール実装は⾮⾃明 › 例: fork, execve, socket, ... Linux システムコールの実装
  15. 17 © NTT, Inc. 2026 • Linux システムコールをブラウザ上でエミュレーションする必要がある › CPUエミュレータを⽤いる⼿法では不要

    › elfconv での難所 • 多くのシステムコールは libc (emscripten) の関数を呼べば良い › 例: openat, read, write, unlinkat, truncate, ... • ⼀部のシステムコール実装は⾮⾃明 › 例: fork, execve, socket, ... Linux システムコールの実装
  16. 18 © NTT, Inc. 2026 マルチプロセス appA.wasm worker A1 (appA.wasm

    + appA.js) Worker pool ... Browser Linux Apps appA appB appA.js appB.wasm appB.js File System /usr/bin/appA /usr/bin/appB ... System calls emulation process management js-kernel SharedArrayBuffer/Atomics + MessageChannel
  17. 19 © NTT, Inc. 2026 マルチプロセス appA.wasm worker A1 (appA.wasm

    + appA.js) Worker pool ... Browser Linux Apps appA appB appA.js appB.wasm appB.js File System /usr/bin/appA /usr/bin/appB ... System calls emulation process management js-kernel worker A2 (appA.wasm + appA.js) process state fork
  18. 20 © NTT, Inc. 2026 マルチプロセス appA.wasm worker A1 (appA.wasm

    + appA.js) Worker pool ... Browser Linux Apps appA appB appA.js appB.wasm appB.js File System /usr/bin/appA /usr/bin/appB ... System calls emulation process management js-kernel execve worker B1 (appB.wasm + appB.js) worker A2 (appA.wasm + appA.js)
  19. 21 © NTT, Inc. 2026 マルチプロセス appA.wasm worker A1 (appA.wasm

    + appA.js) Worker pool ... Browser Linux Apps appA appB appA.js appB.wasm appB.js File System /usr/bin/appA /usr/bin/appB ... System calls emulation process management js-kernel worker B1 (appB.wasm + appB.js) worker A2 (appA.wasm + appA.js)
  20. 22 © NTT, Inc. 2026 1. 全体的な機能強化 › Linux 共有オブジェクトの変換

    (.so) » 現在は静的リンクしたELFのみ › Linux システムコール実装の強化 › x86-64 バイナリの変換対応 1. 既存ツールの移植,連携 › ブラウザ上の開発環境,ローカルLLM,コンテナイメージ,... 今後の展望 Any issues or PRs are welcome!