05 — Research: Script-Engine fuer Mod-Stufe (c) #6

Closed
opened 2026-08-11 13:13:24 +00:00 by RDietermann · 1 comment
Owner

Teil der Map #1 · Type: wayfinder:research · Blocked by: —

Rhai vs. Lua via mlua vs. WASM fuer modderseitiges Verhalten. Fakten sammeln, keine Entscheidung.

Volle Fragestellung (kanonisch): .scratch/rustkeep-1.0/issues/05-research-script-engine.md

Teil der Map #1 · **Type: `wayfinder:research`** · **Blocked by: —** Rhai vs. Lua via mlua vs. WASM fuer modderseitiges Verhalten. Fakten sammeln, keine Entscheidung. Volle Fragestellung (kanonisch): `.scratch/rustkeep-1.0/issues/05-research-script-engine.md`
RDietermann added the wayfinder:research label 2026-08-11 13:13:24 +00:00
Author
Owner

Answer — aufgeloest 2026-08-11

Vollstaendiger Bericht im Repo: .scratch/rustkeep-1.0/research/05-script-engine.md (209 Zeilen).

Empfehlung: Rhai — begruendet, nicht entschieden.

  • Fehlermeldungen: Zeile und Spalte plus Call-Chain — passt direkt zur Result-Strategie aus #5.
  • Typ-Bruecke: #[derive(CustomType)], nur Clone noetig, gegen impl UserData pro Feld bei mlua.
  • Hot-Reload: AST-Tausch bei ueberlebendem Scope.
  • Build: kein cc, kein libc. Gemessen 44 Deps / 45,5 s gegen 166–304 Deps / 262–356 s bei WASM.
  • Schaerfster Befund: Ein Lua-Script hat auf dieser Maschine unter Lua::new() und unter StdLib::ALL_SAFE per io.open eine echte Datei gelesen. ALL_SAFE = (1<<30)-1 meint speichersicher, nicht faehigkeitsbeschraenkt. Rhai hat Datei-/Netz-/Prozesszugriff gar nicht erst in der Standard-Engine. Beide brauchen Haertung; bei Rhai kostet ein vergessener Handgriff weniger.
  • Gegenseite: Lua gewinnt bei Vertrautheit deutlich (Factorio, GMod, WoW, Teardown, Noita, Dota 2). Ziel „moeglichst viele fremde Mods" statt „gut moddbar fuer einen kleinen Kreis" kippt die Empfehlung.
  • Rhai-Risiken: Bus-Faktor 1, Unsoundness-Issue #894 offen seit 2024, smartstring seit 2026-08-10 unmaintained (RUSTSEC-2026-0249), VM-Rewrite im Gang.
  • WASM scheidet fuer 1.0 aus — nicht technisch (beste Sandbox), sondern Compile-Pflicht fuer Modder, Fehler ohne Quellzeile, Build-Overhead. Spaeter ggf. wasmi, nicht wasmtime.
  • Nicht verifizierbar, so gekennzeichnet: kein ausgeliefertes Spiel mit Rhai-Modding, kein Rust-Spiel mit mlua, kein kommerzielles Spiel mit WASM-Modding auffindbar.

Folge fuer die Map: Reden Scripts ausschliesslich ueber das Effekt-Vokabular, ist die Engine-Wahl weit umkehrbarer als sie aussieht. Die Entscheidung ist zu #14 graduiert und haengt an #2.

## Answer — aufgeloest 2026-08-11 Vollstaendiger Bericht im Repo: `.scratch/rustkeep-1.0/research/05-script-engine.md` (209 Zeilen). **Empfehlung: Rhai** — begruendet, nicht entschieden. - **Fehlermeldungen:** Zeile *und* Spalte plus Call-Chain — passt direkt zur Result-Strategie aus #5. - **Typ-Bruecke:** `#[derive(CustomType)]`, nur `Clone` noetig, gegen `impl UserData` pro Feld bei mlua. - **Hot-Reload:** AST-Tausch bei ueberlebendem `Scope`. - **Build:** kein `cc`, kein `libc`. Gemessen 44 Deps / 45,5 s gegen 166–304 Deps / 262–356 s bei WASM. - **Schaerfster Befund:** Ein Lua-Script hat auf dieser Maschine unter `Lua::new()` **und** unter `StdLib::ALL_SAFE` per `io.open` eine echte Datei gelesen. `ALL_SAFE` = `(1<<30)-1` meint *speichersicher*, nicht *faehigkeitsbeschraenkt*. Rhai hat Datei-/Netz-/Prozesszugriff gar nicht erst in der Standard-Engine. Beide brauchen Haertung; bei Rhai kostet ein vergessener Handgriff weniger. - **Gegenseite:** Lua gewinnt bei Vertrautheit deutlich (Factorio, GMod, WoW, Teardown, Noita, Dota 2). Ziel „moeglichst viele fremde Mods" statt „gut moddbar fuer einen kleinen Kreis" kippt die Empfehlung. - **Rhai-Risiken:** Bus-Faktor 1, Unsoundness-Issue #894 offen seit 2024, `smartstring` seit 2026-08-10 unmaintained (RUSTSEC-2026-0249), VM-Rewrite im Gang. - **WASM scheidet fuer 1.0 aus** — nicht technisch (beste Sandbox), sondern Compile-Pflicht fuer Modder, Fehler ohne Quellzeile, Build-Overhead. Spaeter ggf. `wasmi`, nicht wasmtime. - **Nicht verifizierbar, so gekennzeichnet:** kein ausgeliefertes Spiel mit Rhai-Modding, kein Rust-Spiel mit mlua, kein kommerzielles Spiel mit WASM-Modding auffindbar. **Folge fuer die Map:** Reden Scripts ausschliesslich ueber das Effekt-Vokabular, ist die Engine-Wahl weit umkehrbarer als sie aussieht. Die Entscheidung ist zu #14 graduiert und haengt an #2.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RDietermann/rustkeep#6