Présentation de Vermell

Vermell est un framework web écrit en C++ qui mise sur la légèreté et l’absence totale de bibliothèques tierces. Son architecture repose exclusivement sur le système d'I/O multiplexing epoll fourni par le noyau Linux, ce qui élimine toute surcharge liée à des abstractions externes. Le projet se positionne comme une alternative aux solutions plus lourdes comme Boost.Beast ou Crow, en ciblant les environnements où la taille du binaire et la maîtrise du comportement d'exécution sont critiques.

Architecture et utilisation d'epoll

Le cœur de Vermell consiste en une boucle d'événements qui crée un descripteur epoll et y inscrit les sockets d'écoute ainsi que les connexions client. Chaque itération récupère les événements prêts via epoll_wait, puis délègue le traitement à des callbacks définis par l'utilisateur. Cette approche évite le modèle thread‑per‑connection, limitant ainsi le nombre de context switches et la consommation de mémoire. Le framework expose une API minimaliste : router.add("GET", "/path", handler) pour associer une route à une fonction, et server.start(port) pour lancer l'écoute. Aucun gestionnaire de thread, aucune sérialisation JSON intégrée, aucun système de template HTML ne sont fournis, ce qui oblige le développeur à choisir ou implémenter ces couches selon les besoins spécifiques.

Performances et contraintes techniques

En s’appuyant uniquement sur epoll, Vermell bénéficie d'une latence d'I/O proche du matériel, surtout sous forte charge où le nombre de connexions simultanées dépasse plusieurs dizaines de milliers. L’absence de dépendances externes réduit le temps de compilation et le risque de conflits de version, mais impose également que chaque fonctionnalité additionnelle (TLS, compression, parsing HTTP) soit implémentée manuellement ou via des bibliothèques tierces intégrées au projet. Cette contrainte peut entraîner une complexité accrue pour les équipes non familières avec les primitives POSIX. De plus, le modèle d'événements unique ne convient pas aux workloads nécessitant un parallélisme CPU intensif, car le traitement des requêtes reste mono‑threadé à moins d'instancier plusieurs processus serveur.

Implications pratiques et limites

Vermell s’avère adapté aux micro‑services embarqués, aux appliances réseau ou aux applications où chaque kilooctet de binaire compte. Son design favorise la transparence du flux de données, ce qui simplifie les audits de sécurité : chaque appel système est visible dans le code source. En revanche, l'absence de fonctionnalités prêtes à l'emploi (gestion de sessions, validation d'en‑têtes, support HTTP/2) signifie que le temps de mise en production peut augmenter si le projet requiert ces capacités. Enfin, la dépendance exclusive à Linux/epoll limite la portabilité : le framework ne fonctionne pas nativement sous Windows ou macOS sans couche d'émulation, ce qui restreint son usage aux environnements serveur Linux.