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>
25 lines
1.0 KiB
JavaScript
25 lines
1.0 KiB
JavaScript
// 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;
|