Das GNU-Projekt hat die Bibliothek libmicrohttpd 1.0.0 veröffentlicht, die als erster stabiler Release seit 16 Jahren in der Geschichte des Projekts gilt. Die Bibliothek ist in C geschrieben und bietet eine einfache API fĂŒr die Integration von HTTP-Serverfunktionen in Anwendungen. UnterstĂŒtzte Plattformen sind: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 und z/OS. Der Code wird unter der LGPL 2.1+ Lizenz verteilt. Bei der Standardkompilierung nimmt die Bibliothek ungefĂ€hr 200 KB ein, im Minimalmodus sind es 32 KB. Die AbhĂ€ngigkeiten beinhalten nur libc sowie libgnutls fĂŒr optionale Kompilierungen mit TLS-UnterstĂŒtzung.
Die Bibliothek unterstĂŒtzt das HTTP 1.1-Protokoll, TLS, inkrementelle Verarbeitung von POST-Anfragen, Annahme von Verbindungen an mehreren Netzwerkports, Basic- und Digest-Authentifizierung, IPv6, SHOUTcast, verschiedene Methoden zur Multiplexierung von Verbindungen (select, poll, epoll) und Multithreading-Modelle (zum Beispiel kann ein Thread-Pool oder ein Thread pro Verbindung verwendet werden). Um den Overhead zu verringern, der beim Kontextwechsel zwischen Kernel und Benutzerspeicher auftritt, wurde die Anzahl der Systemaufrufe wĂ€hrend der AusfĂŒhrung auf ein Minimum reduziert. Die Sicherheit des libmicrohttpd-Codes wurde durch Audits von Mozilla und Red Hat bestĂ€tigt.
Die auffĂ€lligsten Ănderungen im Vergleich zur vorherigen Version:
- Der Code fĂŒr das Parsing von Client-Anfragen wurde neu geschrieben und vollstĂ€ndig an die Anforderungen der RFC 9110 und 9112 angepasst. Es wurden strikte und lockere Modusbedingungen fĂŒr die Einhaltung der Spezifikationen bereitgestellt, um zwischen KompatibilitĂ€t und höherer Sicherheit abzuwĂ€gen.
- Die Implementierung der Digest-Authentifizierung wurde ĂŒberarbeitet, wobei die UnterstĂŒtzung der in RFC 7617 enthaltenen Funktionen erheblich erweitert wurde. Dazu gehört die UnterstĂŒtzung von SHA-512, userhash und username in erweiterter Notation. Zudem bleibt die UnterstĂŒtzung des alten RFC 2069 und die Verwendung von MD5- und SHA-256-Hashes erhalten.
- Die Leistung in Multithread-Umgebungen und bei Socket-Polling-Methoden wurde verbessert.
- Die Implementierung der Basic-Authentifizierung wurde ĂŒberarbeitet, fĂŒr die im ABI zusĂ€tzliche Funktionen angeboten werden.
- Der Code fĂŒr die Initialisierung von GnuTLS wurde ĂŒberarbeitet. Es wurde die Möglichkeit hinzugefĂŒgt, sowohl eine generische als auch eine spezifische GnuTLS-Systemkonfiguration zu verwenden, sowie die UnterstĂŒtzung fĂŒr die Ăberschreibung einzelner Einstellungen der GnuTLS-Systemkonfiguration.
In Zukunft ist die Entwicklung der Version libmicrohttpd 2 geplant, die die UnterstĂŒtzung der Protokolle HTTP/2 und HTTP/3 gewĂ€hrleisten wird. Zudem wird an der Vereinfachung der API und der UnterstĂŒtzung verschiedener Backends fĂŒr TLS gearbeitet. Der Beginn der Arbeiten an der neuen Version wird vom Sovereign-Fonds finanziert, der in Deutschland gegrĂŒndet wurde, um die Entwicklung offener digitaler Infrastrukturen und Ăkosysteme mit offenem Quellcode zu fördern.
Quelle: opennet.ru
