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:
Pierre MARTIN
2026-11-02 19:07:01 +01:00
co-authored by Claude Opus 5.5
parent 850de27e90
commit b0030521d8
9 changed files with 265 additions and 9 deletions
+7
View File
@@ -22,6 +22,11 @@
* --ply : niveau de gnubg, de 0 (défaut) à 4.
* --data : dossier des données ; par défaut « data » à côté du programme.
*
* En WebAssembly (engine-wasm/), le même programme sert d'interface : le
* JavaScript appelle main pour chaque commande, sans recharger le moteur.
* engine_init ne fait rien quand le moteur est déjà prêt, et main ne l'arrête
* pas à la fin.
*
* Sortie : un objet JSON sur la sortie standard. En cas d'erreur, un objet
* {"error": {"code": ..., "message": ...}} et un code de sortie non nul :
* 1 pour une erreur du moteur, 2 pour une erreur d'utilisation.
@@ -391,6 +396,8 @@ main(int argc, char **argv)
else
result = usage_error("commande inconnue : bestmove, moves, legal, cube, eval ou reference");
#ifndef __EMSCRIPTEN__
engine_shutdown();
#endif
return result;
}