Highlights
- Publishes the Goodnotes Swift wrapper at a stable
0.0.2tag, replacing the need to pin the wrapper commit directly. - Updates the vendored cpp-httplib header from 0.30.1 to 0.51.0. This includes upstream request/response parsing, redirect, proxy/TLS, chunked-body, header, and cookie security hardening accumulated through the intermediate releases.
- Aligns the CMake dependency pins with maintained releases:
- cpp-httplib 0.11.3 → 0.51.0
- JSON for Modern C++ 3.11.2 → 3.12.0 (the SwiftPM-vendored header was already 3.12.0)
- GoogleTest 1.12.0 → 1.17.0
- libmaxminddb 1.7.1 → 1.13.3
- Hardens concurrent ruleset polling, evaluation overrides, event flushing, singleton initialization/shutdown, and retained
Layerexposure callbacks. - Adds Swift wrapper tests, deterministic local C++ HTTP fixtures, concurrent lifecycle/polling tests, and standalone Linux CI for both SwiftPM and CMake.
Migration notes
- The minimum CMake version is now 3.16, matching GoogleTest 1.17.0. The library and tests continue to require C++17.
- cpp-httplib 0.31.0 introduced a default 100 MB payload limit, 0.43.0 removed previously deprecated APIs, and 0.44.0 stopped percent-decoding header values. The Statsig wrapper uses the still-supported typed
ClientandPost(..., Headers, ...)APIs and does not rely on the affected deprecated APIs or decoded-header behavior, so no wrapper source migration was required. - JSON 3.11.3 and 3.12.0 are documented as backward compatible; no source migration was required.
- The libmaxminddb APIs used here (
MMDB_open,MMDB_lookup_string,MMDB_get_value, andMMDB_close) remain compatible. - GoogleTest is test-only. Its C++17 and CMake requirements are reflected in this release.
Dependency audit
- cpp-httplib 0.30.1…0.51.0
- JSON for Modern C++ 3.11.3 and 3.12.0
- GoogleTest 1.12.0…1.17.0
- libmaxminddb 1.7.1…1.13.3
Validation
- GitHub Actions on Ubuntu: SwiftPM tests passed 2/2; CMake passed 12/12 runnable tests.
- macOS with Xcode 26.5 / Swift 6.3.2: SwiftPM tests passed 2/2; CMake passed 12/12 runnable tests.
- Full C++ ThreadSanitizer suite: 12/12 runnable tests passed with no sanitizer findings.
- Three legacy tests requiring a real
test_api_keyare skipped when that credential is unavailable. - Vendored upstream artifact SHA-256:
- cpp-httplib header:
dfbaccb76432ed6d56ddd9983fd9d262b61ba6ba0958f6b00db35c802607bd35 - cpp-httplib license:
4b45cbe16d7b71b89ae6127e26e0d90a029198ca5e958ad8e3d0b8bbed364d8b - JSON for Modern C++ header:
aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63
- cpp-httplib header:
Direct users of statsig::Server should continue to serialize the lifetime of an explicitly constructed Server instance against calls made on that same instance. The global C++ API and Swift wrapper lifecycle are serialized by this release.