Skip to content

Releases: Eppo-exp/cpp-sdk

v2.0.2

14 Jan 18:29
v2.0.2
f7e7461

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.0.1...v2.0.2

v2.0.1

13 Jan 16:54
v2.0.1
d769c1a

Choose a tag to compare

What's Changed

Full Changelog: v2.0.0...v2.0.1

v2.0.0

03 Dec 12:01
v2.0.0
5239950

Choose a tag to compare

Added

  • EvaluationClient - lightweight client for flag evaluation that can be used for manual synchronization
  • ConfigurationStore convenience API for setting configuration by value:
    • ConfigurationStore(Configuration config) - constructor accepting Configuration by value
    • setConfiguration(Configuration config) - setter accepting Configuration by value
  • Move constructor and move assignment operator for Configuration class
  • parseConfiguration() convenience function for simplified configuration parsing:
    • parseConfiguration(flagConfigJson, error) - parse flags only with error feedback
    • parseConfiguration(flagConfigJson, banditModelsJson, error) - parse flags and bandits together
    • Provides simple string-based error handling for common use cases
    • Built on top of ParseResult<T> for structured error collection
  • parseConfigResponse() and parseBanditResponse() functions returning ParseResult<T>:
    • Support parsing from both JSON strings and input streams
    • Collect all parsing errors instead of failing on first error
    • Enable partial success handling (return value with warnings)
  • New ParseResult<T> template for structured error reporting during parsing
  • Support for building without exceptions via -fno-exceptions flag
  • Abort-free configuration parsing - all parsing operations can now fail gracefully

Changed

  • BREAKING: ConfigurationStore::getConfiguration() now returns std::shared_ptr<const Configuration> instead of Configuration by value
    • Eliminates expensive configuration copies on every flag evaluation
  • BREAKING: Configuration constructors now take parameters by value for better performance
  • BREAKING: SDK now uses RE2 regex library instead of std::regex
    • RE2 is not vulnerable to ReDoS (Regular Expression Denial of Service) attacks
    • RE2 works without exceptions, enabling exception-free builds
    • This change improves security and reliability
  • ConfigurationStore now uses atomic operations instead of mutex internally for better performance
  • BREAKING: Parsing functions now report errors instead of silently skipping invalid entries:
    • parseConfigResponse() and parseBanditResponse() return ParseResult<T> with error collection
    • Use the new parseConfiguration() convenience function for simplified error handling
    • Errors are aggregated and returned rather than causing silent data loss
  • BREAKING: client.getBoolAssignment renamed to client.getBooleanAssignment for consistency with getBooleanAssignmentDetails

Full Changelog: v1.0.0...v2.0.0

v1.0.0

14 Nov 15:10
v1.0.0
9b06886

Choose a tag to compare

What's Changed

  • feat: basic flag evaluation functionality by @greghuels in #1
  • chore: prep test workflow for triggering when test data changes by @greghuels in #5
  • feat: bandit evaluation by @greghuels in #3
  • feat: assignment and bandit logger deduplication by @greghuels in #6
  • feat: new getSerializedJSONAssignment() method by @greghuels in #7
  • feat: setIsGracefulFailureMode(false) re-throws assignment exceptions by @greghuels in #8
  • README.md documentation and example apps by @greghuels in #9
  • chore: add distribution infrastructure by @greghuels in #11
  • feat: evaluation details by @greghuels in #10
  • chore: performance and memory checks by @greghuels in #12

Full Changelog: https://github.com/Eppo-exp/cpp-sdk/commits/v1.0.0