Skip to content

v9.0.0

Compare
Choose a tag to compare
@adams85 adams85 released this 21 Nov 16:29
· 17 commits to master since this release
70c1d69

New features and improvements:

  • Add support for the new Config JSON v6 format: update the config model and implement new features in setting evaluation logic. (#75)
  • Overhaul setting evaluation-related logging and make it consistent across SDKs.
  • Significant performance improvements to setting evaluation, especially when info level logging is turned off:
Method LogInfo Mean Error StdDev Gen0 Allocated
MatrixTests_ConfigV5 False 47.31 ms 1.741 ms 0.095 ms 9909.0909 39.61 MB
MatrixTests_ConfigV6 False 17.25 ms 3.376 ms 0.185 ms 3468.7500 13.84 MB

Bug fixes:

  • Hook event handlers which close over the client instance should not prevent the client from being collected by the GC when user has no more references to the client instance. (#82)
  • Fix a minor bug in the Task.WaitAsync polyfill: potential cancellation or exception needs to be propagated in every case. (#83)
  • Avoid making an unnecessary copy of the input string when deserializing JSON in .NET 4.5.

Breaking changes (listed in the order of expected impact):

  • Change the type of the User.Custom property from IDictionary<string, string?> to IDictionary<string, object> to allow other values than string but disallow null values. (#75)
  • The config JSON v5 format is no longer accepted by flag overrides. If you use this feature, you will need to convert your override JSON file(s) to the v6 format. You can do this using the config-json convert v5-to-v6 command of the ConfigCat CLI tool.
  • Rename the MatchedEvaluationRule property to MatchedTargetingRule and the MatchedEvaluationPercentageRule property to MatchedPercentageOption in EvaluationDetails.
  • Throw ArgumentException when the SDK key passed to ConfigCatClient.Get is in invalid format (unless the client is set up to use local-only flag override behavior).
  • Change config model (IConfig and related interfaces/enums).
  • Slightly change the behavior of the ClientReady hook in Auto Poll mode to fire after the completion of the first fetch operation - regardless of success or failure - to make the behavior consistent with other SDKs. (#79)
  • Change the User.AllAttributes property into a method (GetAllAttributes) as it allocates under the hood.
  • Revert EvaluationDetails and RefreshResult from records to plain types as value equality is not implemented correctly (and it would not be really useful anyway).