Skip to content

dotnet/dotNext

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
December 16, 2022 12:42
February 14, 2023 23:06
July 7, 2021 22:01
src
March 7, 2023 20:01
March 6, 2023 19:38
June 11, 2021 20:29
April 10, 2020 17:32
March 6, 2023 19:38
February 20, 2019 21:50

.NEXT

Build Status License Test Coverage CodeQL Join the chat

.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
Interop between function pointer and delegate DelegateHelpers factory methods
Check if an instance of T is default(T) IsDefault() method
Concept Types Documentation
Expression Trees covering additional language constructs, e.g. 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
A dictionary where the keys are represented by generic arguments Documentation
Process asynchronous tasks as they complete Documentation
Soft References Documentation

Quick overview of additional features:

All these things are implemented in 100% managed code on top of existing .NET API without modifications of Roslyn compiler or CoreFX libraries.

Quick Links

What's new

Release Date: 03-07-2023

DotNext 4.11.0

DotNext.Metaprogramming 4.11.0

  • Updated dependencies

DotNext.Unsafe 4.11.0

  • Added methods to Pointer<T> data type for unaligned memory access

DotNext.Threading 4.11.0

  • Added special methods to AsyncTrigger class to implement asynchronous spin-wait
  • AsyncTrigger<T> is deprecated in favor of QueuedSynchronizer<T>
  • Introduced QueuedSynchronizer<T> class that provides low-level infrastructure for writing custom synchronization primitives
  • Adoption of System.Diagnostics.Metrics instruments to provide compatibility with OpenTelemetry

DotNext.IO 4.11.0

  • Optimized memory allocations caused by FileBufferingWriter class
  • Added DotNext.Text.Json.JsonSerializable<T> wrapper acting as a bridge between binary DTO and JSON serialization infrastructure from .NET BCL
  • Adoption of System.Diagnostics.Metrics instruments to provide compatibility with OpenTelemetry
  • Reduced API surface requiring RequiresPreviewFeatures attribute

DotNext.Net.Cluster 4.10.0

  • Adoption of System.Diagnostics.Metrics instruments to provide compatibility with OpenTelemetry
  • Fixed 151
  • Fixed 153
  • Raft: reduced memory allocations when the node is Leader
  • Raft: fixed correctness of ForceReplication method when it is used as a write barrier in a distributed environment
  • Reduced API surface requiring RequiresPreviewFeatures attribute

DotNext.AspNetCore.Cluster 4.11.0

Changelog for previous versions located here.

Release & Support Policy

The libraries are versioned according with 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 ✔️

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

Development Process

Philosophy of development process:

  1. All libraries in .NEXT family are available for the wide range of .NET runtimes: Mono, .NET, Blazor
  2. Compatibility with R2R/AOT compiler should be checked for every release
  3. Minimize set of dependencies
  4. Provide high-quality documentation
  5. Stay cross-platform
  6. 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.