V5 checklist
- Dominant language
- F#
- Stars
- 501
- Forks
- 70
- PR merge metrics
- No merged PRs in 30d
Description
Breaking change/things that are ugly queue:
- Add OpenTelemetry integration
- `CosmosStore`: will shift to [using `Azure.Cosmos` when that happens](https://github.com/Azure/azure-cosmos-dotnet-v3/discussions/2601). When that work might happen is subject to change. Here's an example of [some teaser info](https://github.com/Azure/azure-cosmos-dotnet-v3/issues/2976#issuecomment-1011158036).
- `Cosmos`: Check if newer query engine optimizations might yield a better indexing strategy, see linked article in https://github.com/jet/equinox/issues/274 (perhaps it can borrow the one that works in DynamoDB now given this enhancement?)
- provide a way to specify a load hint that allows you to target a specific `Version` (or force a full Reload?)
V4 vs V3:
- StreamName -> StreamId: stores take the Category name, Decider.forStream/forRequest only take a StreamId #419
- remove Equinox.Core ref to Equinox; remove Equinox.Core ref from Stores #420
- migrate to `IAsyncEnumerable`
- changed `maxAttempts` and associated throwing behavior from `Decider` ctor to `Transact`'s `attempts` argument #310
- convert internal impl to `task`; expose same (but retaining `Async` as the primary interface in order to avoid leaking continuation token mess) #337 #338
- `EventStoreDb`: in `CosmosStore`, `BatchingPolicy`/`QueryMaxItems` etc are de-emphasized - perhaps same should be done for the EventStore equivalents? (e.g. `EventStore.Context` has an overload that requires one) #338
- remove explicit full FW support (libs move to `netstandard2.1`/`net6.0` #310
- run [tests and compilation on `net6.0` #310
- rename Equinox.EventStore.Log.Event -> Metric to match CosmosStore #311
- rename Equinox.SqlStreamStore.Log.Event -> Metric to match CosmosStore #311
- fixes Equinox.SqlStreamStore.Log.PropertyTag to `"ssEvt"` #311
- adds an overload of `Transact(interpret : 'state -> Async<'event list>)` #314
- renames `Decider.TransactAsync` to `Transact` #314
- ~replaces `XXXStoreCategory.FromMemento` stuff with a `LoadOption.FromMemento` (The system that previously used this has been decommissioned, so we may consider removing it until we have realistic use case justifying its continued existence) #308~ later removed
- renames `AsyncCacheCell` -> `TaskCell` (and `AsyncLazy` -> `LazyTask`) #432
V3 breaking changes compared to V2:
- Equinox.EventStore V2 depends on EventStore.ClientApi V5.x; V3 depends on 20.6 (NOTE: EventStore Grpc and EventStore.Client 20.x require`protobuf-net 4.x whereas EventStore.Client v5.x requires protobuf-net 3.x).
- Equinox.Cosmos V2 depends on Microsoft.Azure.DocumentDb.Core V2.x whereas V3 ~will depend on Azure.Cosmos (aka V4)~ targets `Microsoft.Azure.Cosmos` for now, as MS have parked `Azure.Cosmos` (aka V4) for the foreseeable
- V2 supports full FW and/or netcore 1.x, with tools on 2.x, V3 tools are `netcoreapp3.1`
- V3 Changed default connection mode to `Direct` to match V3 SDK #281
- V3 `maxItemsInTip` is mandatory in CosmosStoreContext ctor #284
- V2 and V3 both support inhibiting certificate validation. ~Equinox.Cosmos V4 does not currently implement support for ignoring cert validation for e.g. use with Cosmos Simulator. [Now `Microsoft.Azure.Cosmos` V 3.11 adds a custom HTTP factory](https://devblogs.microsoft.com/cosmosdb/httpclientfactory-cosmos-db-net-sdk/), this could be implemented)~ #236 resolves this; presumably V4 will offer similar when rebased
Contributor guide
Assessment
This issue has not been assessed yet.