0.1.0-0-pre.5-fix.3
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# file: Cargo.toml
|
||||
# version: 10
|
||||
# version: 11
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
@@ -15,7 +15,7 @@ members = [
|
||||
]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.1.0-0-pre.5.fix.2"
|
||||
version = "0.1.0-0-pre.5.fix.3"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/games"
|
||||
@@ -23,10 +23,10 @@ authors = ["Sasedev <games@sasedev.com>"]
|
||||
publish = false
|
||||
|
||||
[workspace.dependencies]
|
||||
sdl3 = { version = "0.16.1", features = ["use-pkg-config"] }
|
||||
sdl3 = "^0.20"
|
||||
tracing = "0.1.44"
|
||||
tracing-appender = "0.2.5"
|
||||
tracing-subscriber = { version = "0.3.23", features = ["fmt"] }
|
||||
tracing-subscriber = "0.3.23"
|
||||
|
||||
[workspace.lints.rust]
|
||||
missing_docs = "warn"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# file: crates/common/game-logging-lib/Cargo.toml
|
||||
# version: 1
|
||||
# version: 2
|
||||
|
||||
[package]
|
||||
name = "game-logging-lib"
|
||||
@@ -13,7 +13,7 @@ publish.workspace = true
|
||||
[dependencies]
|
||||
tracing.workspace = true
|
||||
tracing-appender.workspace = true
|
||||
tracing-subscriber.workspace = true
|
||||
tracing-subscriber = { workspace = true, features = ["fmt"] }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# file: crates/engines/engine-v1-sdl/Cargo.toml
|
||||
# version: 3
|
||||
# version: 4
|
||||
|
||||
[package]
|
||||
name = "engine-v1-sdl"
|
||||
@@ -12,7 +12,7 @@ publish.workspace = true
|
||||
|
||||
[dependencies]
|
||||
engine-v1-common = { path = "../engine-v1-common" }
|
||||
sdl3.workspace = true
|
||||
sdl3 = { workspace = true, features = ["use-pkg-config"] }
|
||||
tracing.workspace = true
|
||||
|
||||
[lints]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/engines/engine-v1-sdl/src/runtime.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
/// Minimal SDL3 runtime used by Desktop POC runners.
|
||||
pub struct SdlRuntime {
|
||||
@@ -62,7 +62,3 @@ impl SdlRuntime {
|
||||
return std::result::Result::Ok(());
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "../unit_tests/runtime.rs"]
|
||||
mod tests;
|
||||
|
||||
130
deltas/0.1.0/0-pre.5.fix.3.md
Normal file
130
deltas/0.1.0/0-pre.5.fix.3.md
Normal file
@@ -0,0 +1,130 @@
|
||||
<!-- file: deltas/0.1.0/0-pre.5.fix.3.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.0-0-pre.5.fix.3
|
||||
|
||||
## Base
|
||||
|
||||
Base déclarée : `0.1.0-0-pre.5.fix.2`, non validée intégralement.
|
||||
|
||||
## Validation du delta précédent
|
||||
|
||||
L'utilisateur a exécuté les validations de `0.1.0-0-pre.5.fix.2` le 2026-09-16.
|
||||
|
||||
Préflight SDL3 propre :
|
||||
|
||||
```text
|
||||
pkg-config --modversion sdl3
|
||||
3.2.10
|
||||
```
|
||||
|
||||
et :
|
||||
|
||||
```text
|
||||
pkg-config --cflags --libs sdl3
|
||||
-I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT -I/usr/include/libdrm -I/usr/include/libdecor-0 -lSDL3
|
||||
```
|
||||
|
||||
Résultats propres :
|
||||
|
||||
- `cargo fmt --all -- --check` ;
|
||||
- audit Rust/workspace ;
|
||||
- audit Markdown : `1 table(s), 42 file(s)` ;
|
||||
- `cargo check --workspace` ;
|
||||
- `cargo test -p engine-v1-sdl --all-targets --all-features` ;
|
||||
- `cargo test -p game-reflex-poc --all-targets --all-features` ;
|
||||
- `cargo test -p game-snake-poc --all-targets --all-features` ;
|
||||
- smoke `game-reflex-poc-desktop` ;
|
||||
- smoke `game-snake-poc-desktop`.
|
||||
|
||||
Les deux runners ont ouvert et fermé leur runtime SDL3 sans panic.
|
||||
|
||||
La gate Clippy a échoué sur une seule erreur projet :
|
||||
|
||||
```text
|
||||
clippy::duplicate_mod
|
||||
```
|
||||
|
||||
Le même fichier `unit_tests/runtime.rs` était chargé à la fois depuis `src/runtime.rs` et `src/unit_tests.rs`.
|
||||
|
||||
`0.1.0-0-pre.5.fix.2` n'est donc pas validé.
|
||||
|
||||
## Correctifs
|
||||
|
||||
### Tests SDL3
|
||||
|
||||
Le chargement direct du test depuis `src/runtime.rs` est supprimé.
|
||||
|
||||
Le seul point d'entrée reste :
|
||||
|
||||
```text
|
||||
src/unit_tests.rs
|
||||
-> ../unit_tests/runtime.rs
|
||||
```
|
||||
|
||||
Le test n'est donc chargé qu'une fois.
|
||||
|
||||
### Version SDL3
|
||||
|
||||
La dépendance commune passe à :
|
||||
|
||||
```toml
|
||||
sdl3 = "^0.20"
|
||||
```
|
||||
|
||||
La série `0.20` est utilisée plutôt que de rester sur `0.16.x`.
|
||||
|
||||
### Features Cargo
|
||||
|
||||
La racine conserve uniquement les versions des dépendances partagées :
|
||||
|
||||
```toml
|
||||
sdl3 = "^0.20"
|
||||
tracing-subscriber = "0.3.23"
|
||||
```
|
||||
|
||||
Les features sont déplacées vers les crates qui les utilisent :
|
||||
|
||||
```toml
|
||||
# engine-v1-sdl
|
||||
sdl3 = { workspace = true, features = ["use-pkg-config"] }
|
||||
|
||||
# game-logging-lib
|
||||
tracing-subscriber = { workspace = true, features = ["fmt"] }
|
||||
```
|
||||
|
||||
Cette règle devient normative dans `docs/rules/RULES_RUST.md`.
|
||||
|
||||
## Validation à exécuter par l'utilisateur
|
||||
|
||||
Le fix modifie du Rust :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo fmt --all -- --check
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android deltas history
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
```
|
||||
|
||||
Test ciblé principal :
|
||||
|
||||
```bash
|
||||
cargo test -p engine-v1-sdl --all-targets --all-features
|
||||
```
|
||||
|
||||
La montée de `sdl3` à `^0.20` touche le runtime Desktop ; rejouer également les deux smokes :
|
||||
|
||||
```bash
|
||||
cargo run -p game-reflex-poc-desktop
|
||||
cargo run -p game-snake-poc-desktop
|
||||
```
|
||||
|
||||
Les tests des crates de gameplay ne sont pas requis à nouveau : leur code et leurs dépendances propres ne sont pas modifiés par ce fix.
|
||||
|
||||
## Règle de transition
|
||||
|
||||
Si toutes les validations sont propres, `0.1.0-0-pre.5.fix.3` est accepté et le travail passe automatiquement à `0.1.0-0-pre.6`.
|
||||
|
||||
Si une gate échoue, rester sur `0-pre.5` et produire `0.1.0-0-pre.5.fix.4`.
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user