Les décisions
Chaque choix structurant de Phosphoric a sa fiche : le contexte, ce qui a été décidé, ce que cela coûte. Une décision remplacée n’est pas effacée ; elle renvoie à la suivante.
| N° | Décision | Pourquoi | Ce que ça coûte |
|---|---|---|---|
| 0001 | Le Makefile est le seul système de construction (2.1.3) | le CMakeLists.txt n’était plus entretenu : vingt sources y manquaient | plus de projets d’IDE générés ; toute nouvelle source s’ajoute au Makefile |
| 0002 | Les commandes externes passent par une file vidée par la boucle de l’émulateur (1.52) | --control, l’API HTTP et le menu F1 modifient l’état ; exécutées en pleine instruction, elles le corrompraient | une commande HTTP attend jusqu’à une trame (20 ms) ; la file doit être fermée avant le serveur |
| 0003 | L’ordre des ticks est une table à part, distincte de l’ordre de répartition des accès (2.4.0) | les deux ordres diffèrent depuis toujours, et celui des ticks a des effets observables | les unifier demanderait de prouver l’équivalence octet par octet |
| 0004 | Changer de cartes relance le processus (2.11.0) | brancher une carte ouvre ROM, surcouche, bus, transport, et parfois un firmware en marche | un vrai démarrage à froid : la mémoire de l’Oric est perdue ; la version web ne peut pas se relancer |
| 0005 | Deux branches miroir, française et anglaise, qui ne diffèrent que par les commentaires (2.1.4) | le projet est écrit en français, mais publié aussi pour un public anglophone | chaque livraison se fait en deux temps : main, puis la traduction dans main-en |
| 0006 | Les cartes d’extension sont des modules, avec une liste explicite (2.13.0) | une carte simple touchait une dizaine de fichiers ; ajouter une carte était long et sujet aux oublis | pas de chargement dynamique ; une ligne par carte dans la liste |
Ce que chacune a permis
- 0001 a rendu la construction fiable : le piège «
make SDL2=0puismake tests» qui mêlait des objets incompatibles a disparu par construction. - 0002 a donné un seul interpréteur,
control_dispatch(), à toutes les sources de commandes. Depuis la 2.12.0, ses commandes sont rangées par thème (control_cmd_*.c). - 0003 a permis d’ajouter un périphérique cadencé à la place exacte qui conserve le comportement mesuré, et de dérouler la boucle des ticks (une boucle générique coûtait 22 % par trame).
- 0004 a rendu les cartes du menu F1 modifiables : une carte ajoutée au registre apparaît dans le menu sans autre changement.
- 0005 est vérifiée par un outil,
tools/check_comment_only_diff.py, qui retire les commentaires et exige des fichiers identiques ;make test-comment-diffteste cet outil lui-même. - 0006 a été prouvée par
make test-card-template: la carte d’exemple, ajoutée à une copie de l’arbre, marche de bout en bout.
Les fiches complètes sont dans le dépôt, docs/adr/.