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
+2 -5
View File
@@ -35,11 +35,8 @@ HOST_INCLUDES := -I$(COMPAT) -I$(GNUBG) -I$(GNUBG)/lib $(shell pkg-config --cfla
HOST_DEFINES := -DLOCALEDIR=\"/usr/share/locale\"
HOST_LIBS := $(shell pkg-config --libs glib-2.0) -lm
# Fichiers de gnubg compilés dans le moteur (liste : engine/gnubg/PROVENANCE.md).
GNUBG_CORE := eval.c positionid.c matchid.c matchequity.c mec.c bearoff.c \
bearoffgammon.c mtsupport.c lib/neuralnet.c lib/neuralnetsse.c lib/inputs.c \
lib/cache.c lib/list.c lib/isaac.c lib/md5.c
GNUBG_ENGINE := $(GNUBG_CORE) drawboard.c
# Fichiers de gnubg compilés dans le moteur : GNUBG_CORE et GNUBG_ENGINE.
include engine/sources.mk
ENGINE_OBJECTS := $(GNUBG_ENGINE:%.c=$(BUILD)/obj/gnubg/%.o) \
$(BUILD)/obj/compat/glib-shim.o $(BUILD)/obj/compat/gnubg-support.o \
+11
View File
@@ -0,0 +1,11 @@
# sources.mk -- fichiers de gnubg compilés dans le moteur (liste commentée :
# engine/gnubg/PROVENANCE.md). Partagé par la compilation native
# (engine/engine.mk) et WebAssembly (engine-wasm/wasm.mk).
# Cœur de gnubg, aussi lié aux outils hôte qui génèrent les données.
GNUBG_CORE := eval.c positionid.c matchid.c matchequity.c mec.c bearoff.c \
bearoffgammon.c mtsupport.c lib/neuralnet.c lib/neuralnetsse.c lib/inputs.c \
lib/cache.c lib/list.c lib/isaac.c lib/md5.c
# Fichiers du moteur embarqué.
GNUBG_ENGINE := $(GNUBG_CORE) drawboard.c