Crédits du moteur et résultat de l'étape 0a.3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
a90f8ac9bf
commit
7e2f9d4ad8
@@ -2,9 +2,14 @@
|
||||
|
||||
- **Date** : 2026-11-02
|
||||
- **Étape** : 0a.3
|
||||
- **Statut** : en cours
|
||||
- **Statut** : terminé
|
||||
- **Exécutant** : sous-agent general-purpose, dans un worktree isolé
|
||||
|
||||
> **Renommage** (conventions de code décidées par Pierre pendant la tâche :
|
||||
> identifiants en anglais) : `moteur.h` devient `engine/include/engine.h`,
|
||||
> l'API C est préfixée `engine_` et les clés JSON sont en anglais. Le texte
|
||||
> ci-dessous garde la rédaction d'origine.
|
||||
|
||||
## Objectif
|
||||
|
||||
Le cœur de GNU Backgammon (commit 14b67984737ded0f6de43d63dcb789f729d9b06b,
|
||||
@@ -83,4 +88,40 @@ calcul mesurés, difficultés, écarts au plan.
|
||||
|
||||
## Résultat
|
||||
|
||||
À remplir à la clôture.
|
||||
Terminé (2026-11-02), branche `moteur-embarque-travail`. Les trois critères
|
||||
sont remplis : `make engine && ./build/engine-cli bestmove 4HPwATDgc/ABMA
|
||||
cAkAAAAAAAAA 31` répond `8/5 6/5` en JSON ; un second `make engine` affiche
|
||||
« Nothing to be done » ; `make lint` et `make test` passent.
|
||||
|
||||
- **Sources** : 38 fichiers de gnubg (plus `COPYING`) copiés **sans aucune modification**
|
||||
(`engine/gnubg/PROVENANCE.md`) ; en plus de la liste de l'ADR 0005 :
|
||||
`drawboard.c/h` (notation des coups, `FormatMove`), `mtsupport.c` (données
|
||||
du fil unique), `dice.h`. Tout le reste est remplacé dans `engine/compat/`
|
||||
(config.h, shim GLib, en-têtes réduits, fonctions de support).
|
||||
- **Tables d'équité** : pas de conversion en tableau C ni de repli sur Zadeh ;
|
||||
le shim fournit un petit analyseur XML compatible GMarkup, et
|
||||
`matchequity.c` lit `Kazaross-XG2.xml` à l'exécution, comme gnubg de
|
||||
bureau. `engine_init` échoue si la table chargée n'est pas celle-ci.
|
||||
Contre-vérification : une variante d'engine-cli liée à la vraie GLib donne
|
||||
une sortie identique au caractère près (partie libre, match en 5 points,
|
||||
Crawford, 0 et 2 plis).
|
||||
- **Données** : générées au build par les outils officiels compilés avec la
|
||||
vraie GLib, mêmes paramètres que `Makefile.am` : `gnubg.wd` 408 016 octets,
|
||||
`gnubg_os0.bd` 1 465 788 octets, `gnubg_ts0.bd` 6 830 248 octets.
|
||||
- **Build** : image `ustagammon/build-c:1` (`docker/build-c/Dockerfile`),
|
||||
`engine/engine.mk` lancé par `make engine` avec `-j2` ; build complet depuis
|
||||
zéro : 43 s, génération des données comprise. Options de gnubg
|
||||
(`-O3 -ffast-math -DG_DISABLE_ASSERT`) ; notre C en `-std=c11 -Wall
|
||||
-Wextra -Werror`.
|
||||
- **Temps de `bestmove`** (position de départ, processus complet, données
|
||||
en cache disque) : 0-ply 0,02 à 0,03 s ; 2-ply 0,03 s pour 31, 0,12 à
|
||||
0,20 s pour 53, 64, 21 ; environ 35 Mo de mémoire. Premier lancement à
|
||||
froid : 0,8 s.
|
||||
- **Match ID** : `cAkAAAAAAAAA` met le joueur **1** au trait (bit fMove à 1) ;
|
||||
le Match ID équivalent avec le joueur 0 au trait est `MAEAAAAAAAAA`. Les
|
||||
deux donnent le même résultat sur la position de départ (testé).
|
||||
- **Écarts au plan** : identifiants en anglais (voir l'encadré) ; sous-commande
|
||||
`legal` ajoutée (coups légaux sans évaluation) ; `make test` ne vide plus
|
||||
`build/` (test_makefile.sh essaie `make clean` sur un dossier jetable), sinon
|
||||
chaque test recompilait le moteur ; mesure de l'écart avec et sans
|
||||
`-ffast-math` laissée à l'étape 0a.4.
|
||||
|
||||
Reference in New Issue
Block a user