- 💥⚡️ Overhauled
ReaderWriterLockSlimExtensions.With[…]Lock()extensions, now with almost no overhead; - 📝 Updated README to say that this package is not meant for performance-critical scenarios;
- ⚡️ Replaced
throw new ArgumentNullException()withArgumentNullException.ThrowIfNullin some places; - ⚡️ Improved performance of
ReaderWriterLockSlimExtensions.With[…]Lock()extensions;
- 🧩 Replaced
net8.0target withnet9.0. Now targets:net9.0,netcoreapp3.0,netcoreapp2.1,netcoreapp1.0,netstandard2.1,netstandard1.0,net45,net35; - ✨ Added
allows ref structanti-constraints where needed;
- 🧩 Removed unnecessary
netstandard2.0target. Now targets:net8.0,netcoreapp3.0,netcoreapp2.1,netcoreapp1.0,netstandard2.1,netstandard1.0,net45,net35;
- ✨ Added
static class HashCodeExtensions; - ✨ Added
HashCodeExtensions.AddRange<T>(this HashCode, ReadOnlySpan<T>); - ✨ Added
HashCodeExtensions.AddRange<T>(this HashCode, ReadOnlySpan<T>, IEqualityComparer<T>?); - ✨ Added
HashCodeExtensions.AddRange<T>(this HashCode, IEnumerable<T>); - ✨ Added
HashCodeExtensions.AddRange<T>(this HashCode, IEnumerable<T>, IEqualityComparer<T>?); - 🧩 Added
netcoreapp2.1andnetstandard2.0targets. Now targets:net8.0,netcoreapp3.0,netcoreapp2.1,netcoreapp1.0,netstandard2.1,netstandard2.0,netstandard1.0,net45,net35; - ⚡️ Microoptimized IL code size of
DelegateDisposable's constructor;
- ✨ Added
static class WeakReferenceExtensions; - ✨ Added
WeakReferenceExtensions.TryGetTarget(this WeakReference, out object?); - ✨ Added
WeakReferenceExtensions.GetTargetOrDefault(this WeakReference); - ✨ Added
WeakReferenceExtensions.GetTargetOrDefault<T>(this WeakReference<T>);
- ♻️ Refactored shimmed attributes;
- 🧩 Added
net35target. Now targets:net8.0,netcoreapp3.0,netcoreapp1.0,netstandard2.1,netstandard1.0,net45,net35;
- 📄 Updated license information;
- ✨ Added
static Util.Swap<T>(ref T, ref T);
- ✨ Added
static DelegateDisposable.Create<TState>(Func<TState>, Action<TState>);
- 🧩 Retargeted to:
net8.0,netcoreapp3.0,netcoreapp1.0,netstandard2.1,netstandard1.0,net45;
- ⬆️ Upgraded
JetBrains.Annotationsfrom 2023.2.0 to 2023.3.0; - 🧑💻 Added
[MustDisposeResource],[HandlesResourceDisposal]code analysis attributes;
- ✨ Added
class DelegateDisposable : IDisposable; - ✨ Added
DelegateDisposable(Action); - ✨ Added
DelegateDisposable.Dispose(); - ✨ Added
DelegateDisposable.Dispose(bool); - ✨ Added
static DelegateDisposable.Create(Action, Action); - ✨ Added
static class ReaderWriterLockSlimExtensions; - ✨ Added
ReaderWriterLockSlimExtensions.WithReaderLock(this ReaderWriterLockSlim); - ✨ Added
ReaderWriterLockSlimExtensions.WithUpgradeableReaderLock(this ReaderWriterLockSlim); - ✨ Added
ReaderWriterLockSlimExtensions.WithWriterLock(this ReaderWriterLockSlim);
- 🧩 Retargeted to:
net7.0,netcoreapp3.0,netcoreapp1.0,netstandard2.1,netstandard1.0,net45; - ✨ Added
Util.With<TResult>(IDisposable, Func<TResult>); - ✨ Added
Util.With<T>(T, Func<T, TResult>);
- ✨ Added
Util.Catch(Action); - ✨ Added
Util.Catch<TResult>(Func<TResult>, out TResult?); - ✨ Added
Util.Catch<TException>(Action); - ✨ Added
Util.Catch<TException, TResult>(Func<TResult>, out TResult?); - ✨ Added
Util.Is<T>(object?, out T?);
- 🧩 Targets:
net7.0,netcoreapp3.1,netstandard2.1; - ✨ Added
static class Util; - ✨ Added
Util.Fail<T>(out T?); - ✨ Added
Util.Fail<T1, T2>(out T1?, out T2?); - ✨ Added
Util.Fail<T1, T2, T3>(out T1?, out T2?, out T3?); - ✨ Added
Util.Fail<TReturn, T>(TReturn, out T?); - ✨ Added
Util.Fail<TReturn, T1, T2>(TReturn, out T1?, out T2?); - ✨ Added
Util.Fail<TReturn, T1, T2, T3>(TReturn, out T1?, out T2?, out T3?);