Releases: Eppo-exp/cpp-sdk
Releases · Eppo-exp/cpp-sdk
v2.0.2
v2.0.1
What's Changed
- fix: build issues with
-fmodulesflag by @greghuels in #47
Full Changelog: v2.0.0...v2.0.1
v2.0.0
Added
EvaluationClient- lightweight client for flag evaluation that can be used for manual synchronizationConfigurationStoreconvenience API for setting configuration by value:ConfigurationStore(Configuration config)- constructor accepting Configuration by valuesetConfiguration(Configuration config)- setter accepting Configuration by value
- Move constructor and move assignment operator for
Configurationclass parseConfiguration()convenience function for simplified configuration parsing:parseConfiguration(flagConfigJson, error)- parse flags only with error feedbackparseConfiguration(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()andparseBanditResponse()functions returningParseResult<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-exceptionsflag - Abort-free configuration parsing - all parsing operations can now fail gracefully
Changed
- BREAKING:
ConfigurationStore::getConfiguration()now returnsstd::shared_ptr<const Configuration>instead ofConfigurationby value- Eliminates expensive configuration copies on every flag evaluation
- BREAKING:
Configurationconstructors 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
ConfigurationStorenow uses atomic operations instead of mutex internally for better performance- BREAKING: Parsing functions now report errors instead of silently skipping invalid entries:
parseConfigResponse()andparseBanditResponse()returnParseResult<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
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