Le lancement de processus de Studio host (CoreProcess) devient sequa::platform::ChildProcess dans platform/process, pour être partagé par Studio host et le Core (qui lancera le rendu, ADR 0009). Nouvelle option kill_with_parent : l'enfant meurt avec le parent, même brutalement (job object KILL_ON_JOB_CLOSE sous Windows, fork + PR_SET_PDEATHSIG sous Linux, ignorée sous macOS). Les tests de copie fantôme restent dans studio/host/supervisor (test_shadow.cpp) avec l'enfant de test de platform/process.
Studio host : supervisor
Brique du Studio host (sequa-studio) qui fait vivre le Core comme un processus séparé : SEQUA Studio dirige un monde au-dessus d'un Core déterministe (README de Studio), et cette brique lance ce Core, le suit et le relance (ADR 0006, spécification §7).
API (sequa::studio::host)
| En-tête | Rôle |
|---|---|
paths.hpp |
Dossier d'exécution par plateforme, bin/, core-<port>.json, core-<port>.log |
random.hpp |
random_hex cryptographique (jetons) |
time.hpp |
Horodatages UTC (ISO 8601, compact) |
run_file.hpp |
Fichier d'exécution : lecture tolérante, écriture atomique, droits restreints (POSIX) |
shadow.hpp |
Copie fantôme de l'exécutable du Core, nettoyage des copies inutilisées |
process.hpp |
CoreProcess : lancement (arguments cités correctement, journal en ajout, seul le handle du journal est hérité sous Windows), running, wait_for, terminate ; le destructeur ne tue pas le processus |
files.hpp |
read_last_lines (lecture bornée par la fin), FileWatcher (changement signalé après stabilité) |
Le code POSIX (posix_spawn, waitpid, 0600) est écrit mais n'a pas encore été compilé ni testé (vérification locale Windows uniquement, ADR 0004).
Licences
- MPL 2.0.
- Dépendance : nlohmann/json 3.12.0 (MIT), privée.