nylig GNU-prosjektet lanserte utgivelsen av den nye versjonen av biblioteket libmicrohttpd 0.9.74, En som representerer et enkelt API for innebygd HTTP-serverfunksjonalitet i applikasjoner.
Bibliotek støtter HTTP 1.1-protokoll, TLS, inkrementell behandling av POST-forespørsel, grunnleggende autentisering og sammendragsgodkjenning, IPv6, SHOUTcast og ulike metoder for multipleksing av tilkoblinger (velg, poll, pthread, thread pool), for tiden har implementeringen støtte for ulike støttede plattformer, inkludert GNU / Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android , macOS, Win32, Symbian og z/OS.
GNU libmicrohttpd ble født på grunn av behovet til forfatteren, som på det tidspunktet trengte en enkel måte å legge til en samtidig HTTP-server til andre prosjekter. De eksisterende alternativene var ikke-gratis, ikke-reentrant, frittstående, forferdelig kodekvalitet eller en kombinasjon av disse.
Av egenskapene som skiller seg ut for denne implementeringen:
- Bibliotek C: raskt og lite
- API-en er enkel, uttrykksfull og fullstendig reentry.
- Implementeringen er HTTP 1.1-kompatibel
- HTTP-serveren kan lytte på flere porter
- Flere trådmoduser: Kjør på applikasjonstråd, intern tråd, trådpool og tråd per tilkobling
- Tre forskjellige socket polling-moduser: velg (), polling () og epoll
- Minimum antall systemanrop for å unngå ytterligere endringer i kjerne-/brukermodus
- Støttede plattformer inkluderer GNU / Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana /
- Solaris og z/OS
- Støtte for IPv6
- SHOUTcast-støtte
- Støtte for inkrementell behandling av POST-data (valgfritt)
- Støtte for grunnleggende og implisitt autentisering (valgfritt)
- TLS-støtte (krever libgnutls, valgfritt)
- Binæren er bare omtrent 32k (uten TLS-støtte og andre valgfrie funksjoner)
De viktigste nye funksjonene til libmicrohttpd 0.9.74
I denne nye versjonen som presenteres fra biblioteket kan vi finne det la til en eksperimentell implementering av WebSockets-protokollen, som ikke er godt testet ennå og er deaktivert som standard.
En annen nyhet som presenteres er det samsvar med implementeringsspesifikasjonene for HTTP 1.0 / 1.1-protokollen ble forbedretI tillegg ble koden omarbeidet for å dekode fragmenterte forespørsler.
Det er også fremhevet at lagt til kode for å automatisk returnere feil relatert til dårlige fragmenterte forespørsler, for stor datastørrelse og feil innstilling for innholdslengdeoverskrift.
Det har blitt realisert interne optimaliseringer, for eksempel forbedret minneadministrasjon, forbedret hash-effektivitet og eliminering av gjentatt parsing av HTTP-metoden og protokollversjonen.
Og det bemerkes også at det ga en strengere validering av HTTP-hodeverdiene, tillot bruk av et tabulatortegn i svarhodeverdiene, men forbudt bruk av mellomrom i de tilpassede overskriftsverdiene.
Bortsett fra det, koden for å generere HTTP-hoder som svar har blitt fullstendig omskrevet og tidsavbruddspresisjonen er økt fra sekunder til millisekunder.
Lagt til byggealternativ –enable-sanitizers [= adresse, udefinert, lekkasje, brukergift] for selektivt å aktivere problemdeteksjonsmoduser i kode.
Rettet, tydeliggjort, utvidet og forbedret beskrivelsene av Doxy-funksjoner, og nevner nå at det burde være mye lettere å lære MHD bare ved å lese overskriftene.
Av de andre endringene som skiller seg ut i denne nye versjonen:
- Forbedrede funksjonsbeskrivelser i headerfilen microhttpd.h.
- API-funksjoner tilsatt MHD_get_reason_phrase_len_for () og MHD_create_response_from_buffer_with_free_callback_cls (), MHD_CONNECTION_INFO_HTTP_STATUS flagg, MHD_get_connection_info (), så vel som MHD_CONNECTION_INFO_HTTP_STATUS flagg responser, og MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_ responser.
- Lagt til prosjektfil for montering i MSVC.
- Svarhodeformasjonen ble fullstendig omskrevet. Den nye implementeringen er mer robust, enklere å vedlikeholde og utvidbar, og følger RFC HTTP-spesifikasjonene bedre.
- Ytelsesforbedringer: Nå dekodes HTTP-versjon og forespørselsmetode bare én gang (tidligere brukte MHD mange strengsammenligninger
Endelig hvis du er interessert i å vite mer om det om denne utgivelsen kan du se brukermanualene og annen informasjon på nettstedet.