.NEXT
====
[](https://dev.azure.com/dotnet/dotNext/_build/latest?definitionId=1&branchName=master)
[](https://github.com/dotnet/dotNext/blob/master/LICENSE)

[](https://github.com/dotnet/dotNext/actions?query=workflow%3ACodeQL)
[](https://deepwiki.com/dotnet/dotNext)
.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:
* [Buffer manipulations](https://dotnet.github.io/dotNext/features/io/buffers.html)
* [String building](https://dotnet.github.io/dotNext/features/core/stringb.html)
* Monadic types
* Advanced [GC notifications](https://dotnet.github.io/dotNext/features/core/gcnotif.html)
* Low-level API to work with memory: [alignment detection](https://dotnet.github.io/dotNext/features/core/intrinsics.html), type-safe unmanaged allocators, [Span<T>](https://learn.microsoft.com/en-us/dotnet/api/system.span-1) manipulations
* Base64 streaming [encoder/decoder](https://dotnet.github.io/dotNext/features/core/base64.html)
* Async-friendly [SIEVE cache](https://dotnet.github.io/dotNext/features/cache/index.html)
* [Async locks](https://dotnet.github.io/dotNext/features/threading/index.html)
* Extended LINQ Expression Trees and dynamic code generation tools with async lambdas for [metaprogramming](https://dotnet.github.io/dotNext/features/metaprogramming/index.html)
* [Raft Consensus Algorithm](https://dotnet.github.io/dotNext/features/cluster/raft.html) with extensions such as the failure detection
* Fast general-purpose [Write Ahead Log](https://dotnet.github.io/dotNext/features/cluster/wal.html)
* [TCP multiplexing](https://dotnet.github.io/dotNext/features/cluster/multiplex.html) protocol
* [HyParView protocol](https://dotnet.github.io/dotNext/features/cluster/gossip.html) implementation
All these things are implemented in 100% managed code on top of existing .NET API.
# Quick Links
* [Features](https://dotnet.github.io/dotNext/features/core/index.html)
* [API documentation](https://dotnet.github.io/dotNext/api/DotNext.html)
* [Benchmarks](https://dotnet.github.io/dotNext/benchmarks.html)
* [NuGet Packages](https://www.nuget.org/profiles/rvsakno)
# AI Agent Skills
.NEXT provides [Agent Skills](https://agentskills.io) that teach AI coding agents (Claude Code, Codex, GitHub Copilot, Cursor and others) how to use the libraries efficiently:
* `dotnext-core` - Optional and Result monads, timestamps, type maps, console app lifetime, etc.
* `dotnext-threading` - asynchronous programming, async locks, etc.
* `dotnext-concurrency` - concurrent data structures
* `dotnext-memory` - allocation-free memory routines, buffer writers, memory pooling
To install:
Claude Code:
```sh
/plugin marketplace add dotnet/dotNext
/plugin install dotnext-skills@dotnext
```
Codex:
```sh
codex plugin marketplace add dotnet/dotNext
codex plugin add dotnext-skills@dotnext
```
Any agent supporting Agent Skills, via [skills CLI](https://github.com/vercel-labs/skills):
```sh
npx skills add dotnet/dotNext
```
Alternatively, copy the skill folders from [ai/plugins/dotnext-skills/skills](ai/plugins/dotnext-skills/skills) to the skills directory of your agent, e.g. `.claude/skills/` for Claude Code, or `.agents/skills/` for Codex and GitHub Copilot.
# What's new
Release Date: 10-26-2026
<a href="https://www.nuget.org/packages/dotnext/6.11.0">DotNext 6.11.0</a>
* Added `ApplicationLock` class that allows only one running instance of the application, based on the exclusively opened lock file
* `Epoch` now supports deferred release of unmanaged resources through `INativeResourceManager` interface and `RecycleBin.Defer(nuint)` method, without extra allocations
* Replaced `Epoch.UnsafeClear` method with thread-safe `TryClear` and `ClearAsync` methods
* `Epoch.RecycleBin` no longer allocates memory for the deferred actions
* Added `Volatile.Read` and `Volatile.Write` static extension methods for pointer-to-pointer locations
* Added `MemoryMarshal.AsReadOnlyBytes` static extension method to represent a string as a span over bytes
* Added `IEqualityComparer<ReadOnlySpan<byte>>.Default` static extension property
* Fixed memory leaks in `BufferWriterSlim<T>.DetachOrCopyBuffer` and `BufferWriter<T>.DetachBuffer` methods
<a href="https://www.nuget.org/packages/dotnext.metaprogramming/6.11.0">DotNext.Metaprogramming 6.11.0</a>
* Updated dependencies
<a href="https://www.nuget.org/packages/dotnext.unsafe/6.11.0">DotNext.Unsafe 6.11.0</a>
* Introduced `Pointer<T>.IsStackAllocated` property
<a href="https://www.nuget.org/packages/dotnext.threading/6.11.0">DotNext.Threading 6.11.0</a>
* Added `RandomAccessCache<TValue>`, the unmanaged version of SIEVE-based cache with keys represented by bytes. Its entries are allocated in the native memory and reclaimed with `Epoch`
* Added `AsyncParkingLot` synchronization primitive that represents a set of wait queues shared by many lightweight asynchronous locks
* `RandomAccessCache<TKey, TValue>` uses `AsyncParkingLot` instead of per-bucket locks to reduce memory footprint. The concurrency level can be specified in the constructor
* Fixed eviction state corruption in `RandomAccessCache<TKey, TValue>`
* Fixed lost promotion and race condition between the reader and the resize process in `RandomAccessCache<TKey, TValue>`
* Improved CPU cache locality of `RandomAccessCache<TKey, TValue>`
* Fixed [304](https://github.com/dotnet/dotNext/issues/304)
<a href="https://www.nuget.org/packages/dotnext.io/6.11.0">DotNext.IO 6.11.0</a>
* Fixed potential race condition in `DiskSpacePool` that could lead to returning the same segment twice
* Removed `AppendAndCommitAsync` default method from `IAuditTrail<TEntry>` interface
<a href="https://www.nuget.org/packages/dotnext.net.cluster/6.11.0">DotNext.Net.Cluster 6.11.0</a>
* Fixed [305](https://github.com/dotnet/dotNext/issues/305)
* Fixed [307](https://github.com/dotnet/dotNext/pull/307)
* `WriteAheadLog` now produces checkpoint on every commit to ensure consistency. `FlushInterval` and `FlushOnCommit` configuration properties are deprecated and have no effect
* `WriteAheadLog.Options.Allocator` property returns default allocator if not specified explicitly
<a href="https://www.nuget.org/packages/dotnext.aspnetcore.cluster/6.11.0">DotNext.AspNetCore.Cluster 6.11.0</a>
* Fixed [305](https://github.com/dotnet/dotNext/issues/305)
<a href="https://www.nuget.org/packages/dotnext.maintenanceservices/1.11.0">DotNext.MaintenanceServices 1.11.0</a>
* `CommandLineMaintenanceInterfaceHost` now supports custom Unix file mode for Unix Domain Socket pseudofile
Changelog for previous versions located [here](./CHANGELOG.md).
# Release & Support Policy
The libraries are versioned according to [Semantic Versioning 2.0](https://semver.org/).
| Version | .NET compatibility | Support Level |
| ---- | ---- | ---- |
| 0.x | .NET Standard 2.0 | :x: |
| 1.x | .NET Standard 2.0 | :x: |
| 2.x | .NET Standard 2.1 | :x: |
| 3.x | .NET Standard 2.1, .NET 5 | :x: |
| 4.x | .NET 6 | :x: |
| 5.x | .NET 8 | :white_check_mark: |
| 6.x | .NET 10 | :heavy_check_mark: |
:x: - unsupported, :white_check_mark: - bug and security fixes only, :heavy_check_mark: - active development
# Development Process
Philosophy of development process:
1. All libraries in .NEXT family are available for various .NET form factors: Mono, WASM, NativeAOT
1. Minimal set of dependencies
1. Provide high-quality documentation
1. Stay cross-platform
1. Provide benchmarks
# 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](https://dotnetfoundation.org/code-of-conduct).
For more information see the [Code of Conduct FAQ](https://www.contributor-covenant.org/faq/) or
contact [conduct@dotnetfoundation.org](mailto:conduct@dotnetfoundation.org) with any additional questions or comments.