Skip to content

dotnet/dotNext

Repository files navigation

.NEXT

Build Status License Test Coverage CodeQL Ask DeepWiki

.NEXT (dotNext) is a set of powerful libraries designed for high-performance scenarios when your application expects near zero memory allocation and high flexibility. It is aimed to high-load microservices, database engines, actors, and various types of distributed applications. The feature list includes a rich set of efficient tools with low overhead:

All these things are implemented in 100% managed code on top of existing .NET API.

Quick Links

What's new

Release Date: 03-09-2026

.NEXT 6.0.0 has been released! Migration guide is here. All changes are mostly driven by Extension Members feature in C# 14. Most of the things in .NEXT now expressed naturally as extensions for existing .NET classes.

DotNext 6.0.0

  • Introduced convenient operators to work with spans: >>> for safe copying and % for trimming
  • BufferWriterSlim<T> now implements IBufferWriter<T> interface which allows to use it in generic scenarios
  • Greatly improved performance of bit vector conversion methods exposed by Number class
  • Removed memory allocation caused by Bind extension methods
  • Added convenient static extension methods to Stream class
  • Improved AOT compatibility
  • Introduced Variant type that represents the functionality similar to TypedReference but without related compiler restrictions
  • Added allows ref struct anti-constraint to many parts of the library
  • Improved performance of ConcurrentTypeMap class
  • Built-in delegate types from .NET are extended with static extension methods
  • Added static extensions to ArgumentOutOfRangeException class to cover more validation scenarios
  • Introduced Enum<T> to enable the power of the Generic Math when working with enums
  • All zero-alloc and encoding interpolation string handlers now in one place: DotNext.Text namespace
  • Added += operator overloading to SpanWriter<T> and BufferWriterSlim<T> types
  • Added cancellation token support to Lock and Thread classes

DotNext.Metaprogramming 6.0.0

  • Expression nodes can be combined with built-in operators: +, -, /, etc.

DotNext.Unsafe 6.0.0

  • OpaqueValue<T> type is introduced to unify the way of passing value types and reference types to unmanaged code. It's especially useful for passing .NET data types to the unmanaged callbacks implemented in C#
  • Added static extension properties to MemoryAllocator<T> delegate to expose unmanaged memory allocators

DotNext.Threading 6.0.0

  • CancellationTokenMultiplexer has improved CTS pooling mechanism
  • Introduced fast bounded object pool
  • Significantly reduced contention overhead in async locks

DotNext.IO 5.26.0

  • Added static extension methods to Stream class
  • Improved integration between IJsonSerializable<T> interface and JSON serialization infrastructure in .NET

DotNext.Net.Cluster 6.0.0

  • Old WAL implementation represented by MemoryBasedStateMachine and DiskBasedStateMachine classes is completely removed in favor of WriteAheadLog class
  • Improved performance of the log entry serialization
  • Improved AOT compatibility

DotNext.AspNetCore.Cluster 6.0.0

  • Improved AOT compatibility

DotNext.MaintenanceServices 1.0.0

  • Upgrade to System.CommandLine stable release
  • Stabilized public API surface

Release & Support Policy

The libraries are versioned according to Semantic Versioning 2.0.

Version .NET compatibility Support Level
0.x .NET Standard 2.0
1.x .NET Standard 2.0
2.x .NET Standard 2.1
3.x .NET Standard 2.1, .NET 5
4.x .NET 6
5.x .NET 8
6.x .NET 10 ✔️

❌ - unsupported, ✅ - bug and security fixes only, ✔️ - active development

Development Process

Philosophy of development process:

  1. All libraries in .NEXT family are available for various .NET form factors: Mono, WASM, NativeAOT
  2. Minimal set of dependencies
  3. Provide high-quality documentation
  4. Stay cross-platform
  5. Provide benchmarks

Users

.NEXT is used by several companies in their projects:

Copenhagen Atomics

Wargaming

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the .NET Foundation Code of Conduct. For more information see the Code of Conduct FAQ or contact conduct@dotnetfoundation.org with any additional questions or comments.