nedavno GNU projekt objavio je izdanje novu verziju knjižnice libmicrohttpd 0.9.74, Predstavlja jednostavan API za ugrađenu funkcionalnost HTTP poslužitelja u aplikacijama.
Knjižnica podržava HTTP 1.1 protokol, TLS, inkrementalnu obradu POST zahtjeva, osnovna i sažeta autentikacija, IPv6, SHOUTcast, te razne metode multipleksiranja (select, poll, pthread, thread pool), trenutno implementacija ima podršku za različite podržane platforme, uključujući GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android , macOS, Win32, Symbian i z/OS.
GNU libmicrohttpd je rođen zbog potrebe svog autora, koji je u to vrijeme trebao jednostavan način za dodavanje istodobnog HTTP poslužitelja drugim projektima. Postojeće alternative bile su neslobodne, nepovratne, samostalne, užasne kvalitete koda ili njihova kombinacija.
Od karakteristika koji se ističu u ovoj implementaciji:
- Knjižnica C: brza i mala
- API je jednostavan, izražajan i potpuno ponovni ulazak.
- Implementacija je usklađena s HTTP 1.1
- HTTP poslužitelj može slušati na više portova
- Višestruki načini rada s nitima: Pokreni na niti aplikacije, unutarnjoj niti, grupi niti i niti po vezi
- Tri različita načina prozivanja utičnice: odabir (), anketa () i epoll
- Minimalni broj sistemskih poziva kako bi se izbjegle dodatne promjene kernela/korisničkog načina rada
- Podržane platforme uključuju GNU / Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana /
- Solaris i z/OS
- Podrška za IPv6
- SHOUTcast podrška
- Podrška za inkrementalnu obradu POST podataka (izborno)
- Podrška za osnovnu i implicitnu autentifikaciju (izborno)
- TLS podrška (zahtijeva libgnutls, opcionalno)
- Binarno je samo oko 32k (bez TLS podrške i drugih opcijskih značajki)
Glavne nove značajke libmicrohttpd 0.9.74
U ovoj novoj verziji koja je predstavljena iz knjižnice možemo to pronaći dodao eksperimentalnu implementaciju WebSockets protokola, koji još nije dobro testiran i onemogućen je prema zadanim postavkama.
Još jedna novost koja je predstavljena je ta poboljšana je usklađenost sa specifikacijama implementacije protokola HTTP 1.0 / 1.1Osim toga, kod je prerađen za dekodiranje fragmentiranih zahtjeva.
Također je istaknuto da dodan kod za automatski vraćanje pogrešaka povezanih s lošim zahtjevima, prevelika veličina podataka i netočna postavka zaglavlja Content-Length.
Ostvareno je interne optimizacije, na primjer, poboljšano upravljanje memorijom, poboljšana učinkovitost hashiranja i eliminacija ponavljajućeg raščlanjivanja HTTP metode i verzije protokola.
Također se napominje da je osigurao strožiju provjeru vrijednosti HTTP zaglavlja, dopustio korištenje znaka tabulatora u vrijednostima zaglavlja odgovora, ali je zabranio korištenje razmaka u prilagođenim vrijednostima zaglavlja.
Osim toga, kod za generiranje HTTP zaglavlja kao odgovor u potpunosti je prepisan a preciznost timeouta je povećana sa sekundi na milisekunde.
Dodana opcija izrade – omogući dezinfekciju [= adresa, nedefinirano, curenje, korisnički otrov] za selektivno omogućavanje načina otkrivanja problema u kodu.
Ispravljeni, pojašnjeni, prošireni i poboljšani opisi Doxy funkcija, sada spominjući da bi MHD trebalo biti puno lakše naučiti samo čitanjem naslova.
Od ostalih promjena koje se ističu u ovoj novoj verziji:
- Poboljšani opisi funkcija u datoteci zaglavlja microhttpd.h.
- API funkcije dodao MHD_get_reason_phrase_len_for () i MHD_create_response_from_buffer_with_free_callback_cls (), MHD_CONNECTION_INFO_HTTP_STATUS zastava, MHD_get_connection_info (), kao i MHD_CONNECTION_INFO_HTTP_STATUS odgovori zastava, a MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_ odgovora.
- Dodana projektna datoteka za montažu u MSVC.
- Formiranje zaglavlja odgovora u potpunosti je prepisano. Nova implementacija je robusnija, lakša za održavanje i proširiva te bolje prati RFC HTTP specifikacije.
- Poboljšanja performansi: sada se HTTP verzija i metoda zahtjeva dekodiraju samo jednom (prije je MHD koristio mnoge usporedbe nizova
Konačno ako vas zanima više o tome o ovom izdanju, možete pogledati korisničke priručnike i druge informacije na njegovoj web stranici.