Repository navigation
0.20.1 - -Free Evaluation Hot Path (High-Concurrency Perf), Sticky-Value Enforce Options (Rust/Java), Exposure Dedupe Cap in All Bindings
Breaking Changes
- N/A
New Features
- Rust:
enforce_overrides/enforce_targetingonExperimentEvaluationOptionsandLayerEvaluationOptions— when a user has a persisted sticky value, a matching console override rule (enforce_overrides) or a failed targeting re-check (enforce_targeting) now takes precedence
over the persisted value, mirroring the legacy Java server SDK's sticky-evaluation behavior. Defaults unchanged (both off).
- Java:
GetExperimentOptions/GetLayerOptionsgainenforceOverrides+enforceTargeting(new four-arg constructor; existing constructors unchanged, flags default tofalse).
- Node.js, Python, Java, .NET, PHP, Elixir, C++:
exposure_dedupe_max_keysStatsigOption — configurable cap (default100_000) on the bounded LRU backing exposure dedupe. Previously only settable from Rust, Go, and the C FFI options JSON; now exposed in every binding.
Improvements & Fixes
- Go: fixed a process-fatal SIGSEGV under concurrent evaluation (double-free/return-value swap in purego's FFI frame pooling) — bumped
ebitengine/puregoto v0.10.1; also nil-guard core responses inGetFeatureGate/GetDynamicConfig/GetExperiment/GetLayer(#53) - All SDKs (rust core): evaluation hot path is now lock-free — refcount-free interning and a sharded eval-hash cache remove the remaining serialization points under concurrent load. In a reproduced high-concurrency workload (4-CPU pod, production-scale ruleset), throughput improved
from 36k evals/sec with p99 = 100ms to 80k evals/sec with p99 = 200µs. Resolves the reported Java Core SDK performance issue and incorporates the community-contributed intern-store sharding fix from the Elixir SDK.
Included In This Release
- 8f97829 statsig-kong[bot]
- chore: bump version to 0.20.1-rc.2607140133
- b20f206 Xin Li (Bot)
- [automated] sync rc with main
- ebe32f0 statsig-kong[bot]
- [automated] chore: bump version to 0.20.1-rc.2607132133 (#3058)
- b822d50 statsig-kong[bot]
- chore: bump version to 0.20.1-rc.2607132132
- fa494e8 statsig-kong[bot]
- [automated] sync rc with main (#3057)
- b267db8 Xin Li (Bot)
- [automated] sync rc with main
- e636e62 statsig-kong[bot]
- [automated] chore: bump version to 0.20.0-rc.1 (#3056)
- 76f7efc statsig-kong[bot]
- [automated] chore: bump version to 0.19.9-beta.2607110300 (#3054)
- 5232200 Peter Zhu
- [S2SDK-115] java: expose enforceOverrides + enforceTargeting persistent-assignment options (#3041)
- b26a764 Sandeep Madugula
- [S2SDK-140] Make the eval hot path lock-free: refcount-free interning, sharded eval-hash cache (#3040)
- 52f6bcd statsig-kong[bot]
- [automated] chore: bump version to 0.19.9-beta.2607100302 (#3053)
- 4401edf Peter Zhu
- [S2SDK-114] rust-core: add enforceOverrides + enforceTargeting persistent-assignment options (#3030)
- ecd3da7 Peter Zhu
- feat: expose exposure_dedupe_max_keys option in all SDK bindings (#3013)
- 5fd8b51 statsig-kong[bot]
- [automated] chore: bump version to 0.19.9-rc.2607090505 (#3039)
- 1f92bd7 statsig-kong[bot]
- [automated] sync rc with main (#3038)
Full Changelog: 0.20.0...0.20.1