État de la pile Web
seed expédie un transport Web minimal opérationnel plus porté policy/validation forfaits. Il n'existe toujours pas de framework Web complet en langage clair : les façades de service intégrées (web, web_core l'exécution, web_runtime, webapp, websocket_server) restent archivés jusqu'à ce que la boucle persistante de connexion à la réponse, l'annulation et la fuite d'arrêt soient fermées de bout en bout.
Surface opérationnelle actuelle
| Package/capability | Surface actuelle |
|---|---|
web_core |
tranche de transport opérationnelle : configuration de l'écouteur avec réutilisation d'adresses, lectures bloquantes limitées, analyseur request-line/header sans copie, routage method/path sans allocation, générateur de réponses limité, nouvelle tentative d'écriture complète (EINTR) |
http_server |
tranche d'analyseur uniquement : analyseur de requêtes HTTP/1.1 limité sans allocation (http_server_available() == false) ; pas de propriété de connexion, de corps persistants, fragmentés ou TLS |
http_client, http_fetch, tls13 |
côté client HTTP/1.1 sur TCP brut ou TLS 1.3 (G12/G14); redirections limitées, délais d'attente et cadrage |
std-web-request, std-web-response |
cible de forme d'origine délimitée et validation status/body-limit (G15, pas de I/O) |
std-web-security |
cookie sécurisé, CSP, et cadre politique (G15) |
std-web-static |
chemins relatifs sûrs pour la traversée (G15) ; le fichier qui se sert lui-même appartient à l'application |
std-web-template |
escaped/raw-mode politique avec validation de texte sécurisé (G15) |
std-web-middleware, std-web-db |
priorités ordonnées et validation des requêtes indépendante du backend (G15/G16) |
std-router |
validation du modèle d'itinéraire uniquement ; Les registration/dispatch sont les futures couches |
oauth (grove/libs/oauth) |
Noyau de serveur d'autorisation OAuth 2.0 intégré sur Ridge: enregistrement, PKCE, échange de code, rotation de rafraîchissement, révocation familiale (flow test vert ; intégration de site ouverte) |
net, io, byte_buffer, text, parse, task, bytes/shared_bytes, str/tranches |
fondations : prises possédées, typées I/O, tampons initialisés, curseur de jeton, analyse vérifiée, concurrence structurée, propriété vérifiée binary/text vues |
Éléments toujours de la feuille de route (non opérationnels) : TLS serveur, analyse du corps de la requête, transfert fragmenté, propriété de la connexion persistante, cancellation/drain et le service WebSocket.
Preuve déployée
- Ridge Admin (
grove/apps/ridge-admin) : application basée sur un navigateur servie par un locale seed processus en bouclage - session authentifiée, CSRF, origin/Host des chèques, CSP, délimité HTTP analyse, arrêt gracieux. Il s'agit du modèle de référence pour servir un site sur la pile actuelle. - traceur web-core-bench : construit
web_corevia une compilation séparée et sert une requête de bouclage limitée sur le port 8080 (fumée déterministe ; un serveur de référence multitravailleur persistant est une étape de mise à l'échelle distincte).
Grove corpus Web
Les sources d'ancienne génération restent sous grove/libs/ (par exemple web, web_request, web_response, web_runtime, web_middleware, web_security, web_static, web_template, web_db, web_metrics). Il s'agit de portages d'entrées, pas de packages propres actuels : par ex.
./seed/seed check grove/libs/web/src/lib.sd
échoue lors de l'analyse car la source utilise d'anciens noms nominaux en majuscules et des formes supplémentaires remplacées. Par conséquent, les exemples qui renvoient des types tels que WebAppStable, WebContext, ou WebResponse ne doit pas être présenté comme opérationnel propre seed code. Utilisez le std-* ports et web_core à la place.
Exigences pour les nouveaux packages Web
Un package Web Grove devient actuel uniquement après avoir satisfait à tous les critères suivants :
- Utilise une syntaxe propre du serpent inférieur et transmet le message opérationnel parser/type vérificateur.
- Remplace les appels d'exécution implicites hérités par des packages ordinaires actuels ou interfaces d'exécution auditées explicites.
- Utilise les tranches
bytes/shared_bytesdétenues et empruntées pour les requêtes binaires et organismes de réponse. - Rend visibles l’allocation, le blocage, la panique, I/O, FFI et les effets dangereux.
- Encode la propriété des sockets, des connexions, du corps de la requête et du tampon de réponse avec nettoyage précis.
- Préserve la provenance input/receiver pour l'en-tête, le chemin, la requête et les données sans copie. vues du corps.
- Fournit des erreurs typées pour l'analyse, le transport, TLS, le délai d'attente et l'application échecs.
- Produit et consomme les interfaces
.sdiactuelles sans secours de source. - Déclare les exigences platform/runtime et fournit le
INSTALL.mdpour FFI. - Réussit le positif, le négatif, le désinfectant, l'entrée malformée, l'annulation et separate-compilation tests.
Allégations de production
Jusqu'à ce que les couches de diffusion archivées soient fermées, la documentation seed ne doit pas revendiquer la prise en charge actuelle de :
- production (persistante, multitravailleur) HTTP diffusion ;
- TLS fonctionnement du serveur ;
- sessions de framework, CORS ou piles complètes middleware/WebSocket au-delà du tranches policy/validation portées ;
- Performances des produits compatibles TechEmpower grâce à la pile propre ;
- utilisation directe des importations Web existantes Grove (
web,webapp, …) par les candidatures.
Service limité par bouclage dans le Ridge Admin modèle, le web_core tranche de transport, la G15/G16 ports de stratégie, et le oauth les flux sont couverts par leurs lignes de base et leurs tests nommés, et peuvent être revendiqués exactement comme en témoignent.
Les références historiques sur le code Grove peuvent rester des preuves historiques explicitement étiquetées. Ils n'établissent pas de support opérationnel pour la langue actuelle.
Tranches suivantes
La tranche de transport demandée par l’ancienne feuille de route existe désormais (web_core). Les prochaines tranches crédibles, dans l’ordre, sont :
1. request-body parsing (bounded, Content-Length; then chunked)
2. persistent connection loop: keep-alive, cancellation, shutdown drain
3. TLS server
4. dispatch router + static-file serving on the verified loop
5. session/middleware composition on std-* policies + oauth
Le routage, le middleware, le TLS, le pooling, les modèles et les couches d'application supérieures doivent s'appuyer sur la tranche de transport vérifiée plutôt que de conserver les API héritées uniquement pour la compatibilité des sources.
Suivez les priorités de l’écosystème dans Feuille de route de la bibliothèque. Le courant compiler/library la limite est documentée dans Operational Library Reference, et Grove les règles de compatibilité sont dans Grove Arbre de compatibilité. Gate preuve : G11 (crypto/session/jwt), G12/G14 (HTTP client), G15/G16 (ports de stratégie Web, diffusion archivée) sous seed/compiler/llvm/tests/GROVE_G*.md.