Il progetto GNU ha pubblicato la versione della libreria libmicrohttpd 0.9.77, che rappresenta un'API semplice per l'integrazione della funzionalità di un server HTTP nelle applicazioni. Le piattaforme supportate includono: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 e z/OS. La libreria è distribuita con licenza LGPL 2.1+. Nella sua forma compilata, la libreria occupa circa 32 KB.
La libreria supporta il protocollo HTTP 1.1, TLS, l'elaborazione incrementale delle richieste POST, l'autenticazione di base e digest, IPv6, SHOUTcast, diversi metodi di multiplexing delle connessioni (select, poll, epoll) e modelli di multithreading (ad esempio, è possibile utilizzare un pool di thread o un thread per connessione). Per ridurre i costi di overhead derivanti dal passaggio di contesto tra il kernel e lo spazio utente, il numero di chiamate di sistema durante il funzionamento è stato ridotto al minimo.
Le modifiche più significative:
- L'API presenta una nuova funzione MHD_get_version_bin() per ottenere informazioni sulla versione della libreria in formato compatto (ad esempio, 0x00097701).
- Alla forma consigliata nel RFC sono stati aggiunti gli identificatori degli algoritmi utilizzati per l'autenticazione digest ("MD5" / "SHA-256" invece di "md5" / "sha-256").
- Il codice di decodifica dei blocchi in formato Base64 è stato riscritto e migliorato il controllo dell'accuratezza dei dati in ingresso in formato Base64.
- È stata migliorata la configurazione per la cross-compilazione e aumentata la compatibilità con POSIX e le nuove versioni dei compilatori.
- Aggiunti test interni per verificare la decodifica di Base64, Basic Auth e intestazioni HTTP lunghe compresse.
- Nei test è stato utilizzato l'API aggiornato della libreria libcurl per nascondere i warning sull'uso di chiamate obsolete.
- È stata aggiunta la possibilità di utilizzare compilatori VC (Visual C) nella compilazione per i sistemi ARM e ARM64.
- Qualsiasi valore negativo restituito da una chiamata di callback è ora considerato un errore (in precedenza, valori negativi, ad eccezione dei codici di errore predefiniti, potevano portare a un comportamento indesiderato).
- È stata aggiunta la gestione del macro preprocessor "DEBUG" (il gestore è identico al macro "_DEBUG").
- Sono stati corretti errori accumulati.
Fonte: opennet.ru
