Skip to content

Releases: configcat/.net-sdk

v6.4.8

03 Mar 21:48
Compare
Choose a tag to compare
  • Readd System.Text.RegularExpressions version 4.3.1 due to SNYK security report.

v6.4.7

03 Mar 21:37
Compare
Choose a tag to compare
  • Remove unused System.Text.RegularExpressions dependency.

v6.4.6

03 Mar 21:12
Compare
Choose a tag to compare
  • Fix the wait time calculation in auto-polling mode.

v6.4.3

03 Mar 16:09
Compare
Choose a tag to compare
  • Fix README links displayed on the NuGet package page.

v6.4.0

03 Mar 15:38
Compare
Choose a tag to compare
  • Introduced a new configuration API replacing the builder pattern:

    ConfigCatClientBuilder
        .Initialize(SDKKEY)
        .WithLogger(consoleLogger)
        .WithAutoPoll()
            .WithMaxInitWaitTimeSeconds(5)
            .WithPollIntervalSeconds(60)
        .Create();

    Will look like this:

    new ConfigCatClient(options =>
    {
        options.SdkKey = SDKKEY;
        options.PollingMode = PollingModes.AutoPoll(TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(5));
        options.Logger = consoleLogger;
    });

    The old API is still available it's just marked with the [Obsolete] attribute.

  • GetAllValues() and GetAllValuesAsync():
    These methods are now evaluating all feature flags and settings into an IDictionary<string, object>.

  • FlagOverrides:
    It's now possible to feed the SDK with local feature flag and setting values.

    • Dictionary
      var dict = new Dictionary<string, object>
      {
          {"enabledFeature", true},
          {"intSetting", 5},
      };
      
      using var client = new ConfigCatClient(options =>
      {
          options.SdkKey = "localhost";
          options.FlagOverrides = FlagOverrides.LocalDictionary(dict, 
              OverrideBehaviour.LocalOnly);
      });
    • File
      using var client = new ConfigCatClient(options =>
      {
          options.SdkKey = "localhost";
          options.FlagOverrides = FlagOverrides.LocalFile("path/to/file", 
              autoReload: false, 
              overrideBehaviour: OverrideBehaviour.LocalOnly);
      });

    Three behaviours available: LocalOnly, LocalOverRemote, and RemoteOverLocal.
    With LocalOnly the SDK switches into a complete offline state, and only the override values are served.
    LocalOverRemote and RemoteOverLocal merge the local and remote feature flag values respecting one or another in case of key duplications.

  • Changes in JSON handling:
    In respect of #30 System.Text.Json is favored over Newtonsoft.Json in frameworks newer than net45. System.Text.Json is not available for net45 so that target remains using Newtonsoft.Json.

  • net5.0 and net6.0 target frameworks.

  • HttpTimeout configuration option.

  • Solution for #26.
    To prevent possible deadlocks the following changes were applied:

    • Created a synchronous extension for the existing fully async IConfigCache. In the future we will replace that interface with the new one (IConfigCatCache) that has now the sync API and inherits the async API from IConfigCache. IConfigCache was marked with [Obsolete] to maintain backward compatibility. InMemoryConfigCache now implements both sync and async APIs through IConfigCatCache.
    • Extended the config services (AutoPoll, LazyLoad, ManualPoll) with synchronous branches that are using the new cache's sync / async methods in respect of sync and async customer calls.
    • Extended the HttpConfigFetcher with a synchronous Fetch that uses the HttpClient's Send() method where it's available (net5.0 and above). Below net5.0 the synchronous path falls back to a functionality that queues the HTTP request to a thread pool thread and waits for its completion. This solution prevents deadlocks however, it puts more load on the thread pool.
  • CI Changes:

v6.2.1

20 Sep 21:02
Compare
Choose a tag to compare
  • Reducing the number of json deserializations between GetValue calls.

v6.1.20

08 Sep 10:53
Compare
Choose a tag to compare
  • Bugfix: The SDK's JSON serialization behavior is not depending on the JsonConvert.DefaultSettings anymore.

v6.1.0

07 Jan 00:40
Compare
Choose a tag to compare

Bugfix:

  • #17 (Improper use of Task .Result when making async methods sync)

v6.0.0

12 Oct 11:17
Compare
Choose a tag to compare

Addressing global data handling and processing trends via Data Governance feature. Customers can control the geographic location where their config JSONs get published to. See the docs.
We are introducing a new DataGovernance initialization parameter. Set this parameter to be in sync with the Data Governance preference on the Dashboard.

Breaking changes:

  • Custom cache implementations should implement the new cache interface using key parameter in the get/set methods.

v5.3.77

11 Sep 08:11
a20c2d7
Compare
Choose a tag to compare

Features:

  • VariationID

Bugfix:

  • Issue#11 (Is string.Empty a valid argument for the User constructor?)