GNU-prosjektet har publisert utgivelsen av libmicrohttpd 0.9.77, som tilbyr et enkelt API for å integrere HTTP-serverfunksjonalitet i applikasjoner. Blant de støttede plattformene er: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 og z/OS. Biblioteket distribueres under LGPL 2.1+-lisensen. I samlet stand tar biblioteket omtrent 32 KB.
Biblioteket støtter HTTP 1.1-protokollen, TLS, inkrementell behandling av POST-forespørsler, basic- og digest-autentisering, IPv6, SHOUTcast, ulike metoder for multiplexing av forbindelser (select, poll, epoll) og modeller for flertråding (for eksempel kan en trådpool eller en tråd per tilkobling brukes). For å redusere overhead forårsaket av kontekstbytte mellom kjernen og brukerens rom, er antall systemanrop under drift minimert.
De mest merkbare endringene:
- API-et har fått en ny funksjon MHD_get_version_bin() for å hente informasjon om versjonen av biblioteket i pakket format (for eksempel 0x00097701).
- I formen som anbefales i RFC, er identifikatorene for algoritmene som brukes til digest-autentisering («MD5» / «SHA-256» i stedet for «md5» / «sha-256»).
- Koden for dekoding av blokker i Base64-format er omskrevet, og kontrollen av gyldigheten av inngangsdata i Base64-format er styrket.
- Kryss-kompilering har blitt forbedret, og kompatibiliteten med POSIX og nye versjoner av kompilatorer er økt.
- Interne tester for dekoding av Base64, Basic Auth og sammenviklede lange HTTP-hoder er lagt til.
- Tester benytter det oppdaterte API-et for libcurl for å skjule advarsler om bruk av utdaterte anrop.
- Muligheten til å bruke VC-kompilatorer (Visual C) ved bygging for ARM og ARM64-systemer er lagt til.
- Eventuelle negative verdier som returneres av callback-kall tolkes nå som feil (tidligere kunne negative verdier, unntatt predefinerte feilkoder, føre til udefinert oppførsel).
- Behandlingen av preprocessormakroet «DEBUG» er lagt til (behandleren er identisk med makroen «_DEBUG»).
- Korrigerte akkumulert feil.
Kilde: opennet.ru
