0.3.4-alpha.2

This commit is contained in:
2026-09-21 17:21:25 +02:00
parent 27978c3782
commit 4e2be3cc9a
11 changed files with 533 additions and 8 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Plan 0.3.4 — transport realtime et baseline WebSocket
@@ -7,7 +7,7 @@
Plan actif créé pendant `0.3.4-alpha.1` à partir de l'archive taggée `v0.3.3`.
La tranche `alpha.1` migre d'abord la gouvernance de version vers `alpha.N / beta.N / rc.N`, audite la baseline et ferme les décisions d'ownership avant toute implémentation réseau lourde.
La tranche `alpha.1` a été validée le 2026-09-21. La tranche active `alpha.2` matérialise maintenant le contrat transport-neutral sans dépendance runtime/backend ; le backend WebSocket reste réservé à `alpha.3`.
## Mission
@@ -166,7 +166,9 @@ sender.close() -> async Result
receiver.receive() -> async Result<Message | Closed>
```
L'implémentation Rust exacte est décidée dans `alpha.2`, avec priorité à une API statiquement dispatchée et sans allocation de futures imposée uniquement pour obtenir un trait object.
`alpha.2` retient une API statiquement dispatchée fondée sur des associated types : `RealtimeConnection` produit un `Sender` et un `Receiver`, puis les opérations async exposent des futures associées GAT (`SendFuture`, `CloseFuture`, `ReceiveFuture`). Le contrat commun n'utilise ni `async-trait`, ni `Box<dyn Future>`, ni runtime concret.
Aucune borne `Send` n'est imposée aux futures par le contrat transport-neutral : un backend natif peut naturellement fournir des futures `Send`, tandis qu'un futur backend navigateur/WASM ne doit pas être rendu impossible par une contrainte de threading qui ne relève pas du transport abstrait.
Le contrat doit supporter lecture et écriture concurrentes après split. Il n'expose pas de runtime Tokio et ne crée aucun executor.
@@ -391,6 +393,7 @@ Aucune dépendance réseau n'est ajoutée.
- créer `game-realtime-transport-lib` ;
- implémenter message, receive/close, erreurs et split ;
- conserver l'API sans Tokio/Tungstenite ;
- retenir des futures associées GAT afin de préserver le dispatch statique sans box ni contrainte `Send` imposée au contrat ;
- tests unitaires ciblés ;
- README/USAGE uniquement si une valeur durable est démontrée par `DOC-CRATE-*`.