# 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/`.