Releases: VPDPersonal/Aspid.Collections
Releases · VPDPersonal/Aspid.Collections
v1.1.0
Added
FilteredList<T>: incremental dispatch of sourceAdd/Remove(single and batch),ReplaceandMove(single) — no full rebuild on every event for the common cases. Reset and batchReplace/Movestill fall back to a fullUpdate().ObservableList<T>.RemoveRange(int startIndex, int count)and the protectedOnRemovedRange(in IReadOnlyList<T>)hook.ObservableListSync<TFrom, TTo>forwards source batch removes through it.- Batch propagation in
ObservableDictionarySync<TKey, TFrom, TTo>andObservableHashSetSync<TFrom, TTo>forAdd/Remove(andReplaceon Dictionary) — previously threwNotImplementedException. CollectionChangedEvent<T>: re-entrancy-safe via copy-on-write of the subscriber list duringInvoke; a lazyHashSet<Handler>tracks unsubscribes during the invoke chain for O(1) skip of removed handlers.- Performance benchmark scaffold under
Tests/Runtime/Observable/Performance/, gated by theASPID_COLLECTIONS_PERFORMANCE_TESTINGdefine. - Aspid script icon at
Editor/Resources/Icons/aspid_icon_medium_green_1022x1011.png; runtime and test.cs.metafiles point to it so scripts surface the project icon in the Unity Project view. Samples~/directory with five importable samples (package.jsonsamplesmanifest): basic change-notification dispatch, model→view sync viaCreateSync, chainedFilteredListfor search+category,ObservableDictionaryas a keyed table, andSplitByEventsas an analytics tap. Each sample ships its ownAspid.Collections.Samples.*asmdef.package.jsonmetadata:unityReleasefield, acom.unity.test-framework@1.6.0dependency, andauthor.url/changelogUrl/documentationUrl/licensesUrlentries.
Changed
- BREAKING — package renamed from
com.aspid.collectionstotech.aspid.collections. Consumers must update the identifier in their project'sPackages/manifest.json(and any scoped-registry / Git-URL references) when upgrading from 1.0.x. - Tests reorganized under
Tests/Runtime/Observable/to match Unity's standard runtime/editor split. The test assembly is renamed fromAspid.Collections.Observable.TeststoAspid.Collections.Tests(now with an emptyrootNamespace), and theEditor-onlyincludePlatformsconstraint is dropped from both the test and performance asmdefs so suites compile and run on player platforms too. - BREAKING —
ASPID_COLLECTIONS_PERFORMANCE_TESTINGremoved from the performance asmdef'sdefineConstraints. Withoutcom.unity.test-framework.performanceinstalled the perf asmdef now fails to compile instead of being silently excluded; the define is still auto-set viaversionDefineswhen the package is present. ObservableQueueSync/ObservableStackSync/ObservableDictionarySync: unsupported actions now throwNotSupportedExceptionwith a descriptive message instead ofNotImplementedException.- Release workflow excludes
CLAUDE.md/CLAUDE.md.metafrom the published UPM tree (alongside.github).
Fixed
ObservableStackSync.OnPoppedRangeandObservableQueueSync.OnDequeuedRangeoverrides recursed into themselves via C# overload resolution, causingStackOverflowExceptiononDisposeand any batch dequeue/pop.ObservableDictionarySync.OnReplacedpassednewItem.ValuetoOnRemoved, disposing/notifying the freshly inserted value instead of the discarded one.FilteredList.ApplyMoveSingledid not re-seat the moved entry when aComparerwas set; for comparer-equal items the source-index tie-break could drift from a freshUpdate()rebuild.ObservableHashSetSync.AddOneignored theAddreturn value, silently corrupting_syncon a non-injective converter — now throwsInvalidOperationException.RemoveOneusesTryGetValueinstead of the indexer to avoidKeyNotFoundExceptioninside the source'sInvoke.ObservableList<T>.RemoveRangevalidates bothstartIndex < 0andcount < 0→ArgumentOutOfRangeExceptionbefore taking the lock (previouslyOverflowExceptionfromnew T[-1]forcount, andIndexOutOfRangeExceptionfrom the per-item read forstartIndex).FilteredList3-arg constructor: source subscription now happens after_filter/_comparerare set, closing a subscribe-before-init window.
v1.0.2
Added
- Release workflow that publishes a UPM branch and per-version
upm/*tags.
Changed
- README: replaced the Installation section with a UPM-only Integration section.
- Refreshed
.metafiles.
v1.0.1
Full Changelog: v1.0.0...v1.0.1
v1.0.0
First release