À propos du projet
CWIST (C Web development Is Still Trustworthy) est un framework web et serveur d'applications C17 qui regroupe une pile réseau complète : HTTP/1.1, HTTP/2, HTTP/3 sur QUIC, WebSocket, WebTransport et TLS hybride post-quantique utilisant X25519MLKEM768. Il fournit un ORM SQLite embarqué, un moteur de base de données en mémoire optimisé pour la lecture appelé Nuke DB, ainsi que la détection automatique de PostgreSQL, MySQL et MariaDB par empreinte de protocole filaire.
Le projet propose deux modèles d'exécution sélectionnables par variable d'environnement. Le mode réacteur C1M utilise io_uring sous Linux (avec repli epoll/kqueue) pour une diffusion événementielle à haute concurrence, tandis que le mode pool classique attribue à chaque connexion son propre thread pour une latence plus faible sur les charges de requêtes typiques. Le README inclut des comparaisons de benchmarks avec Axum, Gin et Spring Boot, couvrant le débit, les percentiles de latence, l'utilisation mémoire et les changements de contexte, avec la réserve que les résultats dépendent du CPU du runner CI et du profil de charge.
CWIST est livré avec un outil en ligne de commande pour la génération de projets, le rechargement à chaud pendant le développement, la génération OpenAPI à partir des annotations Doxygen et la génération de code protobuf/gRPC. Il prend en charge les routes gRPC unaires et en streaming, les services de santé et de réflexion, les nouvelles tentatives et l'équilibrage de charge. Le framework inclut également le routage avec des paramètres de style Express, des intergiciels, la journalisation structurée, des points de terminaison de métriques et de santé, la limitation de débit, le rendu HTML/CSS/modèles et des utilitaires JSON.
L'installation est possible en compilant depuis les sources avec make ou via un tap Homebrew. Les dépendances telles que BoringSSL, lsquic, libttak et SQLite3 sont vendues, et la bibliothèque statique peut être liée directement ou via pkg-config. La prise en charge des plateformes couvre Linux, macOS et BSD.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.