Первый стабильный выпуск библиотеки GNU libmicrohttpd
Проект GNU опубликовал выпуск библиотеки libmicrohttpd 1.0.0, который отмечен как первый стабильный релиз за 16 лет существования проекта. Библиотека написана на языке Си и представляет простой API для встраивания функциональности HTTP-сервера в приложения. Среди поддерживаемых платформ: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 и z/OS. Код распространяется под лицензией LGPL 2.1+. При сборке по умолчанию библиотека занимает около 200 КБ, а в минимальном режиме сборки — 32 КБ. В зависимостях используется только libc, а также libgnutls при опциональной сборке с поддержкой TLS.
Библиотека поддерживает протокол HTTP 1.1, TLS, инкрементальную обработку POST-запросов, приём соединений с нескольких сетевых портов, basic- и digest-аутентификацию, IPv6, SHOUTcast, различные методы мультиплексирования соединений (select, poll, epoll) и модели многопоточности (например, можно использовать пул потоков или поток на соединение). Для снижения накладных расходов, возникающих при переключении контекста между ядром и пространством пользователя, число системных вызовов в процессе работы сведено к минимуму. Безопасность кодовой базы libmicrohttpd подтверждена аудитами, проведёнными компаниями Mozilla и Red Hat.
Наиболее заметные изменения по сравнению с прошлым выпуском:
- Переписан и приведён к полному соответствию требованиям RFC 9110 и 9112 код для разбора запросов клиентов. Предоставлены режимы строгого и мягкого соблюдения спецификаций для балансирования между совместимостью или более высокой безопасностью.
Переработана реализация digest-аутентификации, в которой значительно расширена поддержка возможностей, присутствующих в RFC 7617. В том числе обеспечена поддержка SHA-512, userhash и username в расширенной нотации. Также сохранена поддержка старого RFC 2069 и возможность использования хэшей MD5 и SHA-256.
Улучшена работа в многопоточных окружениях и при режимах полинга сокетов.
Переработана реализация basic-аутентификации, для которой в ABI предложены дополнительные функции.
- Переделан код для инициализации GnuTLS. Добавлена возможность использования как типовой, так и специфичной для libmicrohttpd системной конфигурации GnuTLS, а также поддержка переопределения отдельных настроек системной конфигурации GnuTLS.
В дальнейшем планируется заняться разработкой ветки libmicrohttpd 2, в которой будет обеспечена поддержка протоколов HTTP/2 и HTTP/3, а также проведена работа по упрощению API и поддержке разных бэкендов для TLS. Начало работы над новой веткой будет профинансировано фондом Sovereign, учреждённым в Германии для стимулирования развития открытой цифровой инфраструктуры и экосистем с открытым исходным кодом.
Источник: http://www.opennet.ru/opennews/art.shtml? num=60540
© OpenNet