.NEXT (dotNext) is a set of powerful libraries aimed to improve development productivity and extend .NET API with unique features. Some of these features are planned in future releases of .NET platform but already implemented in the library:
Proposal | Implementation |
---|---|
Static Delegates | Value Delegates |
Operators for IntPtr and UIntPtr | Extension methods for arithmetic, bitwise and comparison operations |
Enum API | Documentation |
Check if an instance of T is a default(T) | IsDefault() method |
Concept Types | Documentation |
Expression Trees covering additional language constructs, i.e. foreach , await , patterns, multi-line lambda expressions |
Metaprogramming |
Async Locks | Documentation |
High-performance general purpose Write-Ahead Log | Persistent Log |
Memory-mapped file as Memory<byte> | MemoryMappedFileExtensions |
Memory-mapped file as ReadOnlySequence<byte> | ReadOnlySequenceAccessor |
Quick overview of additional features:
- Attachment of user data to arbitrary objects
- Automatic generation of Equals/GetHashCode for arbitrary type at runtime which is much better that Visual Studio compile-time helper for generating these methods
- Extended set of atomic operations. Inspired by AtomicInteger and friends from Java
- Fast Reflection
- Fast conversion of bytes to hexadecimal representation and vice versa using
ToHex
andFromHex
methods from Span static class ManualResetEvent
,ReaderWriterLockSlim
and other synchronization primitives now have their asynchronous versions- Atomic memory access operations for arbitrary value types including enums
- PipeExtensions provides high-level I/O operations for pipelines such as string encoding and decoding
- Fully-featured Raft implementation
All these things are implemented in 100% managed code on top of existing .NET Standard stack without modifications of Roslyn compiler or CoreFX libraries.
Documentation for older versions:
Release Date: 09-29-2020
- Fixed correctness of
Clear(bool)
method overridden byPooledArrayBufferWriter<T>
andPooledBufferWriter<T>
classes - Added
RemoveLast
andRemoveFirst
methods toPooledArrayBufferWriter<T>
class Optional<T>
type distinguishes null and undefined value- DotNext.Sequence class is now deprecated and replaced with DotNext.Collections.Generic.Sequence class. It's binary compatible but source incompatible change
- Added new API for writing resource string readers. It utilizes Caller Info feature in C# to resolve resource entry name using accessor method or property
- Introduced BufferWriterSlim<T> type as lightweight and stackalloc-friendly version of PooledBufferWriter<T> type
- Introduced SpanReader<T> and SpanWriter<T> types that can be used for sequential access to the elements in the memory span
- Removed unused resource strings
- Updated dependencies
DotNext.Metaprogramming 2.10.1
- Added extension methods of ExpressionBuilder class for constructing expressions of type Optional<T>, Result<T> or Nullable<T>
- Fixed bug with expression building using dynamic keyword
- UniversalExpression is superseded by ExpressionBuilder.AsDynamic extension method
- Removed unused resource strings
- Updated dependencies
- Removed unused resource strings
- Updated dependencies
- AsyncExchanger<T> class now has a method for fast synchronous exchange
- AsyncTimer implements IAsyncDisposable for graceful shutdown
- Removed unused resource strings
- Updated dependencies
- Pointer<T> value type now implements IPinnable interface
- Added interop between Pointer<T> and System.Reflection.Pointer
- Removed unused resource strings
- Updated dependencies
- Removed unused resource strings
- Updated dependencies shipped with .NET Core 3.1.8
DotNext.AspNetCore.Cluster 2.10.1
- Removed unused resource strings
- Updated dependencies shipped with .NET Core 3.1.8
Changelog for previous versions located here.
- The libraries are versioned according with Semantic Versioning 2.0.
- Version 0.x and 1.x relies on .NET Standard 2.0
- Version 2.x relies on .NET Standard 2.1
Version | .NET compatibility | Support Level |
---|---|---|
0.x | .NET Standard 2.0 | Not Supported |
1.x | .NET Standard 2.0 | Maintenance |
2.x | .NET Standard 2.1 | Active Development |
Maintenance support level means that new releases will contain bug fixes only.
DotNext.AspNetCore.Cluster of version 1.x is no longer supported because of ASP.NET Core 2.2 end-of-life.
DotNext.Net.Cluster of version 1.x is no longer supported due to few reasons:
- Underlying implementation for ASP.NET Core is no longer supported
- Raft implementation is incomplete
Philosophy of development process:
- All libraries in .NEXT family based on .NET Standard to be available for wide range of .NET implementations: Mono, Xamarin, .NET Core
- Compatibility with AOT compiler should be checked for every release
- Minimize set of dependencies
- Rely on .NET Standard specification
- Provide high-quality documentation
- Stay cross-platform
- Provide benchmarks