ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ выпуск Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ 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, ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΌ Π² Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ для стимулирования развития ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ инфраструктуры ΠΈ экосистСм с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru