Files
rustkeep/.scratch/rustkeep-1.0/issues/13-script-engine-waehlen.md

1.7 KiB

13 — Script-Engine wählen und Sandbox härten

Type: grilling Status: open Blocked by: 01

Question

Rhai oder mlua — und wie wird die gewählte Engine abgedichtet?

Ticket 05 hat die Fakten geliefert und Rhai empfohlen. Die Entscheidung steht noch aus, und sie hängt bewusst an 01: Reden Scripts ausschließlich über das Effekt-Vokabular, ist die Wahl später umkehrbar; reichen sie tiefer in den Game-State, ist sie es nicht. Zu klären:

  • Ist das Effekt-Vokabular die einzige Schnittstelle für Scripts? Wenn ja, ist die Engine-Wahl eine Implementierungsentscheidung statt einer Architekturentscheidung.
  • Zielgruppe: „gut moddbar für einen kleinen Kreis" spricht für Rhai, „möglichst viele fremde Mods" für Lua. Das ist die Frage, an der die Empfehlung kippt.
  • Vertraust du fremden Mods? Bei feindlichen Mods ist Luau der einzige echte Sandbox — zum Preis einer C++17-Toolchain und eines Lua-Dialekts.
  • Härtungs-Checkliste für die gewählte Engine festlegen. Bei Rhai mindestens: FileModuleResolver abschalten, eval() deaktivieren, CPU- und Memory-Limits setzen. Bei mlua: niemals Lua::new(), sondern new_with mit ausgewählten Libs, load/loadstring/dofile/require entfernen, ChunkMode::Text erzwingen.
  • Wie geht das Projekt mit den Rhai-Risiken um — Bus-Faktor 1, Unsoundness-Issue #894 seit 2024, smartstring unmaintained (RUSTSEC-2026-0249)? Akzeptiert, beobachtet, oder Ausschlusskriterium?
  • Wann fällt die Entscheidung endgültig — jetzt, oder erst wenn Mod-Stufe (c) gebaut wird?

Ergebnis: gewählte Engine mit Begründung, Härtungs-Checkliste, und die Regel, was Scripts sehen dürfen.