Skip to content

Releases: GoodNotes/swift-statsig-server

Release list

0.0.2

Choose a tag to compare

@0xpablo 0xpablo released this 28 Jul 17:06

Highlights

  • Publishes the Goodnotes Swift wrapper at a stable 0.0.2 tag, 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 Layer exposure 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 Client and Post(..., 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, and MMDB_close) remain compatible.
  • GoogleTest is test-only. Its C++17 and CMake requirements are reflected in this release.

Dependency audit

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_key are 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

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.

0.0.1

Choose a tag to compare

@0xpablo 0xpablo released this 02 Feb 21:07

Initial Release