Copie figée du cœur de GNU Backgammon (commit 14b6798)

Fichiers repris sans modification dans engine/gnubg/, poids et table
d'équité Kazaross-XG2 dans engine/data/, provenance détaillée dans
engine/gnubg/PROVENANCE.md. Le lint ne vérifie plus les espaces de ces
copies, pour qu'elles restent identiques à l'original.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-02 13:56:23 +01:00
co-authored by Claude Opus 5.5
parent d0f44b689b
commit 792f6395bf
43 changed files with 129486 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
# Provenance de la copie de GNU Backgammon
Les fichiers de ce dossier sont copiés de GNU Backgammon
(https://git.savannah.gnu.org/cgit/gnubg.git), commit
`14b67984737ded0f6de43d63dcb789f729d9b06b` (version 1.08.003, 2026-10-23),
choisi par l'ADR 0005. Licence : GPLv3 ou ultérieure (`COPYING`). Les
en-têtes de copyright sont conservés.
**Aucun fichier n'est modifié** : chacun est identique octet pour octet à
l'original. Vérification, depuis un clone de gnubg à ce commit :
```sh
for f in $(cd engine/gnubg && find . -type f ! -name PROVENANCE.md); do
cmp "engine/gnubg/$f" "chemin/du/clone/gnubg/$f" || echo "différent : $f"
done
```
Les espaces en fin de ligne de l'original sont gardés ; `tests/lint.sh`
exclut donc ce dossier (et `engine/data/`) de cette vérification.
## Fichiers repris
Compilés dans le moteur embarqué (`build/libengine.a`) :
| Fichier | Rôle |
| --- | --- |
| `eval.c`, `eval.h`, `movefilters.inc` | Évaluation, génération et classement des coups, videau |
| `positionid.c`, `positionid.h` | Position ID |
| `matchid.c`, `matchid.h` | Match ID |
| `matchequity.c`, `matchequity.h`, `mec.c`, `mec.h` | Tables d'équité de match |
| `bearoff.c`, `bearoff.h`, `bearoffgammon.c`, `bearoffgammon.h` | Bases de fin de partie |
| `drawboard.c`, `drawboard.h` | Notation des coups (`FormatMove`) |
| `mtsupport.c` | Données du fil d'exécution unique (branche sans threads) |
| `lib/neuralnet.c`, `lib/neuralnet.h`, `lib/neuralnetsse.c`, `lib/inputs.c`, `lib/simd.h`, `lib/sigmoid.h` | Réseaux de neurones |
| `lib/cache.c`, `lib/cache.h` | Cache d'évaluations |
| `lib/isaac.c`, `lib/isaac.h`, `lib/isaacs.h`, `lib/md5.c`, `lib/md5.h` | Hasards (bruit, désactivé ici) et hachage |
| `lib/list.c`, `lib/list.h` | Listes (tables d'équité) |
| `lib/gnubg-types.h`, `common.h`, `dice.h` | Types et définitions communes |
Compilés seulement pour générer les données au build (`build/host/`), avec
la vraie GLib, comme dans le build officiel :
| Fichier | Rôle |
| --- | --- |
| `makeweights.c` | `gnubg.weights` → `gnubg.wd` (réseaux en binaire) |
| `makebearoff.c` | Bases `gnubg_os0.bd` et `gnubg_ts0.bd` |
Données, dans `engine/data/` (non modifiées non plus) : `gnubg.weights`
(racine du dépôt gnubg) et `Kazaross-XG2.xml` (`met/`), la table d'équité
de match par défaut de gnubg de bureau.
## Ce qui remplace le reste de gnubg
Les fichiers de gnubg non repris sont remplacés par des fichiers propres à
Ustagammon, dans `engine/compat/`, trouvés en premier par le compilateur :
| Fichier | Remplace |
| --- | --- |
| `config.h` | Le `config.h` produit par `configure` (sans threads, C générique, NEON prévu) |
| `glib-shim/glib.h`, `glib-shim/glib/*.h`, `glib-shim.c` | GLib, pour le moteur embarqué seulement |
| `backgammon.h`, `output.h`, `util.h`, `format.h`, `multithread.h`, `external.h` | En-têtes réduits aux déclarations utilisées par le cœur |
| `gnubg-support.c` | Fonctions et variables de `gnubg.c`, `output.c`, `util.c`, `multithread.c` utilisées par le cœur |
| `host-tools-support.c` | `GetTemporaryFile` de `util.c`, pour `makebearoff` |
La liste des symboles à fournir a été établie à l'édition des liens. Le
fichier `jni-bridge/src/stubs.c` de CBG (https://github.com/clavierhaus/gnubg-android,
GPLv3) a servi de point de repère, sans reprise de code.
## Mettre à jour la copie
Copier les mêmes fichiers depuis le nouveau commit, mettre à jour le commit
ci-dessus, puis `make engine` et `make test`. Une erreur de compilation ou
d'édition des liens indique un symbole à ajouter dans `engine/compat/`.