Выпуск библиотеки GNU libmicrohttpd 0.9.77

Проект GNU опубликовал выпуск библиотеки libmicrohttpd 0.9.77, представляющей простой API для встраивания функциональности HTTP-сервера в приложения. Среди поддерживаемых платформ: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 и z/OS. Библиотека распространяется под лицензией LGPL 2.1+. В собранном виде библиотека занимает около 32 КБ.

Библиотека поддерживает протокол HTTP 1.1, TLS, инкрементальную обработку POST-запросов, basic- и digest-аутентификацию, IPv6, SHOUTcast, различные методы мультиплексирования соединений (select, poll, epoll) и модели многопоточности (например, можно использовать пул потоков или поток на соединение). Для снижения накладных расходов, возникающих при переключении контекста между ядром и пространством пользователя, число системных вызовов в процессе работы сведено к минимуму.

Наиболее заметные изменения:

  • В API предложена новая функция MHD_get_version_bin() для получения информации о версии библиотеки в упакованном формате (например, 0x00097701).
  • К форме, рекомендуемой в RFC, приведены идентификаторы алгоритмов, используемых для digest-аутентификации («MD5» / «SHA-256» вместо «md5» / «sha-256»).
  • Переписан код декодирования блоков в формате Base64, усилена проверка корректности входных данных в формате Base64.
  • Улучшена настройка кросс-компиляции, повышена совместимость с POSIX и новыми версиями компиляторов.
  • Добавлены внутренние тесты для проверки декодирования Base64, Basic Auth и свёрнутых длинных HTTP-заголовов.
  • В тестах задействован обновлённый API библиотеки libcurl для скрытия предупреждений об использовании устаревших вызовов.
  • Добавлена возможность использования компиляторов VC (Visual C) при сборке для систем ARM и ARM64.
  • Любые отрицательные значения, возвращаемые callback-вызовом, теперь трактуются как ошибки (ранее отрицательные значения, за исключением предопределённых кодов ошибок, могли привести к неопределённому поведению).
  • Добавлена обработка макроса препроцессора «DEBUG» (обработчик идентичен макросу «_DEBUG»).
  • Исправлены накопившиеся ошибки.

Источник: opennet.ru

Добавить комментарий