GNU-prosjektet har gitt ut libmicrohttpd 1.0.0, som er den første stabile utgivelsen i prosjektets 16 år lange historie. Biblioteket er skrevet i C og tilbyr et enkelt API for å bygge inn HTTP-serverfunksjonalitet i applikasjoner. Støttede plattformer inkluderer: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 og z/OS. Koden distribueres under LGPL 2.1+-lisensen. Biblioteket er omtrent 200 KB i standard byggemodus og 32 KB i minimal byggemodus. Avhengigheter inkluderer kun libc, og libgnutls er valgfritt bygget med TLS-støtte.
Biblioteket støtter HTTP 1.1, TLS, inkrementell behandling av POST-forespørsler, aksept av tilkoblinger fra flere nettverksporter, grunnleggende autentisering og sammendrag, IPv6, SHOUTcast, ulike tilkoblingsmultipleksingsmetoder (velg, poll, epoll) og multithreading-modeller (du kan for eksempel bruk en trådbasseng eller tråd per tilkobling). For å redusere overheaden som påløper når konteksten bytter mellom kjernen og brukerområdet, holdes antall systemanrop under drift på et minimum. Sikkerheten til libmicrohttpd-kodebasen er bekreftet av revisjoner utført av Mozilla og Red Hat.
De mest merkbare endringene sammenlignet med forrige utgivelse:
- Koden for å analysere klientforespørsler er skrevet om og bragt i full overensstemmelse med kravene i RFC 9110 og 9112. Overholdelsesmoduser for strenge og myke spesifikasjoner er gitt for å balansere mellom kompatibilitet og høyere sikkerhet.
- Implementeringen av digest-autentisering har blitt omarbeidet, noe som betydelig utvider støtten for funksjonene som finnes i RFC 7617. Dette inkluderer støtte for SHA-512, brukerhash og brukernavn i utvidet notasjon. Støtte for den gamle RFC 2069 og muligheten til å bruke MD5- og SHA-256-hasher er også beholdt.
- Forbedret ytelse i flertrådede miljøer og socket polling-moduser.
- Implementeringen av grunnleggende autentisering har blitt omarbeidet, for hvilke tilleggsfunksjoner tilbys i ABI.
- Omarbeidet GnuTLS-initieringskode. Lagt til muligheten til å bruke både standard og libmicrohttpd-spesifikk GnuTLS-systemkonfigurasjon, samt støtte for å overstyre individuelle GnuTLS-systemkonfigurasjonsinnstillinger.
I fremtiden planlegges det å utvikle libmicrohttpd 2-grenen, som skal gi støtte for HTTP/2- og HTTP/3-protokollene, samt arbeide med å forenkle API og støtte ulike backends for TLS. Starten av arbeidet med den nye grenen vil bli finansiert av Sovereign Foundation, etablert i Tyskland for å stimulere utviklingen av åpen digital infrastruktur og åpen kildekode-økosystemer.
Kilde: opennet.ru
