- Fix documentation typos.
- Fix accidental free of some objects when returned.
- Improve exception messages.
- Fix contention.
- Micro optimization during first call of
ObjectPool<T>.Shared.Return(T)
in an specific thread. - Micro optimization during automatic trimming of
ObjectPool<T>.Shared
. - Support
Trim(bool)
inObjectPool<T>.Shared
. - Fix
ObjectPool<T>.Object.Rent()
not working whenT
is a value type. - Reduce IL size by deduplicating classes.
- Reduce generic instantiations when using code.
- Fix possible racing condition in
ObjectPool<T>.Shared
whereT
is a value type. - Rename
DynamicObjectPool<T>
toFastObjectPool<T>
andDynamicValueObjectPool<T>
toSafeObjectPool<T>
and removewhere T : struct
constraint. - Add
SafeObjectPool<T>
. - Support pooling default elements in
SafeValueObjectPool<T>
. - Replace constructors in
FastObjectPool<T>
andSafeValueObjectPool<T>
and add init-only properties to configure it. - Support configuring if its reserve (previously known as cold capacity) can be resized in
FastObjectPool<T>
andSafeValueObjectPool<T>
. - Support disposing and custom dispoing in
SafeValueObjectPool<T>
. - Fix
Trim(bool)
inObjectPool<T>.Shared
not trimming correctly values. - Support disposing in
ObjectPool<T>.Shared
. - Add
ExactLengthArrayPool<T>
,SafeExactLengthArrayPoool<T>
andSafeExactLengthArrayObjectPool<T>
.
- Improve documentation.
- Fix documentation typos.
- Fix error when using value types without parameterless constructor.
- Reduce memory consumption of
DynamicValueObjectPool<T>
. - Minimal performance improvements.
- Tweak exception message thrown when a public parameterless constructor is not found for reference types and no factory was provided.
- Fix trimming not preserving public parameterless constructors of types used in pools.
- Fix
ObjectPool<T>.Shared
throwing whenT
is a value type.
- Add support for trimming.
- Fix object references not being cleaned correctly in
ObjectPool<T>.Shared
whereT
is a reference type. - Fix
ObjectPool<T>.Shared.Return(T obj)
storing twice the same object. - Minimal performance improvements in
ObjectPool<T>.Shared
whereT
is an unmanaged value type.
- Remove
class
constraint in generic parameterT
inObjectPool<T>
. - Add
DynamicValueObjectPool<T>
. - Improve documentation of
ObjectPool<T>
. - Rename parameter
obj
toelement
ofObjectPool<T>.Return(T obj)
.
- Fix documentation
- Specify that
ObjectPool<T>.ApproximateCount()
must return-1
if the operation is not supported. - Specify that
ObjectPool<T>.Return(T obj)
must never fail silently ifobj
isnull
. - Fix
DynamicObjectPool<T>
not auto-trimming. - Fix
ThreadLocalOverPerLockedStacksObjectPool<T>.Rent()
(implementation behindObjectPool<T>.Shared.Rent()
) throwing when getting elements from global reserve.
Initial release.