GNU-projektet har udgivet version 1.0.0 af libmicrohttpd-biblioteket, som er markeret som den første stabile udgivelse i 16 år. Biblioteket er skrevet i C og tilbyder et simpelt API til indlejring af HTTP-serverfunktionalitet i applikationer. Blandt de understøttede platforme er: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 og z/OS. Koden distribueres under LGPL 2.1+. Ved standardbygning fylder biblioteket omkring 200 KB, og i minimal bygge-tilstand er det 32 KB. Afhængighederne omfatter kun libc og libgnutls ved valg af TLS-understøttelse.
Biblioteket understøtter HTTP 1.1-protokollen, TLS, inkrementel behandling af POST-anmodninger, modtagelse af forbindelser fra flere netværksporte, basic- og digest-godkendelse, IPv6, SHOUTcast, forskellige metoder til multiplexing af forbindelser (select, poll, epoll) og multitrådede modeller (for eksempel kan der anvendes en trådpool eller en enkelt tråd pr. forbindelse). For at reducere overhead, der opstår ved kontekstskifte mellem kernen og brugerrummet, er antallet af systemopkald under drift minimeret. Sikkerheden i libmicrohttpd's kodebase er bekræftet gennem audits udført af Mozilla og Red Hat.
De mest markante ændringer i forhold til den tidligere version:
- Koden til behandling af klientanmodninger er gen skrevet og ført i fuld overensstemmelse med kravene i RFC 9110 og 9112. Strenge og bløde overholdelsesmetoder er blevet tilgængelige for at balancere mellem kompatibilitet eller højere sikkerhed.
- Implementeringen af digest-godkendelse er blevet forbedret, hvor understøttelsen af funktionaliteter fra RFC 7617 er betydeligt udvidet. Dette inkluderer støtte til SHA-512, userhash og username i udvidet notation. Der er også bibeholdt støtte til det ældre RFC 2069 og mulighed for at bruge MD5 og SHA-256 hashes.
- Ydelsen er forbedret i multitrådede omgivelser og ved socket-polling.
- Implementeringen af basic-godkendelse er blevet revideret, for hvilken der er foreslået yderligere funktioner i ABI.
- Koden til initialisering af GnuTLS er blevet omarbejdet. Muligheden for at anvende både standard- og libmicrohttpd-specifik systemkonfiguration for GnuTLS er blevet tilføjet, samt understøttelse af at overskrive enkelte indstillinger fra systemkonfigurationen af GnuTLS.
Det er planlagt at udvikle en ny branch af libmicrohttpd 2, hvor der vil blive tilføjet støtte for HTTP/2 og HTTP/3-protokoller samt arbejde for at forenkle API'et og støtte forskellige backend-løsninger for TLS. Arbejdet med den nye branch vil blive finansieret af fonden Sovereign, som er oprettet i Tyskland for at fremme udviklingen af åbne digitale infrastrukturer og økosystemer med open source-software.
Kilde: opennet.ru
