Il progetto GNU ha pubblicato la versione 1.0.0 della libreria libmicrohttpd, che è contrassegnata come il primo rilascio stabile dopo 16 anni di esistenza del progetto. La libreria è scritta in C e offre una semplice API per integrare la funzionalità di un server HTTP nelle applicazioni. Tra le piattaforme supportate ci sono: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 e z/OS. Il codice è distribuito sotto la licenza LGPL 2.1+. La libreria occupa circa 200 KB di spazio nella build predefinita e 32 KB in modalità build minima. Nelle dipendenze viene utilizzata solo libc, oltre a libgnutls in una build opzionale con supporto TLS.
La libreria supporta il protocollo HTTP 1.1, TLS, il trattamento incrementale delle richieste POST, l'accettazione di connessioni da più porte di rete, l'autenticazione basic e digest, IPv6, SHOUTcast, vari metodi di multiplexing delle connessioni (select, poll, epoll) e modelli di threading (ad esempio, è possibile utilizzare un pool di thread o un thread per connessione). Per ridurre l'overhead dovuto al passaggio di contesto tra il kernel e lo spazio utente, il numero di chiamate di sistema durante l'esecuzione è stato ridotto al minimo. La sicurezza della base di codice di libmicrohttpd è stata confermata da audit condotti da Mozilla e Red Hat.
Le modifiche più evidenti rispetto alla versione precedente sono:
- Il codice per l'analisi delle richieste dei clienti è stato riscritto e portato a piena conformità con i requisiti della RFC 9110 e 9112. Sono stati forniti modi di conformità rigorosa e blanda per bilanciare compatibilità e maggiore sicurezza.
- La realizzazione dell'autenticazione digest è stata rielaborata, ampliando significativamente il supporto per le funzionalità presenti nella RFC 7617. È stata inclusa la supporto per SHA-512, userhash e username in notazione estesa. È inoltre mantenuto il supporto per la vecchia RFC 2069 e la possibilità di utilizzare hash MD5 e SHA-256.
- Migliorato il funzionamento in ambienti multithread e nelle modalità di polling dei socket.
- La realizzazione dell'autenticazione basic è stata rielaborata, per la quale sono state proposte funzioni aggiuntive nell'ABI.
- Il codice per l'inizializzazione di GnuTLS è stato rifatto. È stata aggiunta la possibilità di utilizzare sia la configurazione di sistema standard che quella specifica per libmicrohttpd di GnuTLS, insieme al supporto per la sovrascrittura di singole impostazioni della configurazione di sistema di GnuTLS.
In futuro si prevede di lavorare sullo sviluppo della versione libmicrohttpd 2, che garantirà il supporto per i protocolli HTTP/2 e HTTP/3, oltre a semplificare l'API e supportare diversi backend per TLS. L'inizio dei lavori sulla nuova versione sarà finanziato dal fondo Sovereign, istituito in Germania per stimolare lo sviluppo di infrastrutture digitali aperte ed ecosistemi open source.
Fonte: opennet.ru
