Open3

WasmLinux: Cloudflare Pagesあたりに置きたい問題

okuokuokuoku
-rw-r--r-- 1 oku 197121  22K Feb 12 22:59 runner.html
-rw-r--r-- 1 oku 197121 106K Feb 12 22:59 runner.js
-rw-r--r-- 1 oku 197121 309M Feb 12 22:55 runner.wasm
-rw-r--r-- 1 oku 197121 7.1K Feb 12 22:59 runner.worker.js

さすがに309MiBは置けない。。というわけでダイエットしなければならない。

Cloudflare Pagesは最大25MiBまでのバイナリを配置できる。

okuokuokuoku

DWARFを分離

-rw-r--r-- 1 oku 197121 192M Feb 13 00:25 runner.wasm

流石に半分にもならないな。。ただ、DWARFのリンクを辞めることで、ビルド時間が10分→3分に短縮された(!)

この辺のテクニックはChromiumのblogに詳しい。

https://developer.chrome.com/blog/faster-wasm-debugging?hl=ja

このページだとdwarf-5の利用を勧めているが、wasm-optがDWARF5を解釈できないので最適化ビルドに失敗してしまう。

warning: unsupported DWARF version (5)
warning: unknown subopcode 209 (this may be an unsupported version of DWARF)
warning: bad MinInstLength (this may be an unsupported DWARF version)Fatal: unknown debug line opcode: =
okuokuokuoku

Service workerくらいしか解がなさそう

https://github.com/gzuidhof/coi-serviceworker

coi-serviceworkerみたいに自前でレスポンスヘッダを捏造すれば何でもできてしまうんではないか。。つまり、 exec.001.wasm 〜 exec.010.wasm みたいに分割しておいて、service worker内で結合 ...みたいなことが可能なのか検討する必要がある。

Cloudflareは基本的に拡張子ベースでキャッシュ有無を決定し、mimeベースで圧縮の有無を決定する。このため、拡張子はあんまり変えない方が良いだろう。