-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Prepare v8.0.0-preview1 release (#67)
* Reduce memory allocation in async hot paths (where sync completion is likely) * Back IConfigCatLogger.LogLevel with a volatile field as it may be accessed from multiple threads * Revise XML documentation to improve consistency and wording (with special regard to terminology) * Enable Source Link and deterministic build * Get rid of redundant release notes in CHANGELOG.md * Clean up usings * Remove unused code * Reduce more memory allocation in async paths where sync completion is possible * Fix bug causing constant refresh in the case of flag overrides using simplified config * Slightly change flag override behavior so an unsupported value doesn't prevent other overrides + add tests * Fix finalizer-related tests * Update version
- Loading branch information
Showing
60 changed files
with
453 additions
and
525 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,205 +1 @@ | ||
### 7.2.0 | ||
|
||
- Introduced a new local dictionary override factory method: | ||
```csharp | ||
FlagOverrides LocalDictionary(IDictionary<string, object> dictionary, bool watchChanges, OverrideBehaviour overrideBehaviour) | ||
``` | ||
Where the `watchChanges` parameter indicates whether the SDK should rebuild the overrides upon each read to keep track of the source dictionary's changes. | ||
- Fix config fetcher-related error logging to include exception in the log if any. | ||
|
||
### 7.1.0 | ||
|
||
- Add new evaluation methods `GetAllValueDetails`/`GetAllValueDetailsAsync`. | ||
- Fix logging in `ConfigServiceBase.SetOnline`. | ||
- Correct behavior of `GetAllXXX` methods so `FlagEvaluated` event is also raised in case of error. | ||
- Correct reporting of "Config JSON is not present" errors and log them with error level also in the case of `GetAllXXX` methods. | ||
- Change implementation of `HttpConfigFetcher.FetchAsync` to execute only one fetch operation at a time. | ||
- Make `ProjectConfig` equality comparison consistent with other SDKs (treats `ProjectConfig` instances with the same ETag equal regardless of actual content). | ||
- Make HTTP response handling consistent with other SDKs. | ||
- Make `HttpConfigFetcher`-related error message consistent with other SDKs. | ||
|
||
### 7.0.0 | ||
- Deprecate `ConfigCatClient` constructors in favor of the new static factory method `Get`, | ||
which provides single client instances per SDK key. | ||
- Add convenience method `DisposeAll` for disposing all open clients at once. | ||
- Implement default user feature. | ||
- Implement offline mode feature. | ||
- Improve LazyLoad and AutoPoll refresh logic by taking the cache timestamp into account | ||
to fetch the config only if cached config is unavailable or stale. | ||
- Add new evaluation methods `GetValueDetail`/`GetValueDetailsAsync`, | ||
which provide more detailed information about the evaluation result. | ||
- Add hooks (events), which provide notifications of the client's actions. | ||
- Additional minor code quality and performance improvements. | ||
- Update samples to .NET 6. | ||
|
||
### 6.5.3 | ||
- Use logger wrapper everywhere internally. #39 | ||
- Improved evaluation logging. #38 | ||
|
||
### 6.5.2 | ||
- Consolidate percentage rule evaluation logs. | ||
|
||
### 6.5.1 | ||
- Add net461 to the target frameworks list to force the usage of `System.Text.Json` rather than `Newtonsoft.Json`. | ||
|
||
### 6.5.0 | ||
- Replace `FileSystemWatcher` with file polling in local file override data source. | ||
|
||
### 6.4.12 | ||
- Fix various local file override data source issues. | ||
|
||
### 6.4.9 | ||
- Move the PollingMode option to public scope. | ||
|
||
### 6.4.8 | ||
- Readd `System.Text.RegularExpressions` version `4.3.1` due to SNYK security report. | ||
|
||
### 6.4.7 | ||
- Remove unused `System.Text.RegularExpressions` dependency. | ||
|
||
### 6.4.6 | ||
- Fix the wait time calculation in auto-polling mode. | ||
|
||
### 6.4.3 | ||
- Fix README links displayed on the NuGet package page. | ||
|
||
### 6.4.0 | ||
- **Introduced a new configuration API replacing the builder pattern**: | ||
|
||
```cs | ||
ConfigCatClientBuilder | ||
.Initialize(SDKKEY) | ||
.WithLogger(consoleLogger) | ||
.WithAutoPoll() | ||
.WithMaxInitWaitTimeSeconds(5) | ||
.WithPollIntervalSeconds(60) | ||
.Create(); | ||
``` | ||
|
||
Will look like this: | ||
```cs | ||
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** | ||
```cs | ||
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** | ||
```cs | ||
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](https://github.com/configcat/.net-sdk/issues/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](https://github.com/configcat/.net-sdk/issues/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**: | ||
- Introduced new [GitHub actions for Linux and macOS builds](https://github.com/configcat/.net-sdk/actions/workflows/linux-macOS-CI.yml). | ||
- The [sonarcloud analysis](https://github.com/configcat/.net-sdk/actions/workflows/sonar-analysis.yml) is moved to a separate Action from the appveyor task. | ||
- Removed codecov completely, it will be replaced by the coverage data from sonarcloud. | ||
|
||
### 6.2.1 | ||
- Reducing the number of json deserializations between `GetValue` calls. | ||
### 6.1.20 | ||
- Bugfix: The SDK's json serialization behavior is not depending on the `JsonConvert.DefaultSettings` anymore. | ||
### 6.1.0 | ||
- Bugfix ([#17](https://github.com/configcat/.net-sdk/issues/17)) | ||
### 6.0.0 | ||
- 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](https://configcat.com/docs/advanced/data-governance/). | ||
We are introducing a new DataGovernance initialization parameter. Set this parameter to be in sync with the Data Governance preference on the [Dashboard](https://app.configcat.com/organization/data-governance). | ||
#### Breaking changes: | ||
### 7.1.0 | ||
- [API] Remove `BeforeClientDispose` hook | ||
### 7.0.0 | ||
- [API] Add new methods to the `IConfigCatClient` interface. | ||
- [API] Change `ProjectConfig` to reference type with value equality (record). | ||
- [Behavior] Slightly changes the behavior of ProjectConfig.TimeStamp (only updated when communication with the CDN servers succeeds, regardless of the returned status code.) | ||
### 6.0.0 | ||
- Custom cache implementations should implement the new cache interface using key parameter in the get/set methods. | ||
### 5.3.0 | ||
- VariationID, bugfix ([#11](https://github.com/configcat/.net-sdk/issues/11)) | ||
### 5.2.0 | ||
- Bugfix (config fetch, caching) | ||
### 5.1.0 | ||
- Remove semver nuget packages | ||
### 5.0.0 | ||
- Breaking change: Renamed `API Key` to `SDK Key`. | ||
### 4.0.0 | ||
- Supporting sensitive text comparators. | ||
### 3.2.0 | ||
- Minor fix in info level logging | ||
### 3.1.0 | ||
- Added new semantic version tests | ||
### 3.0.0 | ||
- Support new types (number, semver), detailed log entries, compressed http communication | ||
### 2.5.0 | ||
- Support custom HttpClientHandler | ||
### 2.4.0 | ||
- Add GetAllKeys() function | ||
### 2.3.0 | ||
- BaseUrl override oppurtunity | ||
- IConfigCache override oppurtunity | ||
### 2.3.0 | ||
- BaseUrl override oppurtunity | ||
- IConfigCache override oppurtunity | ||
### 2.2.1 | ||
- Bugfix (logger level) | ||
### 2.2.0 | ||
- Namespace unification | ||
### 2.1.0 | ||
- Rollout handling v2 | ||
### 2.0.1 | ||
- Bugfix | ||
### 2.0.0 | ||
- Implement rollout feature | ||
### 1.0.7 | ||
- Implement LazyLoad, AutoPoll, ManualPoll feature | ||
### 1.0.6 | ||
- Finalize logging | ||
### 1.0.5 | ||
- Implement tracing, add clear cache ability to client | ||
### 1.0.4 | ||
- Initial release | ||
Please check the [Github Releases](https://github.com/configcat/.net-sdk/releases) page for the changelog of the ConfigCat SDK for .NET. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,12 @@ | ||
# Steps to Deploy | ||
1. Run tests | ||
2. Set version in `appveyor.yml` (e.g: from `build_version: 6.5.0` to `build_version: 6.5.1`) | ||
3. Update release notes in CHANGELOG.md | ||
4. Open a PR | ||
5. When the PR is merged to master, start a deploy to NuGet.org | ||
3. Open a PR | ||
4. When the PR is merged to master, start a deploy to NuGet.org | ||
|
||
Create a new deployment on https://ci.appveyor.com/project/configcat/net-sdk/deployments | ||
6. Make sure new package is available via Nuget.org: https://www.nuget.org/packages/ConfigCat.Client | ||
7. Update and test sample apps with the new SDK version. | ||
5. Make sure new package is available via Nuget.org: https://www.nuget.org/packages/ConfigCat.Client | ||
6. Update and test sample apps with the new SDK version. | ||
|
||
*Usually it takes a few minutes to propagate.* | ||
8. Add release notes: https://github.com/configcat/.net-sdk/releases | ||
7. Add release notes: https://github.com/configcat/.net-sdk/releases |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3 changes: 0 additions & 3 deletions
3
src/ConfigCat.Client.Tests/BasicConfigCatClientIntegrationTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.