Revision control

Copy as Markdown

This documents changes that were made to the nimbus-sdk before it was fully
merged into the application-services repository. New entries should be added
to the application-services repo file, not here.
# 0.10.0 (_2021-03-18_)
## ⚠️ Breaking changes ⚠️
- Changed `AppContext` struct to include non-optional `app_name` and `channel` fields per [ADR-0004](
# 0.9.0 (_2021-03-09_)
## What's Changed
- Upgraded uniffi to 0.8.0. This is to allow nimbus to be includable in the iOS megazord.
## ⚠️ Breaking changes ⚠️
- Changed `Error` to `NimbusError`. This is so as not collide with other implementations of Error in the megazord, (including Swift's).
# 0.8.2 (_2021-02-23_)
## What's Changed
- The project no longer ships its own `build.gradle` and related Android build files.
These were not being used in practice and so were removed to avoid confusion.
Release artifacts will continue to be built from the application-services repo
# 0.8.1 (_2021-02-17_)
## What's New
- Defaulting `feature_id` and `feature_ids` to the empty string, to allow migration from existing
experiment formats to continue to work.
# 0.8.0 (_2021-02-11_)
## What's New
- `get_experiment_branch` will now search both by experiment slug and feature id. Because this
allows the client to (mostly?) not care what the experiment slug is, it means that it is now
possible to restart some experiments that had problems without having to configure a whole new
# 0.7.2 (_2021-02-04_)
## What's New
- A new `reset_telemetry_identifiers` method has been added; consumers should arrange to call
this method if the user opts out of telemetry at the application level, in order to avoid
accidental tracking of users who disable then re-enable telemetry.
# 0.7.1 (_2021-01-28_)
## What's New
- Avoid the use of unsigned "experimental" kotlin types.
# 0.7.0 (_2021-01-28_)
## What's New
- Split up `NimbusClient.update_experiments()` into a slow `NimbusClient.fetch_experiments()`
and a fast `NimbusClient.apply_pending_experiments()` to help apps manage concurrency and
mutable state.
- Add `set_local_experiments(string)`, to help apps, build tooling for tests, and help during
startup on first time run.
- `get_experiment_branch()` no longer performs any IO, nor blocks on any other threads that
may be performing IO, making it suitable for being called from the main-thread of apps.
## ⚠️ Breaking changes ⚠️
- `NimbusClient.updateExperiments()` is removed.
- Renamed `InvalidExperimentResponse` error to `InvalidExperimentFormat`.
# 0.6.4 (_2020-12-16_)
## What's New
- Added backoff and retry support.
## What's Fixed
- Added db upgrade mechanism.
# 0.6.3 (_2020-12-09_)
## What's Fixed
- The uniffi-generated Kotlin bindings now compile correctly, thanks to an update to uniffi.
# 0.6.2 (_2020-12-08_)
## What's Fixed
- Removed unused `enrollment_id()` method, to silence dead-code warning when compiling in release mode.
# 0.6.1 (_2020-12-08_)
## What's Fixed
- Fixed spurious dead-code warning when compiling in release mode.
# 0.6.0 (_2020-12-08_)
## ⚠️ Breaking changes ⚠️
- Removed `NimbusClient.resetEnrollment`.
- `NimbusClient.{updateExperiments, optInWithBranch, optOut, setGlobalUserParticipation}`
now return a list of telemetry events. Consumers should forward these events to their
telemetry system (e.g. via Glean).
# 0.5.2 (_2020-12-10_)
## What's Changed
- Add filtering on application id.
- Addition of schema version to the schema, and validation of supported versions by the SDK.
- Removed implicit fetch of experiments on first use of the database. Consumers now must
call update_experiments explicitly in order to fetch experiments from the Remote Settings
# 0.5.1 (_2020-11-10_)
## What's Changed
- Fix the version number in `Cargo.lock`.
# 0.5.0 (_2020-11-10_)
## What's New
- Added support for global opt-out via new method
## What's Changed
- Updated uniffi and rkv dependencies to their latest
release versions.
- Switched to using the "safe mode" backend for rkv;
this can be disabled at build time by disabling the
`rkv-safe-mode` feature.
# 0.4.0 (_2020-11-06_)
## What's Changed
- Removed use of unsigned types from the Kotlin API, since these
are experimental and require opt-in from consuming apps.
- Fixed various warnings when compiling the Rust code.
# 0.3.0 (_2020-10-27_)
## What's New
Addition of
The following are features that have been implemented as part of prototyping and initial development at some point prior to adding the changelog:
- Schema definition per the [shared schema repo](
- Enrollment
- Bucket randomization
- Branch allocation
- Opt in/out
- Persistent storage of experiments
- Kotlin bindings generated by [uniffi](