Changelog
May 1, 2026 ยท View on GitHub
The repo is versioned based on SemVer 2.0 using the tiny-but-mighty MinVer from @adamralph. See here for more information on how it works.
All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
The Unreleased section name is replaced by the expected version of next release. A stable version's log contains all changes between that version and the previous stable version (can duplicate the prereleases logs).
Unreleased
Changed
Equinox.DynamoStore: UpdateAWSSDKdependencies to 4.x (knock-on effect of updatingFSharp.AWS.DynamoDBdependency to0.13.0-beta) #480 :pray: @njlr
Added
Equinox.CosmosStore.Linq: Add LINQ querying support for Indexedunfolds #450
4.1.3 - 2026-05-01
Added
Equinox.MessageDb: Provide additional constructors that accept anNpgsqlDataSource#496 :pray: @njlr
Changed
- .NET 10 SDK update & build optimizations; Docker image update to MSSQL 2025
- Docker image update to EventStoreDB 23.10.8 without certs or TLS (but retaining 3-node cluster) #493
Equinox.CosmosStore: UpdateMicrosoft.Azure.Cosmosto >=3.58.0to remove transitive vulnerable default #489Equinox.EventStore: Correct handling forWrongExpectedVersionwhen stream empty #493Equinox.SqlStreamStore.MsSql: UpdateSystem.IdentityModel.Tokens.Jwtto remove transitive vulnerable defaults #489
4.1.2 - 2026-02-04
Fixed
Tool:eqx dumpfails for non-Cosmos targets (missing argument 'cosmos'message) #480
4.1.1 - 2025-09-24
Added
Equinox.Core.TaskCellDictionary: Helper to manage concurrent reads in View processing #477
Fixed
Tool: CorrectedNullReferenceExceptionwhen usingStreamLikeoption
4.1.0 - 2025-06-12
Added
Equinox.CosmosStore: RoundtripDandMencoding values as perDynamoStore, enabling more extensive control of compression #472Equinox.CosmosStore: UseMicrosoft.Azure.CosmosintegratedSystem.Text.Jsonsupport; added ability to specifyserializerOptions#467Equinox.CosmosStore: Group metrics by Container Name #449Equinox.CosmosStore: Group metrics by Category; split outTipactivity #453Equinox.CosmosStore: Support Ingesting unfolds #460Equinox.CosmosStore.EventsContext.Sync: Support syncing of unfolds #460eqx:-Qflag omits timestamps from console output logging #473eqx destroy: Support for deleting the items (documents) underlying a category/stream/arbitraryWHEREclause #473eqx top: Support for analyzing space usage for event and view containers by category and/or stream #473eqx dump,eqx query:-slSupport for specifying streams to dump via a CosmosDBLIKEexpression #473eqx dump:-Qstrips intervals, regularizes snapshots, logs stream names #473eqx stats:-O,-Nflags extract oldest and newest_tswithin a store #459eqx stats:-Uflag to count streams with unfolds and total number thereof #473eqx stats:-Iflag; relabel Documents as Items, retaining existing-Dflag #473
Changed
Equinox.*Store,Equinox.*Store.Prometheus: PinEquinoxdependencies to[4.0.3, 5.0.0)] #448Equinox.CosmosStore: UpdateSystem.Text.Jsondep to6.0.10per CVE-2024-43485 #470Equinox.CosmosStore: MinimumMicrosoft.Azure.Cosmosrequirement updated to3.43.1to avail of integratedSystem.Text.Jsonsupport #467Equinox.CosmosStore.CosmosStoreConnector: Removed mandatoryrequestTimeoutargument #467Equinox.DynamoStore: Up minFSharp.AWS.DynamoDBto v0.12.3-betato handle breaking change #474Equinox.MessageDb: Up minNpgsqlto v7.0.7as7.0.0is on CVE blacklistEquinox.MemoryStore: Remove unused TrySync args #466
Removed
eqx stats:-A(all stats) is now the default unless you specify >=1 of the individual stats viaESDNOflags #459Equinox.CosmosStore.CosmosStoreCategory: RemovedshouldCompressmechanism as compression is now external #472
4.0.4 - 2024-05-08
Added
Equinox.Core.Batcher: Add SettableLinger#454
4.0.3 - 2024-04-11
Fixed
Equinox:LoadOption.AnyCachedValue,LoadOption.AllowStaleprevent yielding of superseded value where overlapping call in flight #452Equinox:LoadOption.AnyCachedValue,LoadOption.AllowStaleprevent incorrectTaskCanceledExceptionoutcome where overlapping call cancelled #452Equinox:LoadOption.AnyCachedValue,LoadOption.AllowStalecorrect to ensure optimal loading where first flight was in progress #452
4.0.2 - 2024-04-08
Fixed
Equinox:LoadOption.AnyCachedValue,LoadOption.AllowStalecaches and continually yieldsTaskCanceledExceptionwhere request cancelled #451
4.0.0 - 2024-03-20
Added
Equinox:Decider.Transact,TransactExoverloads #325Equinox.LoadOption.RequireLeader: support for requesting a consistent read of a stream #341Equinox.LoadOption.AllowStale: Read mode that limits reads to a maximum of one retrieval per the defined time window #386Equinox.Categorybase class, withDeciderandStreamhelpermodules #337Equinox.DeciderCore: C# friendly equivalent ofDecider(i.e.FuncandTask) #338Equinox.ISyncContext.StreamEventBytes: Exposes stored size of events in the stream (initial impl provides it forDynamoStoreonly) #326Equinox.Core.Batching:BatcherDictionary,BatcherCacheto host concurrentBatchers#390Equinox.Core.Batching: Addlimiter: SemaphoreSlimargument to extend linger phase #427CosmosStore.CosmosStoreConnector:Connect,ConnectAsync#421CosmosStore.Exceptions: Active patterns to simplify classification in the context of Propulsion handlers #416CosmosStore.Prometheus: Addruttag to enable filtering/grouping by Read vs Write activity as perDynamoStore#321DynamoStore/DynamoStore.Prometheus: Implements the majority of theCosmosStorefunctionality viaFSharp.AWS.DynamoDB#321EventStore: Revise test rig to target a Docker-hosted cluster #317EventStoreDb: As perEventStoremodule, but using the modernEventStore.Client.Grpc.Streamsclient #196MessageDb: Implements a message-db storage backend #339 with OpenTelemetry tracing and snapshotting support #348 :pray: @nordfjordeqx init --indexUnfolds cosmos: enables querying uncompressed unfolds (seeshouldCompress) #434eqx query cosmos: Queries based on uncompressed unfolds (seeeqx init -U) #434eqx query -o FILEPATH cosmos: Allows capture of raw JSON to a file #444eqx dump:-sflag is now optionaleqx stats:-Aflag to request all stats (equivalent to requesting-ESD) #424
Changed
- Change surface APIs that use Tuples and Options to
structequivalents. Some due tostructchanges inFsCodec#82, and usetaskin hot paths #337 - Change surface APIs that use
'event listor'event seqto'event[]#411 - Raise
FSharp.Corereq to6.0.7, framework req tonet6.0#310 #337 #33 #411 - Replace
AsyncSequsage withFSharp.Control.TaskSeqv0.4.0#361 #391 Equinox: MoveSerilogdependency fromDeciderconstructor toCategory/Decider.forStream#337 #419Equinox:FsCodec.StreamIdreplaces usage ofFsCodec.StreamName#353 #378 #419Equinox.ResolveOption: rename toLoadOption#308 #413Equinox.LoadOption: RenameAllowStaletoAnyCachedValue#386Equinox.Decider: Replace'event listwith'event[]#411Equinox.Decider: ReplacemaxAttemptswith a default policy and an optional argument onTransact*APIs #337Equinox.Decider: renameDecider.TransactAsync,Decider.TransactExAsynctoTransact#314Equinox.Core.AsyncBatchingGate: renamed toBatching.Batcher#390Equinox.Core.AsyncCacheCell: renamed toTaskCell#433Equinox.Core: Now a free-standing library that a) does not depend onEquinoxb) is not depended on by the Stores (thoughCosmosStoreinlinesTaskCell) #420- Stores: Change Event Body types, requiring
FsCodecv3.0.0, withEventBodytypes switching frombyte[]toReadOnlyMemory<byte>and/orJsonElementsee FsCodec#75 #323 - Stores:
*Category.Resolve: ReplaceResolve(sn, ?ResolveOption, ?requestContext)with?load = LoadOptionparameter on allTransactandQuerymethods, andDecider.forStream/Decider.forRequestto convey request context #308 - Stores:
*Categoryctor: Add mandatorynameargument, andNameproperty #410 - Stores:
*Categoryctor: Changefoldto be aFunc(no changes to F# code required) #421 - Stores:
*Categoryctor: Changecachingto be last argument, to reflect that it is applied over the top #410 - Stores:
*Categoryctor: Changecachingandaccessto be mandatory, addingNoCachingandUnoptimizedmodes to represent the former defaults #417 CosmosStore: RequireMicrosoft.Azure.Cosmosv3.35.4#310CosmosStore: Switch to natively usingJsonElementevent bodies #305 :pray: @ylibrachCosmosStore: Switch to natively usingSystem.Text.Jsonfor serialization of allMicrosoft.Azure.Cosmosround-trips #305 :pray: @ylibrachCosmosStore: Only logbyteswhen log level isDebug#305CosmosStore.AccessStrategy.MultiSnapshot,Custom: Changelistandseqtypes toarray#338CosmosStore.CosmosStoreCategory: GeneralizecompressUnfoldstoshouldCompresspredicate #436CosmosStore.CosmosStoreCategory.TryHydrateTip: Generates a Stream State Memento based on externally loadedunfold state #434CosmosStore.CosmosStoreCategory.TryLoad: Renders a'statebased on an Unfold #434CosmosStore.Core.Initialization.initAux: Replace hard-coded manual 400 RU withmodeparameter #328 :pray: @brihadishCosmosStore.CosmosClientFactory: Moved to Core #430EventStore: TargetEventStore.Clientv22.0.0; renameConnector->EventStoreConnector#317Tool/samples/: switched to useEquinox.EventStoreDb#196
Removed
Equinox.ISyncContext.CreateMemento#413- Stores: Removed
Equinox.Coredependency; everything a store needs is either inlined privately, or lives inEquinox#420 - Remove explicit
net461handling; minimum target nownet6.0/FSharp.Corev6.0.0#310 #323 #354 - Remove
Equinox.Core.ICache(there is/was only one impl, and the interface has changed as part of #386) #389 CosmosStore.CosmosStoreConnector: RemovedbypassCertificateValidation(superseded by connection stringIgnoreEndpointCertificate) #443
Fixed
EventStore/SqlStreamStore: renameEquinox.XXXStore.Log.Event->Metricto matchCosmosStore#311SqlStreamStore: FixMetrickey to bessEvt(wasesEvt) #311
3.0.7 - 2022-05-12
Added
eqx dump/Equinox.Tool: Add-Foption to opt out of pretty printing unfolds #319eqx dump/Equinox.Tool: Show payload statistics #323eqx dump/Equinox.Tool: Add-Boption to prevent assuming UTF-8 bodies #323
Changed
eqx dump/Equinox.Tool: Flip-Poption to opt in to pretty printing for events #313
Fixed
CosmosStore: Fixed mis-Indexing of Unfolds when >1 Unfold present #322 #324eqx dump/Equinox.Tool: UseSystem.Text.Jsonfor pretty printing to handlenullvalues correctly #319
3.0.6 - 2022-01-19
Changed
CosmosStore: CleanupMicrosoft.Azure.Cosmoscalls #303
Removed
- Removed Grafana spec now that canonical is in
dotnet-templates#304
Fixed
CosmosStore: Fix Loading Fallback to archive algorithm bug when all events pruned from Tip #306
3.0.5 - 2021-11-18
Added
- Stores: Expose
.Log.PropertyTagLiterals to enable log filtering #298 Equinox.Tool: Add support for autoscaling throughput of Cosmos containers and databases #302 :pray: @belcher-rok
Fixed
MemoryStore: Fixed incorrectVersioncomputation forTransactExpost-State #296
3.0.4 - 2021-10-15
Fixed
CosmosStore: Fixed event retrieval bug forReloadfor bothQuerywith cached value and resync cases #295 :pray: @ragiano215
3.0.3 - 2021-09-16
Changed
EventStore: Addcustomizehook toConnector#286 (cherry-pick from2.6.0)
3.0.2 - 2021-09-13
Fixed
- Fix CI to stop emitting builds with incorrect
AssemblyVersion 1.0.0.0(updated MinVer to2.5.0) - Update global.json to use SDK version
5.0.200
3.0.1 - 2021-06-11
Added
CosmosStore.CosmosStoreConnector: Wrapper forCosmosClientFactoryenabling cleaner consumer code #292
Fixed
3.0.0 - 2021-05-13
Changed
CosmosStore.Prometheus.LogSink: Aligned signature with Equivalent Propulsion one :pray: @deviousasti
3.0.0-beta.4 - 2021-04-28
Added
CosmosStore.Prometheus.LogSink: Generalizedapptag to arbitrary custom tags as perCosmos#287
3.0.0-beta.3 - 2021-04-06
Added
CosmosStore.CosmosStoreClient: Merge ofCosmosStore.CosmosStoreConnectorandCosmosStoreConnection#280CosmosStore.Discovery.Endpoint: Enables parsing of Endpoint Uri from connection string #284 #280
Changed
CosmosStore: Add stream name to "EqxCosmos Tip" log entries
Fixed
Equinox.Tool: Fix incorrectAzure.Cosmos.Directreference #280
3.0.0-beta.2 - 2021-03-12
Added
CosmosStore.CosmosStoreConnector: Uses the CosmosDB SDK 3.17CreateAndInitializeto correctly connect and initialize a CosmosClient for an application #279
Changed
CosmosStore: Default Connection Mode nowDirectto align with V3 SDK (previous default wasGatewayto match V2 SDK) #281CosmosStore: TargetMicrosoft.Azure.Cosmosv3.17.0#278
Fixed
CosmosStore:Dispose()as required by updated CosmosDB SDKFeedIteratorinterface #278
3.0.0-beta.1 - 2021-02-24
Added
Equinox.CosmosStore: Forked fromEquinox.Cosmosto add significant new features (see Removed section for deprecation policy info).- Added support for accumulating events in Tip, i.e. being able to operate with a single document per stream until the events (if any) overflow a defined size threshold #251 see also #110
- Added Archive store Fallback for Event loading, enabling streams to be hot-migrated (archived to a secondary/clone, then pruned from the primary/active) between Primary and Archival stores #247, #259
- Added support for pruning events within the Tip document #258 see also #233
- Added Prometheus integration package #266 see also #267
- target
Microsoft.Azure.Cosmosv3.9.0(instead ofMicrosoft.Azure.DocumentDB[.Core] v 2.x) #144 - Replaced
BatchingPolicy,RetryPolicywithTipOptions,QueryOptionsto better align with Cosmos SDK V4 #253 - Reorganized
QueryRetryPolicyto handleIAsyncEnumerablecoming in Cosmos SDK V4 #246 :pray: @ylibrach - Remove exceptions from 304/404 paths when reading Tip #257
- Removed warmup call
- Rename
Equinox.CosmosDLL and namespace toEquinox.CosmosStore#243- Rename
Equinox.Cosmos.Store->Equinox.CosmosStore.Core Coresub-namespace- Rename
Equinox.Cosmos.Core.Context->Equinox.CosmosStore.Core.EventsContext - Change
Equinox.Cosmos.Core.Connection->Equinox.CosmosStore.Core.RetryPolicy - Rename
Equinox.Cosmos.Core.Gateway->Equinox.CosmosStore.Core.StoreClient
- Rename
- Rename
Equinox.Cosmos.Containers->Equinox.CosmosStore.CosmosStoreConnection - Rename
Equinox.Cosmos.Context->Equinox.CosmosStore.CosmosStoreContext - Rename
Equinox.Cosmos.Resolver->Equinox.CosmosStore.CosmosStoreCategory - Rename
Equinox.Cosmos.Connector->Equinox.CosmosStore.CosmosStoreClientFactory
- Rename
Changed
-
Equinox: Renametype StreamtoDecider#272 :pray: @thinkbeforecoding -
Equinox.Core: SimplifyAsyncCacheCell#229 -
Equinox.EventStore: targetEventStore.Clientv20.6(instead of v5.0.x) #224 -
All Stores:
FSharp.Control.AsyncSeqv2.0.23 -
Equinox.Tool: TargetFSharp.Corev4.7.1 -
Equinox.Tool: Add<RollForward>Major</RollForward>#270 -
All Stores: Standardise naming of top level structure:
<StoreName>Connection(wraps the relevant*Clientfor that store),Context,Category#276- Rename
Resolver-><StoreName>Category - Rename
Context-><StoreName>Context
- Rename
-
Update AzDO CI/CD to use
windows-latest -
Update to
3.1.101SDK -
Remove
module Commandsconvention from examples -
Remove separated
Backendproject from examples (support for architecturally separating all domain logic from Equinox and Domain Service logic from Concrete Stores remains) -
Retarget
netcoreapp2.1sample apps tonetcoreapp3.1withSystemTextJson -
Retarget Todobackend to
aspnetcorev3.1 -
Revise semantics of Cart Sample Command handling
Removed
Equinox.Cosmos: for now, there is no intention to release a3.xversion; insteadEquinox.CosmosStoremaintains forward compatibility of the2.xdata format but moves toMicrosoft.Azure.Cosmos. Version2.xreleases (which continue to depend onMicrosoft.Azure.DocumentDb.Coreare published from the https://github.com/jet/equinox/tree/v2 branch
Fixed
Equinox: changecreateAttemptsExhaustedExceptionto allow anyexn-derivedtype#275
2.6.0 - 2021-04-28
Added
Cosmos.Discovery.Endpoint: Extracts Uri for diagnostic purposes #284Cosmos.Prometheus.LogSink: Generalizedapptag to arbitrary custom tags #287
Changed
EventStore: Addcustomizehook toConnector#286EventStore: PinEventStore.Clientto[5.0.11,6)#286EventStore: AddedSetAutoCompatibilityMode("auto")to default wireup #286
2.5.1 - 2021-03-12
Changed
ISyncContext.Version: documented value as being0-based, rather than whatever a given store happens to use internally (which happens to align with the native version representation inEquinox.Cosmos) #282MemoryStore/SqlStreamStore/EventStore: aligned implementations to representVersionin a store-neutral manner per the documentation change #282
Removed
Fixed
Cosmos/ISyncContext.Version: fixed erroneous0value when re-reading with caching but without snapshots inCosmosstore #282
2.5.0 - 2021-02-24
Added
Stream.TransactEx: extended signature, replacingTransactAsyncEx. Provides theISyncContextboth before and after thedecideso pre-flight checks can be performed (asmaster#263) #277
Removed
Fixed
Cosmos.Prometheus: Correct namespace (was erroneouslyEquinox.CosmosStore.Prometheus) #271
2.4.0 - 2020-12-03
Added
Fixed
MemoryStore: SerializeCommittedevents to guarantee consumption in eventIndexorder re #265 #269 :pray: @fnipoCosmos: Fix defaulting forcompressUnfoldsin C# #261
2.3.0 - 2020-11-04
Added
CachingStrategy.FixedTimeSpan: Support for fixed caching periods #255
Changed
Cosmos: FinalizePruneAPI to align withmaster#258
2.3.0-rc2 - 2020-10-02
Added
Cosmos: Support Serverless Account Mode ineqx init; default RU/s to 400 if unspecified #244 :pray: @OmnipotentOwlCosmos: Added ability to inhibit compression of Unfolds #249 :pray: @ylibrach
Changed
Cosmos: Reorganize Sync log message text, merge with Sync Conflict message #241Cosmos: Converge Stored Procedure Impl withtip-isa-batchimpl from V3 (minor Request Charges cost reduction) #242
2.3.0-rc1 - 2020-08-31
Added
Cosmos:PruneAPI to delete events from the head of a stream #233
Changed
Cosmos: Tweaked connecting log message
2.2.0 - 2020-08-04
Added
- Add
AsyncBatchingGate#228
Fixed
EventStore: PinEventStore.Clientto[5.0.1,6)to avoid conflicting changes inEventStore.Clientv20.06#223
2.1.0 - 2020-05-22
Added
eqx dump -b, enabling overriding of Max Events per BatchMemoryStore: AddCommittedevent to enable simulating Change Feeds in integration tests re #205 #221
Changed
MemoryStore: TargetFsCodecv2.0.0#219
2.0.2 - 2020-05-10
- Rebuilt version of
2.0.1with new VM image in order to release complete set of nupkg files vs only releasing MsSql
2.0.1 - 2020-03-25 - unlisted due to incomplete package set
Fixed
SqlStreamStore.MsSql: Initial Append when stream empty on MsSql was perpetually failing #209 :pray: @Kimserey
2.0.0 - 2020-02-19
Added
Stream.TransactAsyncEx, exposing theCore.ISyncContextat conclusion of the sync operation, affording the ability to examine the post-stateVersionetc. (This paves the way for exposingSessionTokenat a later point without a breaking change) #194
Changed
Stream.QueryExto supplyCore.ISyncContextin lieu of only exposingVersion(to align withTransactAsyncEx) #194- Target
FsCodecv2.0.0
2.0.0-rc9 - 2020-01-31
Added
eqx dumpperf + logging improvementseqx dump -Pturns off JSON pretty printingCosmos:Tip 200now logs receivednand_etagvaluesCosmos: Unfolds now write and returnt(creationDateTimeOffset.UtcNow)EventStore: Add missing optional parameters forConnector:gossipTimeoutandclientConnectionTimeout#186 :pray: @AndrewRublyov
Changed
SqlStreamStore.*: TargetSqlStreamStorev1.2.0-beta.8- Target
FsCodecv2.0.0-rc3 - Target
Microsoft.SourceLink.GitHub,Microsoft.NETFramework.ReferenceAssembliesv1.0.0 - Samples etc target
Arguv6.0.0 eqx dump's-Jswitch now turns off JSON renderingeqx -C dumpnow renders Store.Informationlogs- Samples consistently use
module Fold,(Events.ForX streamId), removed(|Stream|)#174
Removed
Fixed
eqx: Reinstated writing of missing commandline argument messages to consoleCosmos: FixnullData handling exception when log level <=Debug
2.0.0-rc8 - 2019-11-14
Added
SqlStreamStore: Full support for Microsoft Sql Server, MySQL and Postgres using SqlStreamStore #168 :pray: @rajivhostCosmos: Exposed aConnector.CreateClientfor interop with V2 ChangeFeedProcessor andPropulsion.Cosmos#171Cosmos: CodifiedAccessStrategy.RollingState#178 :pray: @jgardellaCosmos: Addedeqx statscommand to count streams/docs/events in a CosmosDb Container re #127 #176MemoryStore: Supports custom Codec logic (can useFsCodec.Box.Codecas default) #173eqx dump [store]: Show event data from store #177
Changed
- Targeted
Destructurama.FSharpv1.1.1-dev-00033dotnet-templates#36 - Targeted
FsCodecv1.2.1 Cosmos: renamedConnector'smaxRetryAttemptsOnThrottledRequestsandmaxRetryWaitTimeInSecondsto maxRetryAttemptsOnRateLimitedRequestsandmaxRetryWaitTimeOnRateLimitedRequestsand changed latter toTimeSpan` to match V3 SDK #171AccessStrategy: consistent naming for Union cases and arguments; rewrote xmldoc #178 :pray: @jgardella
Removed
Resolver.ResolveEx#172
Fixed
Cosmos: fixed accidentally swappedcountandbytesmetrics field values
2.0.0-rc7 - 2019-10-17
Added
.Cosmos: ability to inhibit server certificate validation viaConnector'sbypassCertificateValidationoption #170 :pray: @Kelvin4702- store-neutral
ICache; centralized implementation inEquinox.Core#161 :pray: @DSilence ResolveOption.AllowStale, maximizing use of OCC forStream.Transact, enabling stale reads (in the face of multiple writers) forStream.Query#167- Ability to (optionally) pass a
'reqwhen creating aStream, in order to be able to interop with FsCodec'sCorrelationIdandCausationIdfields (as added in FsCodec#22) #169
Changed
- Updated minimum
Microsoft.Azure.DocumentDb[.Core]dep from2.0.0to2.2.0(required for #170) - Updated
FsCodecto1.0.0to pick up final name changes #162 - Replaced
TargetId.AggregateIdEmptywithResolveOption.AssumeEmpty#163 - Extracted
Equinox.Coremodule #164 - Used
Transactname consistently inAccumulator(follow-up to #97) #166 - Changed all curried Methods to tupled
.EventStorenow caches written values #167- (internal) Updated
MinVerto2.0.0
2.0.0-rc6 - 2019-09-07
Added
- EventStore: expose
Indexwhen decoding events viaIIndexedEvent#158 AsAt.fsx: Illustrates usage ofIndexedEvent.Indexand snapshots in.EventStorevs.Cosmos#159
Changed
- Updated to
FsCodec 1.0.0-rc2to enableTryDecodeto seeIIndexedEventwithout casting #158
2.0.0-rc5 - 2019-08-30
Changed
- Extracted
Equinox.Codecto external projectFsCodec, with Json.net support inFsCodec.NewtonsoftJson#156
2.0.0-rc4 - 2019-08-26
Added
Equinox.Stream.QueryEx: exposes the stream's version in order to support versioned summary projections #152Equinox.Cosmos.Context: added overload requiring only (Connection, databaseId, containerId), enablingGatewayandBatchingPolicyconcepts to be skipped over in single-Aggregate microservices where they are less relevant #153 @jakzale
2.0.0-rc3 - 2019-08-20
Added
Cosmos: AddAccessStrategy.RollingUnfolds, leveraging_etag-contingent writes to allow state management without needing to write >=1 event per update #146
Changed
- Updated README.md to refer to
propulsion initandpropulsion project(formerlyeqxinitAuxandproject) jet/propulsion#17 Equinox.Cosmosnow usesContainerin preference toCollection, in alignment with theMicrosoft.Azure.CosmosSDK's standardized naming, and other minor changes, see PR for details #149EQUINOX_COSMOS_COLLECTIONenvironment variable argument foreqxtool is nowEQUINOX_COSMOS_CONTAINER#143eqx projectnow uses environment variablesPROPULSION_KAFKA_*instead ofEQUINOX_*#143- renamed
Equinox.DeprecatedRawName->StreamName#150
Removed
eqx project-ChangeFeedProcessorand Kafka support - All projection management logic now lives in thePropulsionlibraries #138eqx initAux- nowpropulsion init(jet/propulsion#17)[https://github.com/jet/propulsion/pull/17]
2.0.0-rc2 - 2019-07-01
Changed
eqx initAuxnow sets Partition Key to/idas recommended for newauxcollections #142
2.0.0-rc1 - 2019-06-14
Added
Equinox.Codecnow usesSystem.Buffers.ArrayPoolto reduce allocations when encoding/decoding union objects using json.net #140Equinox.Codecnow usesRecyclableMemoryStreamManagerto reduce allocations wrtMemoryStreamobjects when encoding union objects using json.net #139
Changed
TypeShapedependency inEquinox.Codecnow7.*(was6.*)Equinox.Toolnow depends onPropulsion.Kafkav>= 1.0.1Equinox.Cosmos.Projectionis only an internal dependency of theEquinox.ToolEquinox.Cosmos: Top levelCosmosStoreis now calledContextfor consistency #140Equinox.EventStore: Top levelGesGatewayis now calledContextfor consistency #140- Builders etc. in
Equinox.Cosmos,Equinox.EventStoreandEquinox.MemoryStoreno longer have disambiguatingCosmos,GesandMemoryprefixes #140
Removed
Equinox.Projectionhas moved toPropulsionEquinox.Projection.Codechas moved toPropulsion.KafkaEquinox.Cosmos.Projectionis now maintained in/asPropulsion.Cosmos(it's still in the repo for now, pending resolution of PR #138 andPropulsionissue #6)
Fixed
EqxCosmos Sync: Conflict writing {eventTypes}message now trims to max 5 items
2.0.0-preview9 - 2019-06-01
Added
Equinox.EventStore.GesGateway.SyncAPI including addingactualVersiontoConflictUnknownResult DU case fordotnet new eqxsynctemplateEventStoreSinkimpl #133Equinox.EventStoreStatsfor consistency with CosmosDb equivalent #133
Changed
- Targeted
Jet.ConfluentKafka.FSharpv1.0.0-rc12ineqxtool Equinox.Tool: SwitchedIndexingModetoAutomatic=false,IndexingMode=None, removeDefaultTimeToLivefromauxcollections #134Equinox.Cosmos.Projection: Tidyassignandinit, signatures; provided mechanism to inhibit logging #137
Removed
Equinox.Projectionlogic - Projection management logic now lives in thePropulsionlibraries (StreamItemis the sole remaining item in theEquinox.Projectionlibrary).
Fixed
Equinox.EventStore: FixedPreferSlavebug forDiscovery.Urimode #135Equinox.EventStore: FixedPreferSlaveandRandommodes for gossip-basedDiscoverymodes #135 @asetda
2.0.0-preview8 - 2019-05-16
Changed
- Replace flat single-item
Equinox.Projection.Codec.RenderedEventwithRenderedSpanto match incoming Projection enhancements #131 Equinox.Projectionperformance and interface extraction work viadotnet new eqxsynctemplate #132
2.0.0-preview7 - 2019-05-14
Changed
Equinox.Projectionperformance work based ondotnet new eqxsynctemplate #130- Reorganized
Equinox.Projectionto be a single-file concern #129
2.0.0-preview6 - 2019-05-06
Added
- Added
Equinox.Projectionstate management:StreamState/StreamStates#128 - Added
Equinox.Projectionpipeline:Progress/Scheduling/Projector/Ingestion/Ingester` #128 - Added
Equinox.Cosmos.Store.Log.Metrics.dumpas a placeholder stats mechanism #126 - Added
Equinox.Projection.StreamItemas canonical representation of a raw item from a feed in Projections #125
Changed
- [re]Introduced
Equinox.Projection.Codecto house Codec-specific aspects of the shared projection presently inEquinox.Projection#125 ChangeFeedObserver: Madeassignandrevokeextensibility points in builderasync#124ChangeFeedObserver: RenamedChangeFeedObserver'sprocessBatchtoingestand documented role ofIChangeFeedObserverContext.Checkpointin more detail #124- Targeted
Jet.ConfluentKafka.FSharpv1.0.0-rc6ineqxtool
2.0.0-preview5 - 2019-04-12
Added
- exposed
assignandrevokeextensibility points inChangeFeedObserverbuilder #119
Changed
- switched ChangeFeedProcessor checkpointing to be explicit (was automatic) based on requirements of
equinox-synctemplate PR #19 #119
Fixed
- Added
partitionRangeIdcontext toChangeFeedObserverlogging #119
2.0.0-preview4 - 2019-04-03
Added
- Added database-level RU-provisioning support (i.e.,
eqx init's-Dswitch) #120 - Implemented ability to amend RU allocations where database/collection already exists #112
Changed
- Targeted
Jet.ConfluentKafka.FSharpv1.0.0-rc2ineqxtool - Removed special casing of
Tipbatches fromEquinox.Cosmos.Projectionin preparation for transparent integration of #110 without necessitating updating of projectors and related systems #119
2.0.0-preview3 - 2019-03-27
Fixed
- Reading
nullfrom Equinox.Cosmos and then writing that to Kafka yielded invalid json #18
2.0.0-preview2 - 2019-03-23
Added
Cosmos.Projection.ChangeFeedProcessor: Support management of anauxcollection in account other than the one being read from by addingauxAccountKeyparam #115- Support ETL scenarios by enabling the event creation
Timestampto be [read and] written by supplying it inEquinox.Codec.IEvent#116
Changed
- Rename
Equinox.Projection.CodecNuGet toEquinox.Projection(no code changes) - Renamespace and separate
Equinox.CodectoEquinox.Codec.NewtonsoftJsonandEquinox.Codec.Custom(in preparation for #113) HT @szer - Uses MinVer 1.0.0 [internally] to compute package versions (was
rc.1,beta.4along the way)
Removed
- Remove
maxEventsPerSlice/maxTipEventspending #109
2.0.0-preview1 - 2019-03-07
Added
- Provide capability to access
MetadataandEventNumber/Indexre #102
Changed
- Make
cachingnon-optional inCosmosStreamResolver; addNoCachingcache mode forEquinox.Cosmos#104 @jakzale - Reorder
cachingandaccessinGesStreamResolverto matchCosmosStreamResolver#107 - Renamespaced and separated
Equinox.CodecAPIs to separateNewtonsoft.Jsonand customencode/tryDecodeapproaches #102 (in preparation for #79)
Removed
- Extract
Equinox.Projection.Kafkaand its integration tests to becomeJet.ConfluentKafka.FSharpv1.0.0-preview1; retargetedEquinox.Toolto use same.
Fixed
- Add Writing empty event list guard for
Equinox.Cosmos#105 - Disable support for non-record Event payloads in
Equinox.Codec#103
1.1.0-preview2 - 2019-02-20
Added
Equinox.Projection.Kafkaconsumer metrics emission, see #94 @michaelliao5- Add
samples/Tutorialwith.fsxfiles (see also related docs) - Overloads to reduce need to use
CosmosCollections@jakzale
Changed
- Target
EventStore.Client 5.*to avail of bugfixes and single client codebase. Interoperable with4.*servers - Updated to
"Microsoft.SourceLink.GitHub" Version="1.0.0-beta2-18618-05" - Replace stateful
ContextAPI as primary Handler API withTransact; CompatibleAccumulatorremains to facilitate porting #97 @eiriktsarpalis - Replace
HandlerwithStream - Replace
Equinox.Cosmos.Eqx*withCosmos*@jakzale - Replace
Equinox.MemoryStore.Mem*withMemory*
Removed
- Moved internal
Streamhelpers fromEquinoxto instead be inlined into Store impls #97 @eiriktsarpalis - De-emphasized
Handlerin sample aggregates @jakzale
1.1.0-preview1 - 2019-02-08
Added
Equinox.Cosmosprojection facilities, see #87
1.0.4 - 2019-02-08
Changed
- Rename
Equinox.CatIdtoEquinox.AggregateId(HT @lfr for prompting the change) - Make
Newtonsoft.Jsondependency consistently>= 11.0.2 - Make
Microsoft.Azure.DocumentDBdependency consistently>= 2.0.0(was temporarily 1.x onnet461to fit in with constraints of a downstream) - Refactor
Equinox.Cosmoswiring to exposeCosmosConnector.ConnectionPolicy - Use
FSharp.UMXfrom @alfonsogarciacaro and @eiriktsarpalis in tests/samples #89 (HT @chinwobble in #83 for prompting the change)
Fixed
- Improve CosmosDb connection string parse error message
- change from
licenseUrltolicensein.nupkg - Make
xUnitdependency consistently2.4.0
1.0.3 - 2019-01-19
(For information pertaining to earlier releases, see release notes in https://github.com/jet/equinox/releases and/or can someone please add it!)