テクノロジー

うっかり世界最強のWasmコンパイラを作ってしまった件 - Qiita

1: gfx 2026/09/11 08:37

ほうほう。あとで Wado と比べてみよう(Wado も世界最小のwasmをうたう処理系)。

2: deb 2026/09/11 09:41

世界最強の世界最小のwasm-goトランスパイラ!!WASMの呼出規約とかABI、ランタイム問題はともかく

3: amd64x64 2026/09/11 10:07

やっぱり専用言語があった方がいいよね。どうしてもランタイムライブラリとセットになるわけだし。

4: nguyen-oi 2026/09/11 10:17

Go風構文で2.5KBのWasm吐いてJS連携コード自動生成とか夢の技術すぎるだろ

5: yarumato 2026/09/11 10:18

“ブラウザで高速なバイナリ処理や計算ロジックのためにWasm。C/C++: POSIX互換や仮想FSまで引き連れてくる。Rust:学習曲線、ビルドパイプライン。Go: 最小構成でも2〜3MB。自作のGoライクなプログラミング言語を開発”

6: napsucks 2026/09/11 10:43

しゅごい

7: kaorun 2026/09/11 11:11

Libcみたいな汎用ライブラリを自前で持って最小限に縮めるのは合理的だけど、その分のバッファオーバーランみたいな脆弱性対策も自前にならざるを得ないので潜在的な手間と責任は増えそうな気も…

8: shoh8 2026/09/11 11:22

“2.56 KB”え、すげえじゃん(キュン)

9: ika2434 2026/09/11 12:00

凄すぎる試したい

10: soulfulmiddleagedman 2026/09/11 12:27

遊んでみたい

11: udzura 2026/09/11 12:35

はてブコメント見て、逆にそもそも実行領域とのメモリ分離がされているwasmにとってはlibcが重厚すぎなのかもな、と思った

12: strawberryhunter 2026/09/11 13:57

最近、自分もプログラミング言語を作ってみたけど、うっかり作れるものでは全然なかった。うっかりとか、ちょっと(かなり)盛ったと言ってほしい。

13: toaruR 2026/09/11 14:11

もー、変態なんだから

14: dentaro 2026/09/11 14:54

うっかりね

15: atsushieno 2026/09/11 15:09

Qiitaアカウントを見た感じ、自作コンパイラの解説記事を書いたが願望に反して全然広まらなかったので「世界最強」みたいな誇大広告を混ぜて宣伝することにした、という流れ(誇大広告撲滅委員会)

16: igrep 2026/09/11 15:44

"外部宣言(declare)された標準関数はLLVMにとってブラックボックスですが、IR内部関数として定義することで、Clangの最適化パス(-O2)によって自動でインライン展開やSIMDベクトル化が行われます"

17: t_f_m 2026/09/11 15:52

"多くのWasmコンパイラが肥大化する最大の要因は、言語ランタイムが暗黙のうちに要求するC標準ライブラリ(printf、memcpy、strlen、strcmp など)にあります"

18: chi-bd 2026/09/11 15:58

Wasmはもっと手軽にCPU BoundなJSメソッドの置き換え目的に使えるようにならないかなぁ。自分にとっては進化の方向性が右斜め上に感じることしばしば

19: circled 2026/09/11 16:22

free: (ptr) => {}, // 解放しない, this.heapPtr += (s + 7) & ~7; // 単調増加 → DoSだな。あと「フォームのバリデーション」や「軽いパーサー」程度なら、そもそも素のJSで書いた方が依存も生成物も少ないという事実が

20: irohairoha168 2026/09/11 16:22

最小バイナリサイズのwasmを作りたいならEmscripten(clang)が現状最強の認識。あと、memcpyを例に出すのは不適切でmemory.copyを使えばwasm上は1命令で済む

21: ihirokyx 2026/09/11 19:08

1. libc(C標準ライブラリ)の徹底的なセルフホスト化 2. スライス構造による $O(1)$ 文字列処理

22: y-teraoka 2026/09/11 22:49

“スライスや文字列の扱いやすさは最高だが、GCとスケジューラが丸ごと同梱されるため、最小構成でも2〜3MBに膨らむ。”