Праект 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
