Le projet GNU a publié la version de la bibliothèque libmicrohttpd 0.9.77, qui offre une API simple pour intégrer des fonctionnalités de serveur HTTP dans des applications. Parmi les plateformes prises en charge figurent : GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 et z/OS. La bibliothèque est distribuée sous la licence LGPL 2.1+. En version compilée, la bibliothèque occupe environ 32 Ko.
La bibliothèque prend en charge le protocole HTTP 1.1, TLS, le traitement incrémental des requêtes POST, l'authentification basic et digest, IPv6, SHOUTcast, divers mécanismes de multiplexage des connexions (select, poll, epoll) et des modèles de multithreading (par exemple, un pool de threads ou un thread par connexion). Pour réduire les surcharges liées au changement de contexte entre le noyau et l'espace utilisateur, le nombre d'appels système au cours de l'exécution est minimisé.
Les changements les plus notables :
- L'API propose une nouvelle fonction MHD_get_version_bin() pour obtenir des informations sur la version de la bibliothèque au format binaire (par exemple, 0x00097701).
- Les identifiants des algorithmes utilisés pour l'authentification digest (« MD5 » / « SHA-256 » au lieu de « md5 » / « sha-256 ») sont conformes à la forme recommandée dans le RFC.
- Le code de décodage des blocs au format Base64 a été réécrit, et la vérification de la validité des données d'entrée au format Base64 a été renforcée.
- Amélioration de la configuration de la cross-compilation, augmentation de la compatibilité avec POSIX et les nouvelles versions des compilateurs.
- Des tests internes ont été ajoutés pour vérifier le décodage Base64, l'authentification Basic et les en-têtes HTTP longs repliés.
- Les tests utilisent l'API mise à jour de la bibliothèque libcurl pour masquer les avertissements concernant l'utilisation d'appels obsolètes.
- La possibilité d'utiliser les compilateurs VC (Visual C) lors de la compilation pour les systèmes ARM et ARM64 a été ajoutée.
- Toutes les valeurs négatives renvoyées par l'appel de callback sont désormais considérées comme des erreurs (auparavant, les valeurs négatives, à l'exception des codes d'erreur prédéfinis, pouvaient entraîner un comportement indéfini).
- Le traitement du macro préprocesseur « DEBUG » a été ajouté (le gestionnaire est identique au macro « _DEBUG »).
- Les erreurs accumulées ont été corrigées.
Source : opennet.ru
