0.1.0-0-pre.5-fix.3

This commit is contained in:
2026-09-16 01:37:52 +02:00
parent a503975d36
commit 380a24681d
7 changed files with 173 additions and 43 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/development/004-SDL3_DESKTOP_PREREQUISITES.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Prérequis SDL3 Desktop
@@ -13,58 +13,59 @@ Elle ne définit pas le packaging Android ni Web :
- Web utilisera la cible Emscripten/WASM dédiée ;
- la présence de SDL3 système sur le poste Desktop n'implique aucune dépendance runtime identique sur Android ou Web.
## Version Rust SDL3
La version canonique est déclarée au workspace sans feature globale :
```toml
[workspace.dependencies]
sdl3 = "^0.20"
```
La crate d'adaptation SDL3 Desktop active elle-même la méthode de liaison dont elle a besoin :
```toml
sdl3 = { workspace = true, features = ["use-pkg-config"] }
```
Cette séparation suit la règle générale du workspace : version commune à la racine, features au niveau de la crate consommatrice.
## Stratégie Desktop Linux
Le workspace utilise la crate Rust `sdl3` avec la feature `use-pkg-config`.
Le build Desktop recherche une installation SDL3 système avec `pkg-config`.
Le build Desktop recherche donc une installation SDL3 système à travers `pkg-config`.
Cette stratégie est préférée au build vendored `build-from-source` pour la baseline actuelle, car la combinaison `sdl3 0.16.x` / `sdl3-sys 0.5.12` / `sdl3-src 3.4.16` peut échouer lorsque la source empaquetée active les tests CMake sans fournir le répertoire `test`.
Cette stratégie évite le défaut rencontré avec le build vendored de la série `sdl3 0.16.x` / `sdl3-sys 0.5.12`, où CMake tentait d'ajouter un répertoire `test` absent du package source utilisé.
## Debian 13 / Trixie
Installer les dépendances de développement :
Installer au besoin :
```bash
sudo apt update
sudo apt install pkg-config libsdl3-dev
```
Vérifier ensuite :
Préflight :
```bash
pkg-config --modversion sdl3
pkg-config --cflags --libs sdl3
```
Sur Debian 13/Trixie, `libsdl3-dev` fournit notamment :
La machine de validation a fourni SDL `3.2.10`.
```text
/usr/include/SDL3/
/usr/lib/<arch>/libSDL3.so
/usr/lib/<arch>/pkgconfig/sdl3.pc
```
## Règle de validation
Avant les premières gates Cargo SDL3 sur une nouvelle machine Desktop Linux, exécuter :
```bash
pkg-config --modversion sdl3
```
Si cette commande échoue, installer/configurer SDL3 avant de considérer un échec Cargo comme un défaut du code du projet.
`sdl3-sys 0.7.x` annonce la compatibilité avec SDL `3.1.3` et versions ultérieures ; certaines API particulières peuvent toutefois nécessiter une version SDL plus récente. Les API minimales actuellement employées par le POC doivent donc rester vérifiées par compilation et smoke runtime.
## Portabilité future
La dépendance système Desktop est une décision de développement, pas une contrainte universelle de distribution.
Cette décision concerne le développement Desktop Linux et ne préjuge pas du packaging final.
Les options futures restent ouvertes :
- bundle de SDL3 avec un package Desktop ;
- AppImage/Flatpak ;
- bundle SDL3 dans un package Desktop ;
- AppImage ou Flatpak ;
- package natif par distribution ;
- build statique si une justification apparaît ;
- distribution Tauri distincte si un shell Desktop riche est nécessaire.
- liaison statique si elle devient justifiée ;
- distribution Tauri distincte lorsqu'un shell Desktop riche est requis.
Toute évolution de stratégie doit être documentée explicitement avant modification des manifests.
Toute évolution de cette stratégie doit être documentée avant modification des manifests.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/rules/RULES_RUST.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# Règles Rust générales
@@ -10,6 +10,9 @@
- **RUST-BASE-003** — Les lints communs sont déclarés au workspace et hérités par les crates.
- **RUST-BASE-004** — Le code `unsafe` est interdit sauf future exception normative extrêmement ciblée et justifiée.
- **RUST-BASE-005** — Tout fichier Rust possède les en-têtes `// file: ...` et `// version: N`.
- **RUST-DEP-001** — Une dépendance tierce partagée déclare uniquement sa contrainte de version canonique sous `[workspace.dependencies]`, sauf exception normative explicitement documentée.
- **RUST-DEP-002** — Les features d'une dépendance tierce sont activées dans le `Cargo.toml` de la crate qui en a réellement besoin, via `workspace = true`; elles ne sont pas activées globalement au workspace par commodité.
- **RUST-DEP-003** — Une feature plateforme, telle que `use-pkg-config`, reste portée par la crate d'adaptation plateforme concernée et ne contamine pas les crates qui consomment seulement les abstractions du moteur.
## Documentation et API