Skip to content

Commit 05d6248

Browse files
committed
Release v2.0.0
1 parent 5501459 commit 05d6248

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

CHANGELOG.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2.0.0]
9+
10+
### Changed
11+
12+
- **BREAKING**: SDK now builds with `-fno-exceptions` and does not use exceptions internally
13+
- **BREAKING**: All error handling is now done through logging and returning default values
14+
- **BREAKING**: Removed `setIsGracefulFailureMode()` method - SDK always operates in "graceful" mode
15+
- **BREAKING**: Removed custom exception classes (`FlagConfigurationNotFoundException`, `FlagNotEnabledException`, `SubjectAllocationException`)
16+
- **BREAKING**: `EppoClient` constructor now takes `ConfigurationStore&` by reference instead of `std::shared_ptr<ConfigurationStore>`, allowing SDK consumers to choose their own synchronization strategy
17+
- Constructor preconditions (null checks, size validations) now use `assert()` instead of throwing exceptions
18+
- Internal functions now return `std::optional` or error codes instead of throwing exceptions
19+
- Configured nlohmann/json with `JSON_NOEXCEPTION` to eliminate JSON parsing exceptions
20+
21+
### Added
22+
23+
- Full compatibility with `-fno-exceptions` projects
24+
- Documentation on error handling and constructor preconditions
25+
26+
### Benefits
27+
28+
- 10-20% smaller binary size without exception support
29+
- Better performance (no exception unwinding overhead)
30+
- Compatible with embedded systems and other exception-free environments
31+
- Simpler error handling model - always returns defaults and logs errors
32+
33+
### Migration Guide
34+
35+
If you were using v1.0.0:
36+
37+
1. Remove all `try-catch` blocks around SDK method calls - they no longer throw
38+
2. Remove calls to `setIsGracefulFailureMode()` - this method no longer exists
39+
3. Update `EppoClient` instantiation - pass `ConfigurationStore` by reference instead of as `shared_ptr`:
40+
- Before: `auto client = std::make_shared<EppoClient>(configStorePtr);`
41+
- After: `EppoClient client(configStore);` (ensure `configStore` outlives `client`)
42+
4. Ensure constructor preconditions are met (non-null loggers, positive cache sizes)
43+
5. Monitor errors through the `ApplicationLogger` interface instead of catching exceptions
44+
845
## [1.0.0] - 2025-11-14
946

1047
Initial release of the Eppo C++ SDK.

src/version.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#ifndef EPPOCLIENT_VERSION_HPP
22
#define EPPOCLIENT_VERSION_HPP
33

4-
#define EPPOCLIENT_VERSION_MAJOR 1
4+
#define EPPOCLIENT_VERSION_MAJOR 2
55
#define EPPOCLIENT_VERSION_MINOR 0
66
#define EPPOCLIENT_VERSION_PATCH 0
7-
#define EPPOCLIENT_VERSION "1.0.0"
7+
#define EPPOCLIENT_VERSION "2.0.0"
88

99
namespace eppoclient {
1010

0 commit comments

Comments
 (0)