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

WasmをRustにする

 WasmをRustにする

■ イベント
Rust、何もわからない… #15
https://estie.connpass.com/event/405217/

■登壇概要
タイトル:WasmをRustにする
登壇者:CTO 笹川 裕人

■ 技術本部 採用情報
https://media.sansan-engineering.com

Avatar for SansanTech

SansanTech PRO

October 14, 2026

More Decks by SansanTech

Other Decks in Technology

Transcript

  1. 笹川 裕⼈(Sasakawa Hirohito) CTO - CSで博⼠の学位を取得 - 専⾨は正規表現照合のアルゴリズム 写真が入ります -

    アルゴリズムとデータ構造が好物 - 2023年4⽉より現職 - 2025年6⽉よりCTOに就任 - 新卒/中途全ての3次⾯接を担当。新しく⼊社する技 術系職種の⽅の技術レベルに責任を持っている - 技術全般と、美味しいご飯/お酒が好き - Rustは2020年頃から使⽤。CLIツールを作るのが好き
  2. ⽣成コードの問題点 wasm2rsでgooglesql-wasmを変換して⽣成されるコードにはいくつかの問題が - コード量が巨⼤ - - コードのネストが深すぎてコンパイラの上限(default 128段)に当たる - -

    コード変換時にピークメモリが⼤きくなってOOMする 上限は設定で変更できるものの... 後述の最適化してもまだ巨⼤(260万⾏, 122MB) - buildに30分くらいかかる
  3. Cargoのfeaturesの利⽤ ユーザに対して性質の異なる選択肢を提供 - native: wasm2rsで⽣成したコードをそのまま利⽤する - - buildが重いが、⾼速に動作し安全(safe rust) native-ffi:

    wasm2rsで⽣成したコードをcdylibとして配布する - native相当の⾼速な動作を維持したまま、build済みdylibをダウンロードす るのみでbuildは軽い - wasmtime: WasmをWasmtimeで利⽤する - Wasmtimeの問題が許容できるなら問題ない選択肢
  4. 結果 様々な最適化を頑張ったおかげで - 単⼀スレッドでWasm + Wasmtimeに⽐して1.5倍程度⾼速に - 並列化によって頭打ちしない性能を獲得 - -

    並列化しない場合に⽐べ、4並列で3.6倍、8並列で7倍のスループット ⼤規模なcrateの体験の悪さはcdylibの配布で軽減