Article
Evaluating Boost 1.92.0: stricter HTTP parsing and CUDA support
Boost 1.92.0 tightens Beast HTTP parsing and adds CUDA support for Charconv integer conversions and Decimal types. Distinguishing changes to existing traffic from opt-in features and Windows DLL installation changes helps focus upgrade testing.
Share
Koharu's reading tip
Even without adopting a new feature, accepted traffic and DLL locations can change. Look at both the libraries your application uses and the assumptions around them.

Updating Boost can change an existing application even when you do not plan to use a new API. With Boost 1.92.0, the useful questions concern which traffic is accepted and where code can execute and be deployed.
The ISO C++ Blog post dated September 29, 2026 provides an opportunity to examine those upgrade decisions. The release itself was announced by the Boost Release Team on August 12, 2026.
Separating changes that take effect upon upgrading from features requiring explicit configuration helps determine what to test first. Start with existing traffic, then consider CUDA requirements and deployment.
Beast tightens the conditions for accepting existing HTTP traffic
In 1.92.0, Boost.Beast rejects messages containing both Content-Length and Transfer-Encoding, regardless of field order. It also rejects chunked transfer encoding in HTTP/1.0 requests and strengthens validation of quoted strings in chunk extensions. The Beast release history identifies the parser changes.
Why does that header combination matter? Content-Length specifies body length, while chunked encoding determines the end through the chunk sequence. Different interpretations along the request path can produce disagreement about message boundaries. RFC 9112, Section 6.3 says a message containing both fields might indicate request smuggling or response splitting and ought to be handled as an error.
A successful build cannot establish compatibility here. For custom HTTP senders or proxy integration tests, distinguish these input conditions:
| Test input | Behavior to examine in 1.92.0 |
|---|---|
Content-Length followed by Transfer-Encoding |
Reject the combination |
| The same fields in reverse order | Reject it in this order too |
| An HTTP/1.0 request specifying chunked transfer encoding | Reject the request in the parser |
These are test scenarios derived from the documented changes. Running valid traffic alongside them helps distinguish intentional rejection from an application regression.
The release also fixes a Boost.URL heap buffer overflow in normalize_path for URLs without an authority whose normalized path begins with //. The URL section of the official release notes documents that condition. For applications handling external input, identifying the parsers and normalization routines in use is a useful starting point for prioritizing an upgrade.
Enable CUDA support for the specific types and functions you need
After assessing existing traffic, consider whether to adopt a new execution environment. Version 1.92.0 makes Charconv integer to_chars and from_chars, and Decimal types decimal32_t, decimal64_t, and decimal128_t, usable inside CUDA kernels.
Charconv converts numbers to character buffers and back. Converting integers already held on the GPU into text is one scenario worth evaluating. The integer support should not be interpreted as support for floating-point conversions too.
The Charconv CUDA documentation requires BOOST_CHARCONV_ENABLE_CUDA. Functions marked BOOST_CHARCONV_HOST_DEVICE can execute on both host and device; other functions remain host-only. Check the actual functions you call, beyond the library-level announcement.
Decimal has a separate configuration. Its configuration macro documentation describes enabling supported types and functions with BOOST_DECIMAL_ENABLE_CUDA when compiling with NVCC. This also defines BOOST_DECIMAL_DISABLE_EXCEPTIONS and BOOST_DECIMAL_DISABLE_CASSERT, so validation relying on exceptions or assertions cannot simply be carried over.
Adoption therefore involves deciding where inputs and results are validated as well as whether the target functions compile. Evaluate performance across the application workload, including necessary data transfers. Adding device support alone does not establish a speedup.
Complete the upgrade by checking DLL placement and C++ requirements
Passing communication and computation tests is not the end of deployment testing. In 1.92.0, b2 install changes the default destination for Windows DLLs from the library directory to the binary directory: <PREFIX>/lib becomes <PREFIX>/bin. Cygwin already used the latter.
Packaging scripts that collect DLLs from lib need their collection path reviewed. The new --dlldir option can override the destination; the General Notes in the official release notes describe this compatibility option.
The same notes explain that CMake configuration generated by b2 install now accepts header-only libraries as find_package components. For example, find_package(Boost REQUIRED COMPONENTS mp11) defines Boost::mp11, aligning consumption with a CMake-built Boost installation. Conversely, COMPONENTS ALL has been removed, so projects using it should review their configuration and request the components they need explicitly.
For language requirements, this is the last release of Heap and Lockfree supporting C++14; future releases require C++17. That announcement concerns those libraries. It does not mean all of Boost 1.92.0 now requires C++17. Read the Heap and Lockfree entries against the libraries your project actually uses.
Deciding whether to move to Boost 1.92.0 becomes clearer when each library is mapped to the assumptions around it. Test acceptance and rejection behavior first where external input is involved, establish function and error-handling requirements when adopting CUDA, and finish by launching the packaged application. This sequence keeps feature evaluation and the work needed to preserve existing application behavior distinct.
Source
- Title: Boost 1.92.0 is out.
- URL: https://isocpp.org//blog/2026/09/boost-1.92.0-is-out
Share
Related Articles
These articles share nearby categories or tags, so you can keep reading along the same thread.




