Projekt GNU zverejnil vydanie knižnice libmicrohttpd 0.9.77, ktorá predstavuje jednoduché API na zabudovanie funkčnosti HTTP servera do aplikácií. Medzi podporované platformy patrí GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 a z/OS. Knižnica je distribuovaná pod licenciou LGPL 2.1+. V zostavenom stave knižnica zaberá približne 32 KB.
Knižnica podporuje protokol HTTP 1.1, TLS, inkrementálne spracovanie POST požiadaviek, základnú a digest autentifikáciu, IPv6, SHOUTcast, rôzne metódy multiplexovania pripojení (select, poll, epoll) a modely viacerých vlákien (napríklad je možné použiť pool vlákien alebo vlákno na pripojenie). Pre zníženie režijných nákladov, ktoré vznikajú pri prepínaní kontextu medzi jadrom a priestorom používateľa, sa počet systémových volaní počas prevádzky znížil na minimum.
Najvýraznejšie zmeny:
- V API bola navrhnutá nová funkcia MHD_get_version_bin() na získanie informácií o verzii knižnice vo zabalenom formáte (napríklad 0x00097701).
- K forme, odporúčanej v RFC, boli pripojené identifikátory algoritmov používaných pre digest autentifikáciu („MD5“ / „SHA-256“ namiesto „md5“ / „sha-256“).
- Prepisovanie kódu na dekódovanie blokov vo formáte Base64, posilnená kontrola správnosti vstupných údajov vo formáte Base64.
- Zlepšila sa konfigurácia krížového kompilovania, zvýšila sa kompatibilita s POSIX a novými verziami kompilátorov.
- Boli pridané interné testy na overenie dekódovania Base64, Basic Auth a zkrátených dlhých HTTP hlavičiek.
- V testoch bol využitý aktualizovaný API knižnice libcurl na skrytie varovaní o používaní zastaraných volaní.
- Bola pridaná možnosť používať kompilátory VC (Visual C) pri zostavovaní pre systémy ARM a ARM64.
- Akékoľvek negatívne hodnoty, vrátené volaním callbacku, sa teraz považujú za chyby (predtým negatívne hodnoty, s výnimkou preddefinovaných kódov chýb, mohli viesť k neurčitému správaniu).
- Bola pridaná spracovanie makra preprocesora „DEBUG“ (spracovateľ je rovnaký ako makro „_DEBUG“).
- Opravené nahromadené chyby.
Zdroj: opennet.ru
