Sat 28 February 2026

🔌 Sane C++ February 26

SC

Welcome to the February 2026 update!
This month introduces SerialPort, named-pipe end-to-end support, and major async backend wakeup/process handling improvements.

SerialPort and Named Pipes

February has been all about connecting low-level I/O pieces end to end. A new cross-platform SerialPort library landed with dedicated tests (including com0com coverage), while named-pipe support now spans File, Async, and AsyncStreams.

The result is that local IPC and serial communication can now be handled with the same async building blocks used by the rest of the project, with better test coverage across platform-specific behavior.

Detailed list of commits:

Async Runtime

Async received several runtime reliability upgrades this month. The new AsyncFileSend primitive is now part of the core, and multiple fixes improved cancellation safety and timer sequencing.

Backend wakeup/process handling was also strengthened with platform-native primitives (eventfd, EVFILT_USER, pidfd) so event loops can coordinate shared wakeups and process exits more predictably, especially on Linux.

Detailed list of commits:

Http and AsyncWebServer

Http now uses AsyncFileSend for file server transfers, and header accumulation got a small optimization. At the same time, AsyncWebServer and examples gained more runtime knobs: selecting ports, forcing epoll backend options, and configuring max clients / I/O threads.

These changes make it easier to benchmark and stress the server in real scenarios, while keeping setup fully self-hosted.

Detailed list of commits:

Testing and Build

A good portion of the work focused on making test runs more parallel-friendly and less conflicting. BuildTest and PluginTest fixtures are now isolated better, while SCTest supports configurable port offsets and opt-in BuildTest execution for local workflows.

This should reduce flakiness when multiple configurations or runs happen at the same time.

Detailed list of commits:

Others

The rest of the month includes practical API and platform cleanups across multiple libraries. From read error parsing in File, to ProcessEnvironment::get, to exposing SO_REUSEADDR, this batch improves day-to-day ergonomics while tightening edge-case behavior.

Detailed list of commits:

See you next month!