GNUプロジェクトによる、組み込みフレンドリーなWebサーバーライブラリ「Libmicrohttpd」の最新版v0.9.72が12月28日に公開されました(ML、Phoronix)。
Libmicrohttpdは、アプリケーションに簡単にHTTPサーバーを組み込み、実行できることを目的として開発されている小さなC言語のライブラリです。
今回のリリースは各種OS/カーネルとの移植性の向上がテーマの1つで、FreeBSD、Windows、OpenBSD、NetBSD、Darwin/macOS、Solarisなどとの互換性が改善されています。これには、バッファリング/プッシュコードの全面的な書き換えや、各所OSとの互換性を考慮したシステムコールの数の削減が貢献しています。
その他、特にstay-alive HTTP/HTTPS接続におけるパフォーマンスの改善も行われています。
v0.9.71と比較した際の主な新機能は以下の通りです。
+ New function MHD_create_response_from_pipe().
* Fully rewritten code for buffering/pushing from kernel network buffers
for compatibility with various OSes. Reduced number of additional
sys-calls, network is better utilized, responses are delivered faster.
Restored optimal sendfile() usage on FreeBSD.
* MHD now takes care about SIGPIPE handling by blocking it in internal
threads and avoiding functions (like sendfile()) that could generate
SIGPIPE when blocking of this signal is not possible.
* Fixed crash in PostProcessor.
* Fixed several resources leaks in corner cases.
* Improved thread sync, thread safety and fixed one use-after-free under
special conditions during stopping of daemon.
* Updated HTTP status codes, header names and methods from the
registries.
* Fixed functioning without listen socket and with internal threads.
* Fixed streaming of chunked responses for both HTTP and HTTPS.
* Various compatibility fixes.
Libmicrohttpdの機能の詳細はこちらで確認可能です。