88 lines
3.0 KiB
Markdown
88 lines
3.0 KiB
Markdown
<!-- file: deltas/0.3.4/alpha.3.fix.1.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.3.4-alpha.3.fix.1
|
|
|
|
## Cause
|
|
|
|
La gate utilisateur de `0.3.4-alpha.3` s'est arrêtée avant compilation lors du chargement des manifests Cargo :
|
|
|
|
```text
|
|
error inheriting `futures-util` from workspace root manifest's `workspace.dependencies.futures-util`
|
|
|
|
Caused by:
|
|
`default-features = false` cannot override workspace's `default-features`
|
|
```
|
|
|
|
Le même défaut était présent sur `tokio-tungstenite` mais n'était pas encore affiché parce que Cargo s'arrêtait sur la première dépendance invalide.
|
|
|
|
`alpha.3` n'est donc pas historisée comme validée et aucune tranche `alpha.4` n'est ouverte avant fermeture de ce défaut.
|
|
|
|
## Correction
|
|
|
|
Le workspace passe à :
|
|
|
|
```text
|
|
0.3.4-alpha.3.fix.1
|
|
```
|
|
|
|
Les deux dépendances concernées portent désormais la désactivation de leurs features par défaut directement dans `[workspace.dependencies]` :
|
|
|
|
```toml
|
|
futures-util = { version = "0.3.34", default-features = false }
|
|
tokio-tungstenite = { version = "0.30.0", default-features = false }
|
|
```
|
|
|
|
La crate `game-realtime-websocket-lib` hérite ensuite de ces réglages et ajoute uniquement les features dont elle a besoin :
|
|
|
|
```toml
|
|
futures-util = { workspace = true, features = ["sink", "std"] }
|
|
tokio-tungstenite = { workspace = true, features = ["connect", "handshake"] }
|
|
```
|
|
|
|
Les features Tokio restent inchangées. Aucun TLS n'est ajouté et aucun code Rust/API/comportement transport n'est modifié.
|
|
|
|
## Pourquoi ce placement
|
|
|
|
Cargo autorise une crate membre à enrichir les `features` d'une dépendance héritée du workspace, mais pas à remplacer localement la valeur `default-features` définie par l'héritage. La politique `default-features = false` doit donc être possédée par la déclaration workspace lorsqu'elle est commune à l'utilisation héritée.
|
|
|
|
Ce fix corrige les deux dépendances concernées immédiatement afin d'éviter qu'une seconde erreur identique apparaisse après correction de `futures-util` seulement.
|
|
|
|
## Fichiers modifiés
|
|
|
|
```text
|
|
Cargo.toml
|
|
README.md
|
|
crates/common/game-realtime-websocket-lib/Cargo.toml
|
|
docs/plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md
|
|
```
|
|
|
|
Nouveau fichier :
|
|
|
|
```text
|
|
deltas/0.3.4/alpha.3.fix.1.md
|
|
```
|
|
|
|
Aucun fichier `history/0.3.4/alpha.3.md` n'est créé : une entrée `history/` n'existe qu'après validation réussie du jalon qu'elle décrit.
|
|
|
|
## Validation attendue
|
|
|
|
```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 Web deltas history
|
|
python3 scripts/audit_distribution_layout.py
|
|
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
|
|
cargo test -p game-realtime-transport-lib --all-targets --all-features
|
|
cargo test -p game-realtime-websocket-lib --all-targets --all-features
|
|
|
|
cargo tree -p game-realtime-websocket-lib --edges normal
|
|
```
|
|
|
|
La validation recommence depuis le début de la gate, car `alpha.3` n'a jamais atteint une compilation Cargo valide.
|