792 lines
32 KiB
Markdown
792 lines
32 KiB
Markdown
|
# Changelog
|
||
|
|
||
|
## [1.4.0] - 2022-07-12
|
||
|
|
||
|
### Changed
|
||
|
* The com.unity.jobs package has been merged into com.unity.collections to resolve circular dependency issues that can occur when using Unity 2022.2+.
|
||
|
|
||
|
## [1.3.2] - 2022-06-27
|
||
|
|
||
|
### Changed
|
||
|
* updated minimum compatible version of Unity to 2020.3.30f1
|
||
|
|
||
|
## [1.3.1] - 2022-06-13
|
||
|
|
||
|
* Minor fixes to changelog
|
||
|
|
||
|
|
||
|
## [1.3.0] - 2022-05-16
|
||
|
|
||
|
### Added
|
||
|
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Reverted some NativeArray test changes that were introduced in 1.0.0-pre.4
|
||
|
* Reset `m_best` in RewindableAllocator rewind.
|
||
|
* Renamed `UnsafeHashSet` to `UnsafeParallelHashSet`.
|
||
|
* Renamed `NativeHashSet` to `NativeParallelHashSet`.
|
||
|
* Renamed `UnsafeHashMap` to `UnsafeParallelHashMap`.
|
||
|
* Renamed `NativeHashMap` to `NativeParallelHashMap`.
|
||
|
* Renamed `UnsafeMultiHashMap` to `UnsafeParallelMultiHashMap`.
|
||
|
* Renamed `NativeMultiHashMap` to `NativeParallelMultiHashMap`.
|
||
|
* Updated package `com.unity.burst` to `1.6.6`
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Added an assembly definition file for sample code in the package to avoid spurious warnings when adding the package
|
||
|
|
||
|
|
||
|
|
||
|
## [1.2.3] - 2022-03-18
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Minor fixes to changelog
|
||
|
|
||
|
## [1.2.3-pre.1] - 2022-03-04
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Updated package dependencies
|
||
|
|
||
|
## [1.2.2] - 2022-03-03
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Updated package `com.unity.test-framework` to version `1.1.31`.
|
||
|
* Updated package `com.unity.burst` to version `1.6.4`.
|
||
|
|
||
|
## [1.2.1] - 2022-02-17
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Shutdown the WordStorage with application exit to ensure memory is freed.
|
||
|
* `NativeList.AsDeferredJobArray` allocator label is changed to `Allocator.Invalid` to infer that the array is in list mode.
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added FixedStringMethods.CopyFromTruncated to copy a string to a FixedString explicitly allowing truncation
|
||
|
* Added `NativeText.ReadOnly` type which provides a readonly, lightweight copy of a `NativeText` or `UnsafeText` type.
|
||
|
* New public API AllocatorHandle.UnmanagedUnregister, which unregisters an allocator without using managed code.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* `Native/UnsafeMultiHashMap.GetUniqueKeyArrayNBC` extension methods from `Unity.Collections.NotBurstCompatible` are not necessary anymore. Burst supports tuple. Original methods `Native/UnsafeMultiHashMap.GetUniqueKeyArray` are now available again.
|
||
|
* Reverted some NativeArray test changes that were introduced in 1.0.0-pre.4
|
||
|
* Static safety ID created for all types containing a uniquely represented AtomicSafetyHandle
|
||
|
|
||
|
|
||
|
## [1.1.0] - 2021-10-27
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* `REMOVE_DISPOSE_SENTINEL` ifdefs in all containers for future removal of DisposeSentinel.
|
||
|
* Bounds check to `Fixed/Native/UnsafeList`.
|
||
|
* `SetCapacity` and `TrimExcess` to `NativeList`.
|
||
|
* A custom allocator wrapper `AllocatorHelper` to facilitate custom allocator creation and destruction.
|
||
|
* NativeList<>.ArraysEqual & UnsafeList<>.ArraysEqual
|
||
|
* UnsafeList.CopyFrom
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Only lower 15 bits of an allocator handle version are valid.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Error in leak detection for NativeList created by RewindableAllocator.
|
||
|
* Removed pointer caching from `Native/UnsafeList.ParallelWriter`.
|
||
|
* `AtomicSafetyHandle` issue preventing use of `foreach` iterator in jobs for `NativeHashSet`, `NativeHashMap`, and `NativeMultiHashMap` containers.
|
||
|
|
||
|
|
||
|
|
||
|
## [1.0.0-pre.6] - 2021-08-31
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* VirtualMemoryUtility
|
||
|
* BaselibErrorState
|
||
|
* BaselibSourceLocation
|
||
|
* VMRange
|
||
|
* DisposeSentinel (managed object) from all `Native*` containers.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Native container memory allocations align to multiple cacheline size.
|
||
|
* UnsafeText is marshalable now (doesn't contain generic field UnsafeList<byte>).
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* AllocatorManager.AllocateBlock no longer ignores alignment when allocating.
|
||
|
* Redundant and wrong computation of memory allocation alignment.
|
||
|
|
||
|
|
||
|
|
||
|
## [1.0.0-pre.5] - 2021-08-20
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Renamed FixedListN to FixedListNBytes, for all N, and same for FixedString
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* NativeBitArray, NativeQueue, NativeStream, and NativeText will no longer throw an exception when using a custom allocator inside of a job.
|
||
|
|
||
|
|
||
|
## [1.0.0-pre.4] - 2021-08-11
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* `FixedList*` overflow checks when `UNITY_DOTS_DEBUG` is enabled.
|
||
|
* Disposed NativeArray related tests and updated some invalidated native array from native list tests to confirm that exceptions are thrown when accessing an object's Length and indexer following its disposal
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Updated internal dependencies
|
||
|
* InvalidArrayAccessFromListJob check in the InvalidatedArrayAccessFromListThrowsInsideJob unit test to expect an ObjectDisposedException due to a change in the type thrown for AtomicSafetyHandle.CheckAndThrow
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Setting UnsafeList.Length will now resize the storage properly.
|
||
|
|
||
|
## [1.0.0-pre.3] - 2021-06-29
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* `Native/UnsafeList*.RemoveRange*` with index/count arguments.
|
||
|
* Upgraded to burst 1.5.2
|
||
|
* `UnsafeText` added.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Burst compatibility tests now treat any explicit uses of `[BurstCompatible]` on private methods as an error (as opposed to silently ignoring) to avoid giving the impression that private methods are being tested.
|
||
|
* `NativeList<T>` generic constraint `T` is changed from `struct` to `unmanaged` to match `UnsafeList<T>`. User code can be simply fixed by changing `struct` to `unmanaged` when using `NativeList<T>` inside generic container.
|
||
|
* `NativeHashMap.GetBucketData` renamed to `NativeHashMap.GetUnsafeBucketData`
|
||
|
* Update the package to 1.0.0
|
||
|
* `HeapString` renamed to `NativeText`. `NativeText` is based on `UnsafeText`.
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Generated `FixedList[Byte/Int/Float][32/64/128/256/512]` are deprecated, and replaced with generics `FixedList[32/64/128/256/512]<T>`.
|
||
|
* `UnsafeMultiHashMap<TKey, TValue>.GetUniqueKeyArray` replaced with extension method `UnsafeMultiHashMap<TKey, TValue>.GetUniqueKeyValueNBC` from `Unity.Collections.NotBurstCompatible` namespace.
|
||
|
* `NativeMultiHashMap<TKey, TValue>.GetUniqueKeyArray` replaced with extension method `NativeMultiHashMap<TKey, TValue>.GetUniqueKeyValueNBC` from `Unity.Collections.NotBurstCompatible` namespace.
|
||
|
* `NativeList<T>.ToArray` replaced with extension method `NativeList<T>.ToArrayNBC` from `Unity.Collections.NotBurstCompatible`
|
||
|
* `NativeList<T>.CopyFrom` replaced with extension method `NativeList<T>.CopyFromNBC` from `Unity.Collections.NotBurstCompatible` namespace.
|
||
|
* `UnsafeAppendBuffer.Add` replaced with extension method`UnsafeAppendBuffer.AddNBC` from `Unity.Collections.LowLevel.Unsafe.NotBurstCompatible` namespace.
|
||
|
* `UnsafeAppendBuffer.ToBytes` replaced with extension method `UnsafeAppendBuffer.ToBytesNBC` from `Unity.Collections.LowLevel.Unsafe.NotBurstCompatible` namespace.
|
||
|
* `UnsafeAppendBuffer.Reader.ReadNext` replaced with extension method `UnsafeAppendBuffer.Reader.ReadNextNBC` from `Unity.Collections.LowLevel.Unsafe.NotBurstCompatible` namespace.
|
||
|
* `Native/UnsafeList*.RemoveRange*WithBeginEnd` methods with begin/end arguments in favor of `Native/UnsafeList*.RemoveRange*` with index/count arguments.
|
||
|
* `UnsafeList` and replaced it with `UnsafeList<T>`.
|
||
|
* VirtualMemoryUtility.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* `NativeQueue.PersistentMemoryBlockCount` and `NativeQueue.MemoryBlockSize` are now internal APIs.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Burst compatibility tests will now ignore any method containing a '$' in the name, which can be generated by the Burst direct call IL post processor.
|
||
|
* xxHash3 is initialized after assembly load to avoid an exception that could be thrown if xxHash3 is accessed for the first time on a thread other than the main thread.
|
||
|
|
||
|
### Security
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
## [0.17.0] - 2021-03-15
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* `[NotBurstCompatible]` attribute to FixedStringN constructors that use a String argument.
|
||
|
* `[NotBurstCompatible]` attribute to NativeQueue constructor.
|
||
|
* `UnsafeList<T>.Create` and `UnsafeList<T>.Destroy` API.
|
||
|
* BurstCompatibilityTests now has a constructor that accepts multiple assembly names to verify Burst compatibility. This allows one test to verify multiple assemblies and can dramatically reduce CI times by avoiding costly setup overhead.
|
||
|
* `UnsafePtrList<T>` to replace deprecated untyped `UnsafePtrList`.
|
||
|
* Burst compatibility tests now also write the generated code to the Temp directory in order to make it easier to inspect.
|
||
|
* `FixedList*.RemoveRange*` with index/count arguments.
|
||
|
* FixedString parsing to type uint
|
||
|
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* untyped UnsafePtrList, and added `UnsafePtrList<T>` as replacement.
|
||
|
* `FixedList*.RemoveRange*WithBeginEnd` methods with begin/end arguments in favor of `FixedList*.RemoveRange*` with index/count arguments.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed single arg `FixedString*.Format` extension methods, use `Clear()` followed by `Append()`.
|
||
|
* CollectionsBurstTests has been removed and placed into the Entities test project.
|
||
|
* `com.unity.test-framework.performance` preview package dependency, and moved performance unit tests depending on it into different location.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* `*BitArray.Clear` when clearing with very short bit arrays.
|
||
|
* `NativeQueue.AsParallelWriter` doesn't need to be cached when chaining jobs. Removed unnecessary safety handle that was preventing calling `NativeQueue.AsParallelWriter()` multiple times when scheduling jobs.
|
||
|
|
||
|
|
||
|
## [0.16.0] - 2021-01-26
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Sort methods that return a JobHandle deprecated in favor of new SortJob methods that return a job struct. Less conveniently, the user is responsible for calling Schedule on the struct, but this pattern better accommodates scheduling generic jobs from Bursted code (See https://docs.unity3d.com/Packages/com.unity.entities@latest/index.html?subfolder=/manual/ecs_generic_jobs.html).
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed deprecated `FixedListN.IndexOf` and `SortJob` variants
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* An ENABLE_UNITY_COLLECTIONS_CHECKS define was misspelled. Now Memory is checked for reasonable byte length when enabled.
|
||
|
* Many methods that use `IJob` were marked as `[NotBurstCompatible]` to reflect their true Burst compatibility.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Updated `com.unity.burst` to `1.4.4`
|
||
|
|
||
|
|
||
|
## [0.15.0] - 2020-11-13
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* `NativeReference` constructor to initialize it with existing value.
|
||
|
* `T[] *HashSet.ToArray()` returns an array of all elements in the set.
|
||
|
* xxHash3 now also has a utility method to hash a struct directly (Previously it was only pointer + size)
|
||
|
* `[BurstCompatible]` attribute to FixedList and extensions.
|
||
|
* `[BurstCompatible]` attribute to CollectionHelper.
|
||
|
* `[BurstCompatible]` attribute to FixedBytesN.
|
||
|
* `[BurstCompatible]` attribute to HeapString.
|
||
|
* `[BurstCompatible]` attribute to NativeArrayExtensions.
|
||
|
* `[BurstCompatible]` attribute to NativeBitArray.
|
||
|
* `[BurstCompatible]` attribute to NativeBitArrayUnsafeUtility.
|
||
|
* `[BurstCompatible]` attribute to NativeHashMap.
|
||
|
* `[BurstCompatible]` attribute to NativeHashMapExtensions.
|
||
|
* `[BurstCompatible]` attribute to NativeHashSet.
|
||
|
* `[BurstCompatible]` attribute to NativeList.
|
||
|
* `[BurstCompatible]` attribute to NativeListUnsafeUtility.
|
||
|
* `[BurstCompatible]` attribute to NativeMultiHashMap.
|
||
|
* `[BurstCompatible]` attribute to NativeQueue.
|
||
|
* `[BurstCompatible]` attribute to NativeReference.
|
||
|
* `[BurstCompatible]` attribute to NativeStream.
|
||
|
* `[BurstCompatible]` attribute to NativeString.
|
||
|
* `[BurstCompatible]` attribute to UTF8ArrayUnsafeUtility.
|
||
|
* `[BurstCompatible]` attribute to Unicode and Rune.
|
||
|
* `[BurstCompatible]` attribute to NativeStringView.
|
||
|
* `[BurstCompatible]` attribute to UnsafeAppendBuffer.
|
||
|
* `[BurstCompatible]` attribute to UnsafeAtomicCounter32 and UnsafeAtomicCounter64.
|
||
|
* `[BurstCompatible]` attribute to UnsafeHashMap.
|
||
|
* `[BurstCompatible]` attribute to UnsafeHashSet.
|
||
|
* `[BurstCompatible]` attribute to UnsafeList, UnsafeListExtensions, UnsafePtrList, UnsafePtrListExtensions.
|
||
|
* `[BurstCompatible]` attribute to UnsafeRingQueue.
|
||
|
* `[BurstCompatible]` attribute to UnsafeScratchAllocator.
|
||
|
* `[BurstCompatible]` attribute to UnsafeUtilityExtensions.
|
||
|
* `[BurstCompatible]` attribute to VMRange, Baselib_ErrorState, and VirtualMemoryUtility.
|
||
|
* `[BurstCompatible]` attribute to xxHash3.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Update burst to 1.4.1.
|
||
|
* *BitArray `Length` would previously report backing capacity which is always 64-bit aligned, changed it to report number of bits user requested on allocation. For example, allocating 3 bits will now report `Length` 3 instead capacity which is always aligned to 64-bits.
|
||
|
* Update minimum editor version to 2020.1.2f1
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Code generation for indexers in structs with [BurstCompatible] attribute.
|
||
|
* *BitArray search for empty bits when number of bits is less than 7 and backing storage is fragmented with 0x81 bit pattern.
|
||
|
* Namespace for `*HashSet.ExceptWith/IntersectWith/UnionWith` extension methods, so that use of `Unity.Collections.LowLevel.Unsafe` namespace is not necessary.
|
||
|
* using FixedList.ToNativeArray with collection checks enabled used to throw a null reference exception.
|
||
|
|
||
|
## [0.14.0] - 2020-09-24
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* `*UnsafeBitArray.Find` with pos/count search range arguments.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* `UnsafeStream` block allocation performance has been improved by ~16% by appending to the start of the per-thread block lists rather than the end.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* `FixedList*.InsertRange`, `FixedList*.RemoveRangeSwapBack`, `FixedList*.RemoveRange`, `NativeString*`, `NativeList.RemoveRangeSwapBack`, `NativeList.RemoveRange`, `UnsafeList.RemoveRangeSwapBack`, `UnsafeList.RemoveRange`, `FixedString*.Format`, `FixedString*.AppendFrom`, `NativeHashSet.TryAdd`, `UnsafeHashSet.TryAdd`.
|
||
|
* `[NativeContainerSupportsDeallocateOnJobCompletion]` attribute from `NativeReference` container. It didn't work properly. Users can use `Dispose(JobHandle)` method instead.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* `FixedList<T>` `Remove` and `RemoveSwapBack` extension methods were modifying copy, fixed by passing `this` by reference to modify actual container.
|
||
|
|
||
|
## [0.13.0] - 2020-08-26
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added `*BitArray.Find` linear search for 0-bit range.
|
||
|
* Added `SortJob` extension methods for `NativeList`, `UnsafeList`, `UnsafeList<T>`, and `NativeSlice`.
|
||
|
* Added `Sort` method that accepts custom comparator, and job dependency, to all supported containers.
|
||
|
* Added `BinarySearch` extension methods for `NativeArray`, `NativeList`, `UnsafeList`, `UnsafeList<T>`, and `NativeSlice`.
|
||
|
* Added `foreach` support to `UnsafeList<T>`.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* `Sort` functions that take an `IComparer` no longer require the sorted elements to be `IComparable`
|
||
|
* Bumped Burst to 1.3.5.
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Deprecated `SortJob` with default job dependency argument. Use `Sort` that require an explicit JobHandle argument. If no dependency is needed, pass a default valued JobHandle.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed: `UnsafeUtilityEx`, `Unity.Collections.Experimental*`,`FixedString*.UTF8LengthInBytes`, and `*Stream.ComputeItemCount()`
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Fixed performance regression of `*HashMap.Count()` introduced in Collections 0.10.0.
|
||
|
|
||
|
|
||
|
## [0.12.0] - 2020-08-04
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added `Sort` method with custom comparer to `FixedList*` and `UnsafeList<T>`.
|
||
|
* Added `IsEmpty` property and `Clear` method to `INativeList` intefrace.
|
||
|
* Added `INativeDisposable` interface which provides a mechanism for scheduling
|
||
|
release of unmanaged resources.
|
||
|
* Added `InsertRangeWithBeginEnd` to `NativeList`, `UnsafeList`, `UnsafeList<T>`,
|
||
|
and `UnsafePtrList`.
|
||
|
* Added `AddRange` and `AddRangeNoResize` to `FixedList*`.
|
||
|
* Added properties to `BaselibErrorState` to check if an operation resulted in success, out of memory, or accessing an invalid address range.
|
||
|
* Added `HeapString` type, for arbitrary-length (up to 2GB) heap-allocated strings
|
||
|
compatible with the `FixedString*` methods. Allocating a `HeapString` requires
|
||
|
specifying an allocator and disposing appropriately.
|
||
|
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Deprecated `FixedList*` method `IndexOf` with `index` and `index/count` arguments.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed:
|
||
|
`IJobNativeMultiHashMapMergedSharedKeyIndices`
|
||
|
`JobNativeMultiHashMapUniqueHashExtensions`
|
||
|
`IJobNativeMultiHashMapVisitKeyValue`
|
||
|
`JobNativeMultiHashMapVisitKeyValue`
|
||
|
`IJobNativeMultiHashMapVisitKeyMutableValue`
|
||
|
`JobNativeMultiHashMapVisitKeyMutableValue`
|
||
|
`IJobUnsafeMultiHashMapMergedSharedKeyIndices`
|
||
|
`JobUnsafeMultiHashMapUniqueHashExtensions`
|
||
|
`IJobUnsafeMultiHashMapVisitKeyValue`
|
||
|
`JobUnsafeMultiHashMapVisitKeyValue`
|
||
|
`IJobUnsafeMultiHashMapVisitKeyMutableValue`
|
||
|
`JobUnsafeMultiHashMapVisitKeyMutableValue`
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Fixed `*HashMap.IsEmpty` when items are added and removed from `*HashMap. IsEmpty` previously
|
||
|
used allocated count only to report emptiness, but returning not-empty didn't actually
|
||
|
meant that `*HashMap` is not empty.
|
||
|
* Fixed bug where `*HashSet.Enumerator.Current` would always return the default value instead of the actual value from the set.
|
||
|
* Fixed bug with `*HashMap/Set.Enumerator` returning wrong index and dereferencing out of bounds memory.
|
||
|
|
||
|
|
||
|
## [0.11.0] - 2020-07-10
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added `VirtualMemoryUtility` providing low-level virtual memory utility functions backed by baselib.
|
||
|
* `*HashMap` and `*HashSet` now implement `IEnumerable<>`.
|
||
|
* `ReadArrayElementBoundsChecked` and `WriteArrayElementBoundsChecked` for ease of debugging `ReadArrayElement` and `WriteArrayElement` without sacrificing performance by adding bounds checking directly to those functions.
|
||
|
* Added `InsertRangeWithBeginEnd`, `RemoveRangeSwapBackWithBeginEnd`, and `RemoveRangeWithBeginEnd` to list containers.
|
||
|
`*WithBeginEnd` in name signifies that arguments are begin/end instead of more standard index/count. Once
|
||
|
`InsertRange`, `RemoveRangeSwapBack`, and `RemoveRange` are completely deprecated and removed,
|
||
|
those methods will be added with correct index/count arguments.
|
||
|
* Added `xxHash3` type to expose 64/128bits hashing API using xxHash3 algorithm (corresponding to the C++ version https://github.com/Cyan4973/xxHash/releases/tag/v0.8.0)
|
||
|
### Changed
|
||
|
|
||
|
* Updated minimum Unity Editor version to 2020.1.0b15 (40d9420e7de8)
|
||
|
* Bumped burst to 1.3.2 version.
|
||
|
* Changed `*HashSet.Add` API to return bool when adding element to set.
|
||
|
* `UnsafeUtilityExtensions` is now public.
|
||
|
* `NativeReference` methods `Equals` and `GetHashCode` will now operate on the value instead of the data pointer.
|
||
|
* `FixedString{32,64,128,512,4096}` have been reworked.
|
||
|
* Functionality is shared via generics as much as possible. The API attempts to follow `StringBuilder` semantics.
|
||
|
* `Append` methods now consistently append.
|
||
|
* `Append` variant to append a char was added (appends the `char`, does not resolve to int overload).
|
||
|
* `Format` methods that replaced the contents of the target have been deprecated. Use `Clear()` followed by `Append()`. Because FixedStrings start out cleared, in most cases just an `Append` is sufficient.
|
||
|
* `Format` that takes a format string has been renamed to `AppendFormat`. The static `FixedString.Format` methods still exist for convenience, and return a `FixedString128`.
|
||
|
* It is possible for users to extend the `Append` family of methods to support appending their own types. See `FixedStringAppendMethods.cs` for examples of how to declare your own extension methods.
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Deprecated `*HashSet.TryAdd`. `*HashSet.Add` is equivalent.
|
||
|
* Deprecated `NativeString*`. The functionality is replaced by `FixedString*`.
|
||
|
* Deprecated `InsertRange`, `RemoveRangeSwap`, and `RemoveRange` from list containers, and added
|
||
|
`InsertRangeWithBeginEnd`, `RemoveRangeSwapBackWithBeginEnd`, and `RemoveRangeWithBeginEnd`.
|
||
|
`*WithBeginEnd` in name signifies that arguments are begin/end instead of more standard index/count. Once
|
||
|
`InsertRange`, `RemoveRangeSwapBack`, and `RemoveRange` are completely deprecated and removed,
|
||
|
those methods will be added with correct index/count arguments.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed `System.Runtime.CompilerServices.Unsafe.dll` from package.
|
||
|
|
||
|
|
||
|
### Known Issues
|
||
|
|
||
|
* This version is not compatible with 2020.2.0a17. Please update to the forthcoming alpha.
|
||
|
|
||
|
All containers allocated with `Allocator.Temp` on the same thread use a shared `AtomicSafetyHandle` instance. This is problematic when using `NativeHashMap`, `NativeMultiHashMap`, `NativeHashSet` and `NativeList` together in situations where their secondary safety handle is used. This means that operations that invalidate an enumerator for either of these collections (or the `NativeArray` returned by `NativeList.AsArray`) will also invalidate all other previously acquired enumerators.
|
||
|
For example, this will throw when safety checks are enabled:
|
||
|
```
|
||
|
var list = new NativeList<int>(Allocator.Temp);
|
||
|
list.Add(1);
|
||
|
|
||
|
// This array uses the secondary safety handle of the list, which is
|
||
|
// shared between all Allocator.Temp allocations.
|
||
|
var array = list.AsArray();
|
||
|
|
||
|
var list2 = new NativeHashSet<int>(Allocator.Temp);
|
||
|
|
||
|
// This invalidates the secondary safety handle, which is also used
|
||
|
// by the list above.
|
||
|
list2.TryAdd(1);
|
||
|
|
||
|
// This throws an InvalidOperationException because the shared safety
|
||
|
// handle was invalidated.
|
||
|
var x = array[0];
|
||
|
```
|
||
|
This defect will be addressed in a future release.
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
## [0.10.0] - 2020-05-27
|
||
|
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added `Native/UnsafeHashSet` containers.
|
||
|
* Added `IsEmpty` method to `*Queue`, `*HashMap`, `*MultiHashMap`, `*List`, `FixedString`.
|
||
|
This method should be prefered to `Count() > 0` due to simpler checks for empty container.
|
||
|
* Added a new container `NativeReference` to hold unmanaged allocation.
|
||
|
* Added `CollectionsTestFixture` to enable jobs debugger and verify safety checks are enabled.
|
||
|
* Added `NativeList.CopyFrom(NativeArray<> array)`
|
||
|
|
||
|
### Changed
|
||
|
* Updated minimum Unity Editor version to 2020.1.0b9 (9c0aec301c8d)
|
||
|
* Updated package `com.unity.burst` to version `1.3.0-preview.12`.
|
||
|
* Made several tests inherit `CollectionsTestFixture` to prevent crashing when running tests without jobs debugger or safety checks enabled.
|
||
|
* Added `NativeBitArray.AsNativeArray<T>` method to reinterpret `NativeBitArray` as
|
||
|
`NativeArray` of desired type.
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Deprecated `NativeArrayChunked8` and `NativeArrayFullSOA` from Unity.Collections.Experimental.
|
||
|
* Deprecated `UnsafeUtilityEx.As/AsRef/ArrayElementAsRef`. The functionality is available in `UnsafeUtility`.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* `FixedString` and `FixedList` types now display their contents in the Entity Inspector.
|
||
|
* Fixed `NativeHashMap.ParallelWriter.TryAdd` race condition.
|
||
|
|
||
|
## [0.9.0] - 2020-05-04
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added `RemoveAt` and `RemoveRange` to List containers in collections. These methods remove
|
||
|
elements in list container while preserving order of the list. These methods are slower than
|
||
|
`Remove*SwapBack` methods and users should prefer `Remove*SwapBack` if they don't care about
|
||
|
preserving order inside \*List container.
|
||
|
* Added `*BitArray.Copy` between two different bit arrays.
|
||
|
* Added `NativeBitArrayUnsafeUtility.ConvertExistingDataToNativeBitArray` for assigning view into
|
||
|
data as bit array.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Updated package `com.unity.burst` to version `1.3.0-preview.11`
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Moved `NativeMultiHashMap.Remove<TValueEQ>(TKey key, TValueEq value)` into an extension method and made it Burst compatible
|
||
|
* Fixed bug in `*HashMap.Remove` to not throw when removing from empty hash map.
|
||
|
|
||
|
|
||
|
## [0.8.0] - 2020-04-24
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added `Native/UnsafeBitArray.Copy` for copying or shifting bits inside array.
|
||
|
* Added `UnsafeAtomicCounter32/64` providing helper interface for atomic counter functionality.
|
||
|
* Added `NativeBitArray` providing arbitrary sized bit array functionality with safety mechanism.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Bumped Burst version to improve compile time and fix multiple bugs.
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Deprecated `IJobNativeMultiHashMapMergedSharedKeyIndices`, `JobNativeMultiHashMapUniqueHashExtensions`,
|
||
|
`IJobNativeMultiHashMapVisitKeyValue`, `JobNativeMultiHashMapVisitKeyValue`, `IJobNativeMultiHashMapVisitKeyMutableValue`,
|
||
|
`JobNativeMultiHashMapVisitKeyMutableValue`, and introduced `NativeHashMap.GetUnsafeBucketData` and
|
||
|
`NativeMultiHashMap.GetUnsafeBucketData` to obtain internals to implement deprecated functionality
|
||
|
inside user code. If this functionality is used, the best is to copy deprecated code into user code.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed expired API `class TerminatesProgramAttribute`
|
||
|
|
||
|
|
||
|
## [0.7.1] - 2020-04-08
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Deprecated `Length` property from `NativeHashMap`, `UnsafeHashMap`, `NativeMultiHashMap`,
|
||
|
`UnsafeMultiHashMap`, `NativeQueue`, and replaced it with `Count()` to reflect that there
|
||
|
is computation being done.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Fixed an issue where `FixedListDebugView<T>` only existed for IComparable types, which lead to a crash while debugging other types.
|
||
|
* Removed code that made NativeStream incompatible with Burst.
|
||
|
|
||
|
|
||
|
## [0.7.0] - 2020-03-13
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added ability to dispose NativeKeyValueArrays from job (DisposeJob).
|
||
|
* Added `NativeQueue<T>.ToArray` to copy a native queue to an array efficiently
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Upgraded Burst to fix multiple issues and introduced a native debugging feature.
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* Deprecated `Length` property from `NativeHashMap`, `UnsafeHashMap`, `NativeMultiHashMap`,
|
||
|
`UnsafeMultiHashMap`, `NativeQueue`, and replaced it with `Count()` to reflect that there
|
||
|
is computation being done.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed expired API `CollectionHelper.CeilPow2()`
|
||
|
* Removed expired API `CollectionHelper.lzcnt()`
|
||
|
* Removed expired API `struct ResizableArray64Byte<T>`
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Removed code that made `NativeStream` incompatible with Burst.
|
||
|
|
||
|
|
||
|
## [0.6.0] - 2020-03-03
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added ability to dispose `UnsafeAppendBuffer` from a `DisposeJob`.
|
||
|
* Added NativeHashSetExtensions and UnsafeHashSetExtensions for HashSetExtensions in different namespaces.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* `UnsafeAppendBuffer` field `Size` renamed to `Length`.
|
||
|
* Removed `[BurstDiscard]` from all validation check functions. Validation is present in code compiled with Burst.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed expired overloads for `NativeStream.ScheduleConstruct` without explicit allocators.
|
||
|
* Removed HashSetExtensions, replaced with NativeHashSetExtensions and UnsafeHashSetExtensions.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Fixed `UnsafeBitArray` out-of-bounds access.
|
||
|
|
||
|
|
||
|
## [0.5.2] - 2020-02-17
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Changed `NativeList<T>` parallel reader/writer to match functionality of `UnsafeList` parallel reader/writer.
|
||
|
* Updated dependencies of this package.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed expired API `UnsafeUtilityEx.RestrictNoAlias`
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Fixed bug in `NativeList.CopyFrom`.
|
||
|
|
||
|
|
||
|
## [0.5.1] - 2020-01-28
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Updated dependencies of this package.
|
||
|
|
||
|
|
||
|
## [0.5.0] - 2020-01-16
|
||
|
|
||
|
### Added
|
||
|
|
||
|
* Added `UnsafeRingQueue<T>` providing fixed-size circular buffer functionality.
|
||
|
* Added missing `IDisposable` constraint to `UnsafeList` and `UnsafeBitArray`.
|
||
|
* Added `ReadNextArray<T>` to access a raw array (pointer and length) from an `UnsafeAppendBuffer.Reader`.
|
||
|
* Added FixedString types, guaranteed binary-layout identical to NativeString types, which they are intended to replace.
|
||
|
* Added `FixedList<T>` generic self-contained List struct
|
||
|
* Added `BitArray.SetBits` with arbitrary ulong value.
|
||
|
* Added `BitArray.GetBits` to retrieve bits as ulong value.
|
||
|
|
||
|
### Changed
|
||
|
|
||
|
* Changed `UnsafeBitArray` memory initialization option default to `NativeArrayOptions.ClearMemory`.
|
||
|
* Changed `FixedList` structs to pad to natural alignment of item held in list
|
||
|
|
||
|
### Deprecated
|
||
|
|
||
|
* `BlobAssetComputationContext.AssociateBlobAssetWithGameObject(int, GameObject)` replaced by its `UnityEngine.Object` counterpart `BlobAssetComputationContext.AssociateBlobAssetWithUnityObject(int, UnityEngine.Object)` to allow association of BlobAsset with any kind of `UnityEngine.Object` derived types.
|
||
|
* Adding removal dates to the API that have been deprecated but did not have the date set.
|
||
|
|
||
|
### Removed
|
||
|
|
||
|
* Removed `IEquatable` constraint from `UnsafeList<T>`.
|
||
|
|
||
|
### Fixed
|
||
|
|
||
|
* Fixed `BitArray.SetBits`.
|
||
|
|
||
|
|
||
|
## [0.4.0] - 2019-12-16
|
||
|
|
||
|
**This version requires Unity 2019.3.0f1+**
|
||
|
|
||
|
### New Features
|
||
|
|
||
|
* Adding `FixedListTN` as a non-generic replacement for `ResizableArrayN<T>`.
|
||
|
* Added `UnsafeBitArray` providing arbitrary sized bit array functionality.
|
||
|
|
||
|
### Fixes
|
||
|
|
||
|
* Updated performance package dependency to 1.3.2 which fixes an obsoletion warning
|
||
|
* Adding `[NativeDisableUnsafePtrRestriction]` to `UnsafeList` to allow burst compilation.
|
||
|
|
||
|
|
||
|
## [0.3.0] - 2019-12-03
|
||
|
|
||
|
### New Features
|
||
|
|
||
|
* Added fixed-size `BitField32` and `BitField64` bit array.
|
||
|
|
||
|
### Changes
|
||
|
|
||
|
Removed the following deprecated API as announced in/before `0.1.1-preview`:
|
||
|
|
||
|
* Removed `struct Concurrent` and `ToConcurrent()` for `NativeHashMap`, `NativeMultiHashMap` and `NativeQueue` (replaced by the *ParallelWriter* API).
|
||
|
* From NativeStream.cs: `struct NativeStreamReader` and `struct NativeStreamWriter`, replaced by `struct NativeStream.Reader` and `struct NativeStream.Writer`.
|
||
|
* From NativeList.cs: `ToDeferredJobArray()` (replaced by `AsDeferredJobArray()` API).
|
||
|
|
||
|
|
||
|
## [0.2.0] - 2019-11-22
|
||
|
|
||
|
**This version requires Unity 2019.3 0b11+**
|
||
|
|
||
|
### New Features
|
||
|
|
||
|
* Added fixed-size UTF-8 NativeString in sizes of 32, 64, 128, 512, and 4096 bytes.
|
||
|
* Added HPC# functions for float-to-string and string-to-float.
|
||
|
* Added HPC# functions for int-to-string and string-to-int.
|
||
|
* Added HPC# functions for UTF16-to-UTF8 and UTF8-to-UTF16.
|
||
|
* New `Native(Multi)HashMap.GetKeyValueArrays` that will query keys and values
|
||
|
at the same time into parallel arrays.
|
||
|
* Added `UnsafeStream`, `UnsafeHashMap`, and `UnsafeMultiHashMap`, providing
|
||
|
functionality of `NativeStream` container but without any safety mechanism
|
||
|
(intended for advanced users only).
|
||
|
* Added `AddNoResize` methods to `NativeList`. When it's known ahead of time that
|
||
|
list won't grow, these methods won't try to resize. Rather exception will be
|
||
|
thrown if capacity is insufficient.
|
||
|
* Added `ParallelWriter` support for `UnsafeList`.
|
||
|
* Added `UnsafeList.TrimExcess` to set capacity to actual number of elements in
|
||
|
the container.
|
||
|
* Added convenience blittable `UnsafeList<T>` managed container with unmanaged T
|
||
|
constraint.
|
||
|
|
||
|
### Changes
|
||
|
|
||
|
* `UnsafeList.Resize` now doesn't resize to lower capacity. User must call
|
||
|
`UnsafeList.SetCapacity` to lower capacity of the list. This applies to all other
|
||
|
containers based on `UnsafeList`.
|
||
|
* Updated dependencies for this package.
|
||
|
|
||
|
### Fixes
|
||
|
|
||
|
* Fixed NativeQueue pool leak.
|
||
|
|
||
|
|
||
|
## [0.1.1] - 2019-08-06
|
||
|
|
||
|
### Fixes
|
||
|
|
||
|
* `NativeHashMap.Remove(TKey key, TValueEQ value)` is now supported in bursted code.
|
||
|
* Adding deprecated `NativeList.ToDeferredJobArray()` back in - Use `AsDeferredJobArray()`
|
||
|
instead. The deprecated function will be removed in 3 months. This can not be auto-upgraded
|
||
|
prior to Unity `2019.3`.
|
||
|
* Fixing bug where `TryDequeue` on an empty `NativeQueue` that previously had enqueued elements could leave it in
|
||
|
an invalid state where `Enqueue` would fail silently afterwards.
|
||
|
|
||
|
### Changes
|
||
|
|
||
|
* Updated dependencies for this package.
|
||
|
|
||
|
|
||
|
## [0.1.0] - 2019-07-30
|
||
|
|
||
|
### New Features
|
||
|
|
||
|
* NativeMultiHashMap.Remove(key, value) has been addded. It lets you remove
|
||
|
all key & value pairs from the hashmap.
|
||
|
* Added ability to dispose containers from job (DisposeJob).
|
||
|
* Added UnsafeList.AddNoResize, and UnsafeList.AddRangeNoResize.
|
||
|
* BlobString for storing string data in a blob
|
||
|
|
||
|
### Upgrade guide
|
||
|
|
||
|
* `Native*.Concurrent` is renamed to `Native*.ParallelWriter`.
|
||
|
* `Native*.ToConcurrent()` function is renamed to `Native*.AsParallelWriter()`.
|
||
|
* `NativeStreamReader/Writer` structs are subclassed and renamed to
|
||
|
`NativeStream.Reader/Writer` (note: changelot entry added retroactively).
|
||
|
|
||
|
### Changes
|
||
|
|
||
|
* Deprecated ToConcurrent, added AsParallelWriter instead.
|
||
|
* Allocator is not an optional argument anymore, user must always specify the allocator.
|
||
|
* Added Allocator to Unsafe\*List container, and removed per method allocator argument.
|
||
|
* Introduced memory intialization (NativeArrayOptions) argument to Unsafe\*List constructor and Resize.
|
||
|
|
||
|
### Fixes
|
||
|
|
||
|
* Fixed UnsafeList.RemoveRangeSwapBack when removing elements near the end of UnsafeList.
|
||
|
* Fixed safety handle use in NativeList.AddRange.
|
||
|
|
||
|
|
||
|
## [0.0.9-preview.20] - 2019-05-24
|
||
|
|
||
|
### Changes
|
||
|
|
||
|
* Updated dependencies for `Unity.Collections.Tests`
|
||
|
|
||
|
|
||
|
## [0.0.9-preview.19] - 2019-05-16
|
||
|
|
||
|
### New Features
|
||
|
|
||
|
* JobHandle NativeList.Dispose(JobHandle dependency) allows Disposing the container from a job.
|
||
|
* Exposed unsafe NativeSortExtension.Sort(T* array, int length) method for simpler sorting of unsafe arrays
|
||
|
* Imporoved documentation for `NativeList`
|
||
|
* Added `CollectionHelper.WriteLayout` debug utility
|
||
|
|
||
|
### Fixes
|
||
|
|
||
|
* Fixes a `NativeQueue` alignment issue.
|
||
|
|
||
|
|
||
|
## [0.0.9-preview.18] - 2019-05-01
|
||
|
|
||
|
Change tracking started with this version.
|