WASM Terrain Bench
Cztery implementacje tej samej pipeline'y generatora świata Minecraft: JavaScript (deepslate, oracle parytetu), Rust → WASM, C++ → WASM (emcc) i AssemblyScript → WASM. Ten sam seed, ten sam region, biomy + heightmapa + drzewa + kwiaty. Cztery podglądy obok siebie pokazują, czy warianty deterministycznie się zgadzają, a tabela poniżej daje surowe czasy.
Jak działa benchmark
- Wszystkie warianty dostają identyczny
TerrainInput(seed + center + radius + wersja MC + flag features). - JS używa deepslate jako parytetowego oracle'a - Rust/C++/AS to obecnie v0 heurystyk; ich checksum nie zgodzi się z JS dopóki nie zostaną podmienione na port pumpkin-world.
- Wariant z najkrótszym czasem dostaje zieloną ramkę.
- Cache L1 (LRU 4096 chunków, ~16 MB) trzyma dane między uruchomieniami - przycisk "Wyczyść cache" go resetuje.
- Worker pool izoluje JS od głównego wątku React, żeby UI nie zawisał przy radius 128.
- Wersje 1.18-1.26: pakiety worldgen JSON są ładowane lazy z
/data/worldgen-X.json. Brakujące pakiety są wyszarzone.
Build artifactów WASM
Sprawdź apps/web/wasm-terrain/BUILD.md - krótkie skrypty build.sh w katalogach
rust/, cpp/, as/ generują pliki do /public/wasm/terrain/.
Bench oznacza wariant jako "build needed", jeśli artefakt jest niedostępny.