Moteur en WebAssembly : make engine-wasm et suite de contrat
Le moteur et engine-cli sont compilés avec Emscripten (image figée emscripten/emsdk:3.1.64), en C générique, sans threads ; les données de build/data/ sont incluses dans engine.data. Le JavaScript appelle engine_init une fois puis main pour chaque commande : la sortie est le JSON d'engine-cli, sans code de mise en forme dupliqué. tests/test_wasm_reference.sh rejoue les 32 positions de référence sous Node avec le même comparateur (option --cli) et la même tolérance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
850de27e90
commit
b0030521d8
@@ -0,0 +1,24 @@
|
||||
// engine-cli.mjs -- engine-cli, mais avec le moteur WebAssembly, sous Node.
|
||||
//
|
||||
// Copyright (C) 2026 les auteurs d'Ustagammon.
|
||||
// Licence : GPLv3 ou ultérieure (voir LICENSE).
|
||||
//
|
||||
// Mêmes arguments, même sortie et mêmes codes de sortie que build/engine-cli
|
||||
// (voir engine-cli/main.c) : c'est le même main, compilé en WebAssembly.
|
||||
// Sert à rejouer la suite de contrat sur le build WebAssembly
|
||||
// (tests/test_wasm_reference.sh) :
|
||||
//
|
||||
// node engine-wasm/engine-cli.mjs --ply 2 reference 4HPwATDgc/ABMA cIkFAAAAAAAA 31
|
||||
//
|
||||
// L'option --data est ignorée : les données sont incluses dans
|
||||
// build/wasm/engine.data.
|
||||
|
||||
import { fileURLToPath } from "node:url";
|
||||
import createEngineModule from "../build/wasm/engine.mjs";
|
||||
import { loadEngine } from "../web/engine-wasm.mjs";
|
||||
|
||||
const wasmDir = fileURLToPath(new URL("../build/wasm/", import.meta.url));
|
||||
const engine = await loadEngine(createEngineModule, wasmDir);
|
||||
const { text, exitCode } = engine.runText(process.argv.slice(2));
|
||||
console.log(text);
|
||||
process.exitCode = exitCode;
|
||||
Reference in New Issue
Block a user