| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 2025.10.31 source code.tar.gz | 2025-11-01 | 36.1 MB | |
| 2025.10.31 source code.zip | 2025-11-01 | 36.4 MB | |
| README.md | 2025-11-01 | 4.2 kB | |
| Totals: 3 Items | 72.5 MB | 0 | |
This release introduces a comprehensive overhaul of the SDK's diagnostic and testing infrastructure, centered around a new zero-cost logging framework, a powerful serialization system, and a fluent assertion utility. The error handling mechanism has been significantly enhanced to provide richer, more structured diagnostic messages. This release also modernizes all README.md examples, refactors core components for improved performance and thread-safety, and enhances the CI/CD pipeline.
The old logs fade, a silent, costly past,
New macros rise, expressive and fast.
With sinks and filters, a structured, clear design,
And fluent assertions, that truly align.
A core reforged, robust and so keen,
The finest framework, the best we have seen.
✨🚀🔧
- Features
- Modern Logging Framework: Replaced the legacy logger with a new zero-cost, structured logging system. It features a sink/filter architecture, JSON output, and expressive macros (
log_entry,log_scope,log_forward) that are compiled out in release builds for zero performance overhead. - Serialization Framework: Introduced a powerful, concept-based serialization framework to convert C++ types into a structured representation, used by the new logging and error systems.
- Fluent Assertion Utility: Added
docwire::ensure, a zero-cost, exception-throwing assertion utility for writing expressive and robust release-build validations (e.g.,ensure(value) > 5;). - Safe Environment Variable Access: Introduced
docwire::environment::get, a safe and convenient wrapper for accessing environment variables. -
Endian-Aware Binary Reader: Added
binary::reader, a new utility for safely parsing little-endian binary data from any stream-like source. -
Improvements
- Refactored
charset_converter: Overhauled thecharset_converterfor improved performance, correctness, and thread-safety by serializingiconv_opencalls with a global mutex to resolve a data race in glibc. - Refactored
XLSBParser: TheXLSBParsernow uses the newbinary::reader, resulting in cleaner, more robust, and endian-aware parsing logic. - Optimized Test Suite: All API tests now run in a single process, significantly improving test suite performance, especially under sanitizers.
-
CI Enhancements:
- The CI build matrix has been simplified and made more robust.
- Conditional execution for OpenAI tests is now supported via the
run-tests:openaipull request label, manual dispatch options, and repository-specific schedule triggers.
-
Refactor
- Enhanced Error Handling: The error handling framework has been refactored to use the new serialization system and support multiple context items, providing more detailed and structured diagnostic messages.
-
Type Name Normalization: The
type_nameutility has been refined to more robustly handle C++ standard library implementation artifacts, improving cross-platform consistency. -
Fixes
- Fixed a bug where
unique_identifiercounters could be reset by moving the static member definition to a.cppfile, ensuring a single instance across shared libraries. - Corrected a lambda capture issue in
pix_cacheto capturedata_sourceby reference, improving correctness and performance. -
Prevented Leptonica error message accumulation by clearing the
stderrbuffer on each use. -
Documentation
- Modernized README: Replaced all full code examples in
README.mdwith concise snippets that use the newensureAPI for assertions. Each snippet now links to its corresponding full, verifiable source file in thetests/directory. -
Updated Logging Section: The logging documentation has been completely rewritten to reflect the new framework's features and usage.
-
Tests
- Log Sanitization: Automated tests now sanitize expected log output to robustly handle differences in function name formatting across compilers and platforms.
- README Snippet Verification: Added a new automated test to ensure all code snippets in
README.mdare consistent with their full source examples.