2026年9月7日(月)掲載 4,149本日 29
HN11579

ついに実現!WebAssemblyをAnubisに実装するまでの1年間の奮闘記

It took a year to ship WebAssembly in Anubis

xena約11時間前

議論

11
10x696C6961約11時間前

POWをあらかじめ完了しておける仕組みがあれば最高だね。そうすれば作業中に待ちぼうけを食らわなくて済む。ブラウザが後で消費できるようなクレジットかトークンみたいなものがあればいいんだけど。

2raincole約10時間前

Anubisが長期、あるいは中期的にどう機能していくのか、いまいちよく分からない。スクレイパー、つまりAI企業というか、メモリを食い尽くす連中がメモリ不足に悩んでいるという前提なのかな……?

3vintagedave約10時間前

経験上、まさにこういった状況を抱え込んでいる連中に限って、自分の邪魔をするオープンソースプログラムの作者に対して、驚くほど態度が冷淡だったりするんだよね。

これ最高。HNでもOSSのメンテナがどう扱われているか以前議論になったけど、この皮肉の効いた一文はすごくいいね。この問題に対する姿勢やトーンがすごく気に入ったよ。

4Aachen約10時間前

ブラウザが対応しているか確認できる場所ってある? いざ作業中にWebサイトで実装されてて動かないより、今のうちに確認しておきたい。

https://wasm-feature-detect.surma.technology を見ると、自分の環境だと3つほど機能が足りてないみたいなんだけど、Anubisが純粋なJS版にフォールバックしないためには、それらの機能が必要なのかどうかが分からない。

それだと以下のような理由で困るんだけどさ。

このフローで使われるWebAssemblyは劇的に高性能だ。つまり、ボットがwasmをサポートしている場合に備えて、難易度を上げる必要があるかもしれない([ボットが簡単に解いてしまわないように]という意図だよね)

これと、

wasm2jsのフローでは、現時点ではプログレスバーを更新する方法がない(だから残り時間が全く分からない)

っていうのが合わさると……(0ハッシュ/秒のままフリーズしてブラウザを閉じるのはもうコリゴリだよ)

5tefkah約10時間前

Xena、Webを少しでもマシな場所にしようと努力してくれてありがとう!

6kccqzy約9時間前

Xeに脱帽だよ。特にChrome 66をターゲットにするような後方互換性へのこだわりはすごいね。

自分も趣味でフロントエンドコードの後方互換性をテストするために、たまに2014年製のYosemiteを積んだMacを使ってるんだけど、互換性を確保する最良の方法は、ClojureScriptみたいに進化のペースが緩やかなものや、その時代に合わせたツールチェーンを使うことだと思うな。

7omoikane約9時間前

つまり、チャレンジの難易度に1を足すと、最悪の場合、解くのが1024倍難しくなる。

この単位がよく分からないんだけど、ビットとニブルの差なら倍率は16倍にならないの? 1024になる理由が分からない。

8miraline約9時間前

面白いのは、ボット対策は実は経済的な問題だってことだね。スクレイピングを不可能にする必要なんてない。悪質なトラフィックをやる価値がないと思わせるほどコストをかければいいだけだ。

9anthoniks約9時間前

結局のところ、スクレイピングにかかる限界費用を引き上げて、採算が合わないようにするっていうのが狙いなんだろうね。

10jezek2約8時間前

素晴らしい記事だね。WebAssemblyは用途がハマれば最高のテクノロジーだよ。

自分もプラグイン用にWASM 1.0の実装(x86とx86_64向けのシンプルなJIT)を作ったところで、C言語以外の言語(バイナリを小さくするために「micro-libc」を使ってる)をどうサポートしようか考えていたんだ。特にC++やRustの情報は記事にあって助かる。C++はEmscripten丸ごと使う必要がありそうで少し面倒そうだけど……スタンドアローンのC++ stdlibのコンパイルも試してみたけど、まだうまくいっていないんだよね。

ところで、スクリーンショットでFirefoxもテストしているのを見たけど、Linuxディストリビューションでよく使われている最新のESR版2つもテスト対象にするといいかもしれないね。