GNU libmicrohttpd 0.9.74 został już wydany i to są jego nowości

Ostatnio projekt GNU wydał wydanie nowa wersja biblioteki biblioteka libmicrohttpd 0.9.74, Reprezentujący prosty interfejs API dla wbudowanej funkcjonalności serwera HTTP w aplikacjach.

Biblioteka obsługuje protokół HTTP 1.1, TLS, przetwarzanie przyrostowe żądań POST, uwierzytelnianie podstawowe i szyfrowane, IPv6, SHOUTcast oraz różne metody multipleksowania połączeń (select, poll, pthread, thread pool), aktualnie implementacja obsługuje różne obsługiwane platformy, w tym GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android , macOS, Win32, Symbian i z/OS.

GNU libmicrohttpd narodziło się z potrzeby jego autora, który w tamtym czasie potrzebował łatwego sposobu na dodanie współbieżnego serwera HTTP do innych projektów. Istniejące alternatywy były niewolne, nie wznawiane, samodzielne, o fatalnej jakości kodu lub ich kombinacją.

Charakterystyka które wyróżniają się w tej realizacji:

  • Biblioteka C: szybka i mała
  • API jest proste, ekspresyjne i całkowicie reentry.
  • Implementacja jest zgodna z HTTP 1.1
  • Serwer HTTP może nasłuchiwać na wielu portach
  • Wiele trybów wątków: uruchamianie w wątku aplikacji, wątku wewnętrznym, puli wątków i wątku na połączenie
  • Trzy różne tryby odpytywania gniazd: select (), poll () i epoll
  • Minimalna liczba wywołań systemowych, aby uniknąć dodatkowych zmian trybu jądra/użytkownika
  • Obsługiwane platformy to GNU / Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana /
  • Solaris i z / OS
  • Wsparcie dla IPv6
  • Wsparcie SHOUTcast
  • Obsługa przyrostowego przetwarzania danych POST (opcjonalnie)
  • Obsługa uwierzytelniania podstawowego i niejawnego (opcjonalnie)
  • Obsługa TLS (wymaga libgnutls, opcjonalnie)
  • Plik binarny ma tylko około 32k (bez obsługi TLS i innych opcjonalnych funkcji)

Główne nowe funkcje libmicrohttpd 0.9.74

W tej nowej wersji prezentowanej z biblioteki możemy znaleźć, że dodano eksperymentalną implementację protokołu WebSockets, który nie jest jeszcze dobrze przetestowany i jest domyślnie wyłączony.

Kolejną prezentowaną nowością jest to, że poprawiono zgodność ze specyfikacją implementacji protokołu HTTP 1.0/1.1Ponadto kod został przerobiony, aby dekodować pofragmentowane żądania.

Podkreśla się również, że dodany kod do automatycznego zwracania błędów związanych ze złymi chunkowanymi żądaniami, zbyt duży rozmiar danych i nieprawidłowe ustawienie nagłówka Content-Length.

To zostało zrealizowane optymalizacje wewnętrzne, na przykład ulepszone zarządzanie pamięcią, ulepszona wydajność mieszania i eliminacja powtarzalnego analizowania metody HTTP i wersji protokołu.

Należy również zauważyć, że zapewnia bardziej rygorystyczną walidację wartości nagłówka HTTP, zezwala na użycie znaku tabulacji w wartościach nagłówka odpowiedzi, ale zabrania używania spacji w niestandardowych wartościach nagłówka.

Poza tym, kod do generowania nagłówków HTTP w odpowiedzi został całkowicie przepisany a precyzja limitu czasu została zwiększona z sekund do milisekund.

Dodano opcję kompilacji –enable-sanitizers [= adres, niezdefiniowany, wyciek, trucizna użytkownika], aby selektywnie włączać tryby wykrywania problemów w kodzie.

Poprawiono, wyjaśniono, rozszerzono i ulepszono opisy funkcji Doxy, teraz wspominając, że nauka MHD powinna być o wiele łatwiejsza, po prostu czytając nagłówki.

Spośród innych zmian, które wyróżniają się w nowej wersji:

  • Ulepszone opisy funkcji w pliku nagłówkowym microhttpd.h.
  • Funkcje API dodaje MHD_get_reason_phrase_len_for () i MHD_create_response_from_buffer_with_free_callback_cls () MHD_CONNECTION_INFO_HTTP_STATUS flagi, MHD_get_connection_info (), jak również reakcje flag MHD_CONNECTION_INFO_HTTP_STATUS i reakcje MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_.
  • Dodano plik projektu do montażu w MSVC.
  • Formacja nagłówka odpowiedzi została całkowicie przepisana. Nowa implementacja jest bardziej niezawodna, łatwiejsza w utrzymaniu i rozszerzalności oraz lepiej spełnia specyfikacje RFC HTTP.
  • Poprawa wydajności: teraz wersja HTTP i metoda żądania są dekodowane tylko raz (wcześniej MHD używało wielu porównań ciągów)

W końcu jeśli chcesz dowiedzieć się więcej na ten temat o tym wydaniu możesz zapoznać się z podręcznikami użytkownika i innymi informacjami na jego stronie internetowej.

Link jest taki.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.