Библиотека поддерживает протокол 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").
- Исправлены накопившиеся ошибки.
Источник: https://www.opennet.ru/opennews/art.shtml?num=59211
(opennet.ru, мини-новости)