Nesen GNU projekts izlaida izlaidumu bibliotēkas jaunā versija libmicrohttpd 0.9.74, Apzīmē vienkāršu API iebūvētai HTTP servera funkcionalitātei lietojumprogrammās.
Bibliotēka atbalsta HTTP 1.1 protokolu, TLS, POST pieprasījuma pakāpenisku apstrādi, pamata un īssavilkuma autentifikācija, IPv6, SHOUTcast un dažādas savienojumu multipleksēšanas metodes (select, poll, pthread, pavedienu pūls), pašlaik ieviešanai ir atbalsts dažādām atbalstītajām platformām, tostarp GNU / Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android , macOS, Win32, Symbian un z/OS.
GNU libmicrohttpd radās tā autora nepieciešamības dēļ, kuram tajā laikā bija nepieciešams vienkāršs veids, kā pievienot vienlaicīgu HTTP serveri citiem projektiem. Esošās alternatīvas bija bezmaksas, neatkārtojamas, atsevišķas, briesmīgas koda kvalitātes vai to kombinācija.
No īpašībām kas izceļas ar šo ieviešanu:
- Bibliotēka C: ātra un maza
- API ir vienkārša, izteiksmīga un pilnībā atgriežas.
- Ieviešana ir saderīga ar HTTP 1.1
- HTTP serveris var klausīties vairākos portos
- Vairāki vītņu režīmi: palaist uz lietojumprogrammas pavedienu, iekšējo pavedienu, pavedienu kopu un pavedienu katrā savienojumā
- Trīs dažādi ligzdas aptauju režīmi: atlase (), aptauja () un epoll
- Minimālais sistēmas izsaukumu skaits, lai izvairītos no papildu kodola/lietotāja režīma izmaiņām
- Atbalstītās platformas ietver GNU / Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana /
- Solaris un z / OS
- Atbalsts IPv6
- SHOUTcast atbalsts
- Atbalsts pakāpeniskai POST datu apstrādei (pēc izvēles)
- Atbalsts pamata un netiešai autentifikācijai (pēc izvēles)
- TLS atbalsts (nepieciešams libgnutls, pēc izvēles)
- Binārais fails ir tikai aptuveni 32 XNUMX (bez TLS atbalsta un citām papildu funkcijām)
Galvenās libmicrohttpd 0.9.74 jaunās funkcijas
Šajā jaunajā versijā, kas tiek prezentēta no bibliotēkas, mēs to varam atrast pievienoja WebSockets protokola eksperimentālu ieviešanu, kas vēl nav labi pārbaudīts un pēc noklusējuma ir atspējots.
Vēl viens jaunums, kas tiek prezentēts, ir tas tika uzlabota atbilstība HTTP 1.0 / 1.1 protokola ieviešanas specifikācijāmTurklāt kods tika pārstrādāts, lai atšifrētu sadrumstalotus pieprasījumus.
Tas ir arī izcelts pievienots kods, lai automātiski atgrieztu kļūdas, kas saistītas ar sliktiem gabalos pieprasījumiem, pārāk liels datu apjoms un nepareizs satura garuma galvenes iestatījums.
Tas ir realizēts iekšējā optimizācija, piemēram, uzlabota atmiņas pārvaldība, uzlabota jaukšanas efektivitāte un HTTP metodes un protokola versijas atkārtotas parsēšanas novēršana.
Turklāt tiek atzīmēts, ka tas nodrošināja stingrāku HTTP galvenes vērtību validāciju, atļāva atbildes galvenes vērtībās izmantot tabulēšanas rakstzīmi, bet aizliedza izmantot atstarpes pielāgotajās galvenes vērtībās.
Bez tam, kods HTTP galvenes ģenerēšanai atbildē ir pilnībā pārrakstīts un taimauta precizitāte ir palielināta no sekundēm līdz milisekundēm.
Pievienota izveides opcija — iespējot sanitizatorus [= adrese, nenoteikta, noplūde, lietotāja inde], lai kodā selektīvi iespējotu problēmu noteikšanas režīmus.
Izlaboti, precizēti, paplašināti un uzlaboti Doxy funkciju apraksti, tagad pieminot, ka vajadzētu būt daudz vieglāk apgūt MHD, vienkārši izlasot virsrakstus.
Starp citām izmaiņām, kas izceļas šajā jaunajā versijā:
- Uzlaboti funkciju apraksti microhttpd.h galvenes failā.
- pievienotās API funkcijas MHD_get_reason_phrase_len_for () un MHD_create_response_from_buffer_with_free_callback_cls (), MHD_CONNECTION_INFO_HTTP_STATUS karogs, MHD_get_connection_info (), kā arī MHD_CONNECTION_INFO_HTTP_STATUS karoga atbildes, un MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_ atbildes.
- Pievienots projekta fails montāžai MSVC.
- Atbildes galvenes veidojums tika pilnībā pārrakstīts. Jaunā ieviešana ir stabilāka, vieglāk uzturējama un paplašināma, un tā labāk atbilst RFC HTTP specifikācijām.
- Veiktspējas uzlabojumi: tagad HTTP versija un pieprasījuma metode tiek atšifrēta tikai vienu reizi (iepriekš MHD izmantoja daudzu virkņu salīdzinājumu
Beidzot ja jūs interesē uzzināt vairāk par to par šo izdevumu varat skatīt lietotāja rokasgrāmatas un citu informāciju tā tīmekļa vietnē.