GNU libmicrohttpd 0.9.74 est déjà sorti et voici ses nouveautés

Récemment le projet GNU a publié la version de la nouvelle version de la bibliothèque libmicrohttpd 0.9.74, A représentant une API simple pour la fonctionnalité de serveur HTTP intégrée dans les applications.

La bibliothèque prend en charge le protocole HTTP 1.1, TLS, le traitement incrémentiel des requêtes POST, authentification de base et digest, IPv6, SHOUTcast et diverses méthodes de multiplexage des connexions (select, poll, pthread, thread pool), actuellement l'implémentation prend en charge diverses plates-formes prises en charge, notamment GNU / Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android , macOS, Win32, Symbian et z/OS.

GNU libmicrohttpd est né du besoin de son auteur, qui à l'époque avait besoin d'un moyen simple d'ajouter un serveur HTTP simultané à d'autres projets. Les alternatives existantes étaient non libres, non réentrantes, autonomes, d'une qualité de code épouvantable, ou une combinaison de celles-ci.

Des caractéristiques qui se démarquent de cette implémentation :

  • Bibliothèque C : rapide et petite
  • L'API est simple, expressive et complètement réentrée.
  • L'implémentation est conforme à HTTP 1.1
  • Le serveur HTTP peut écouter sur plusieurs ports
  • Plusieurs modes de threads : s'exécuter sur le thread d'application, le thread interne, le pool de threads et le thread par connexion
  • Trois modes d'interrogation de socket différents : select (), poll () et epoll
  • Nombre minimum d'appels système pour éviter des changements de mode noyau/utilisateur supplémentaires
  • Les plates-formes prises en charge incluent GNU / Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana /
  • Solaris et z/OS
  • Prise en charge d'IPv6
  • Prise en charge de SHOUTcast
  • Prise en charge du traitement incrémentiel des données POST (facultatif)
  • Prise en charge de l'authentification de base et implicite (facultatif)
  • Prise en charge de TLS (nécessite libgnutls, en option)
  • Le binaire ne fait qu'environ 32k (sans support TLS et autres fonctionnalités optionnelles)

Principales nouvelles fonctionnalités de libmicrohttpd 0.9.74

Dans cette nouvelle version qui est présentée à partir de la bibliothèque, nous pouvons trouver que ajouté une implémentation expérimentale du protocole WebSockets, qui n'est pas encore bien testé et est désactivé par défaut.

Une autre nouveauté présentée est que la conformité avec les spécifications de mise en œuvre du protocole HTTP 1.0 / 1.1 a été amélioréeDe plus, le code a été retravaillé pour décoder les requêtes fragmentées.

Il est également souligné que ajout de code pour renvoyer automatiquement les erreurs liées aux mauvaises requêtes fragmentées, taille de données trop importante et paramètre d'en-tête Content-Length incorrect.

Il a été réalisé optimisations internes, par exemple, une gestion améliorée de la mémoire, une efficacité de hachage améliorée et l'élimination de l'analyse répétitive de la méthode HTTP et de la version du protocole.

Et il est également noté qu'il fournissait une validation plus stricte des valeurs d'en-tête HTTP, autorisait l'utilisation d'un caractère de tabulation dans les valeurs d'en-tête de réponse, mais interdisait l'utilisation d'espaces dans les valeurs d'en-tête personnalisées.

Par ailleurs, le code pour générer des en-têtes HTTP en réponse a été complètement réécrit et la précision du délai d'attente a été augmentée de quelques secondes à quelques millisecondes.

Ajout de l'option de construction -enable-sanitizers [= address, undefined, leak, user-poison] pour activer de manière sélective les modes de détection de problèmes dans le code.

Correction, clarification, extension et amélioration des descriptions des fonctions Doxy, mentionnant maintenant qu'il devrait être beaucoup plus facile d'apprendre MHD simplement en lisant les en-têtes.

Parmi les autres changements qui ressortent de cette nouvelle version:

  • Descriptions de fonctions améliorées dans le fichier d'en-tête microhttpd.h.
  • fonctions API ajoutées MHD_get_reason_phrase_len_for () et MHD_create_response_from_buffer_with_free_callback_cls (), drapeau MHD_CONNECTION_INFO_HTTP_STATUS, MHD_get_connection_info (), ainsi que les réponses de drapeau MHD_CONNECTION_INFO_HTTP_STATUS, et les réponses MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_.
  • Ajout d'un fichier de projet pour l'assemblage dans MSVC.
  • La formation de l'en-tête de réponse a été complètement réécrite. La nouvelle implémentation est plus robuste, plus facile à maintenir et extensible, et suit mieux les spécifications HTTP RFC.
  • Améliorations des performances : désormais, la version HTTP et la méthode de requête ne sont décodées qu'une seule fois (auparavant, MHD utilisait de nombreuses comparaisons de chaînes

Enfin si vous souhaitez en savoir plus à propos de cette version, vous pouvez consulter les manuels d'utilisation et d'autres informations sur son site Web.

Le lien est le suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.