GNU-projektet har offentliggjort en udgave af biblioteket libmicrohttpd 0.9.77, som tilbyder et simpelt API til indbygning af HTTP-serverfunktionalitet i applikationer. Blandt de understøttede platforme er: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 og z/OS. Biblioteket distribueres under LGPL 2.1+-licensen. I samlet tilstand fylder biblioteket cirka 32 KB.
Biblioteket understøtter HTTP 1.1-protokollen, TLS, inkrementel behandling af POST-anmodninger, basic- og digest-godkendelse, IPv6, SHOUTcast, forskellige metoder til multiplexing af forbindelser (select, poll, epoll) og multitrådede modeller (for eksempel kan der bruges en trådpool eller en tråd pr. forbindelse). For at reducere overhead, der opstår ved konteksskift mellem kernen og brugerrummet, er antallet af systemopkald under anvendelse minimeret.
De mest iøjefaldende ændringer:
- API'et introducerer en ny funktion MHD_get_version_bin() til at hente oplysninger om bibliotekets version i pakket format (f.eks. 0x00097701).
- Til formen anbefalet i RFC er der angivet identifikatorer for de algoritmer, der anvendes til digest-godkendelse ("MD5" / "SHA-256" i stedet for "md5" / "sha-256").
- Koden til dekodning af blokke i Base64-format er blevet omskrevet, og kontrol af inddata i Base64-format er blevet styrket.
- Forbedret konfiguration af krydskompilering, øget kompatibilitet med POSIX og nye udgaver af kompilatorer.
- Interne tests tilføjet til at kontrollere dekodning af Base64, Basic Auth og foldede lange HTTP-overskrifter.
- De opdaterede API-tests i biblioteket libcurl er blevet brugt til at skjule advarsler om brug af forældede opkald.
- Muligheden for at bruge VC (Visual C) kompilatorer ved opbygning til ARM- og ARM64-systemer er blevet tilføjet.
- Enhver negativ værdi, der returneres fra callback-opkald, betragtes nu som en fejl (tidligere kunne negative værdier, bortset fra prædefinerede fejlkoder, føre til uventet adfærd).
- Behandling af præprocessor-makroen "DEBUG" er tilføjet (handleren er identisk med makroen "_DEBUG").
- Retter de akkumulerede fejl.
Kilde: opennet.ru
