4.7 KiB
Delta 0.3.5-alpha.10
Base requise
0.3.5-alpha.9.fix.1, validée par l'utilisateur le 2026-09-22.
La gate finale confirme fmt, audits, cargo check --workspace, Clippy strict, 22/22 tests WebTransport, smoke datagram natif PASS et check/Clippy/build WASM. La preuve est enregistrée dans history/0.3.5/alpha.9.fix.1.md.
Objectif
Caractériser de manière bornée les backends realtime déjà retenus sans introduire de nouveau contrat produit :
- établissement WebSocket vs WebTransport fiable ;
- RTT applicatif ;
- throughput fiable ;
- fenêtre bornée de messages sans ACK intermédiaire ;
- datagram WebTransport mesuré séparément ;
- méthode et limites documentées ;
- conclusion technique provisoire
retainsans classement automatique.
Version
La version workspace passe à :
0.3.5-alpha.10
Nouveau launcher
Nouvelle application technique :
crates/apps/game-realtime-transport-measure
Elle dépend uniquement :
game-realtime-transport-lib
game-realtime-websocket-lib
game-realtime-webtransport-lib
tokio
Elle ne dépend d'aucun engine ni gameplay et ne modifie aucune crate backend.
Mesures fiables
La comparaison utilise uniquement RealtimeConnection pour les deux backends.
Établissement
8 échantillons
WebSocket : handshake jusqu'à connexion prête
WebTransport : session + stream primaire jusqu'à connexion fiable prête
RTT
16 warmups
128 échantillons
32 octets par ping/pong
Throughput
128 messages
64 KiB par message
8 MiB utiles
ACK final après drainage serveur
Fenêtre applicative en vol
64 messages
1 KiB par message
aucun ACK applicatif intermédiaire
ACK unique après drainage
Cette dernière mesure ne prétend pas mesurer directement le nombre de paquets réseau en vol ; elle caractérise une fenêtre applicative bornée de messages non acquittés individuellement.
Datagram séparé
WebTransport est également caractérisé hors RealtimeConnection :
64 datagrams
payload = min(256, client_max, server_max)
réception jusqu'à 64 ou 250 ms sans nouveau datagram
Le launcher rapporte attempted, received, receive_ratio, les bornes négociées et le temps écoulé. Il n'interprète pas une réception complète comme une garantie de fiabilité.
Sortie
Chaque résultat est imprimé sous une forme stable :
MEASURE transport=<...> metric=<...> ...
La fin normale est :
CONCLUSION webtransport=retain scope=second-backend reason=reliable-browser-fallback-datagram-capabilities
game-realtime-transport-measure: PASS
Le retain signifie uniquement conserver WebTransport comme second backend à côté de WebSocket. Aucun seuil de victoire et aucune affirmation « plus rapide » n'est codé dans l'outil.
Documentation
La méthode et ses limites sont figées dans :
docs/studies/027-V0_3_5_REALTIME_TRANSPORT_MEASUREMENT.md
Les valeurs de la machine de validation seront enregistrées dans history/0.3.5/alpha.10.md après la gate utilisateur plutôt que figées comme vérité générale dans la documentation durable.
Fichiers principaux
Nouveaux :
crates/apps/game-realtime-transport-measure/Cargo.toml
crates/apps/game-realtime-transport-measure/src/main.rs
deltas/0.3.5/alpha.10.md
docs/studies/027-V0_3_5_REALTIME_TRANSPORT_MEASUREMENT.md
history/0.3.5/alpha.9.fix.1.md
Modifiés :
Cargo.toml
README.md
docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md
scripts/audit_distribution_layout.py
Validation attendue
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 test -p game-realtime-webtransport-lib --all-targets --all-features
cargo run --release -p game-realtime-transport-measure
cargo tree -p game-realtime-transport-measure --edges normal
cargo tree -i game-realtime-websocket-lib --workspace --edges normal
cargo tree -i game-realtime-webtransport-lib --workspace --edges normal
Après validation
Enregistrer les lignes MEASURE ... réelles dans history/0.3.5/alpha.10.md, puis passer à 0.3.5-beta.1 pour la validation large. Un défaut fermé de alpha.10 doit produire alpha.10.fix.N avant beta.1.