Skip to content

theolivenbaum/dotNext

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

.NEXT

Build Status License Test Coverage

.NEXT (dotNext) is a set of powerful libaries 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

Quick overview of additional features:

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

Quick Links

Documentation for older versions:

What's new

Release Date: 01-31-2020

Major release of version 2.0 is completely finished and contains polished existing and new API. All libraries in .NEXT family are upgraded. Migration guide for 1.x users is here. Please consider that this version is not fully backward compatible with 1.x.

Major version is here for the following reasons:

  1. .NET Core 3.1 LTS is finally released
  2. .NET Standard 2.1 contains a lot of new API required for optimizations. The most expected API is asynchronous methods in Stream class. These enhancements are necessary for evolution of .NEXT library. For instance, new DotNext.IO library could not be released without new .NET API.
  3. ASP.NET Core 2.2 is no longer supported by Microsoft. Therefore, DotNext.AspNetCore.Cluster library of version 1.x relies on unmaintainable platform. Now it is based on ASP.NET Core 3.1 which has long-term support.

What is done in this release:

  1. Quality-focused changes
    1. Removed trivial "one-liners" in DotNext library
    2. Reduced and unified API to work with unmanaged memory in DotNext.Unsafe library
    3. DotNext.AspNetCore.Cluster migrated to ASP.NET Core 3.1 LTS
    4. Increased test coverage and fixed bugs
    5. Additional optimizations of performance in Write-Ahead Log
    6. Fixed issue #4
    7. Introduced API for client interaction support described in Chapter 6 of Raft dissertation
    8. Migration to C# 8 and nullable reference types
  2. New features
    1. Introduced DotNext.IO library with unified asynchronous API surface for .NET streams and I/O pipelines. This API provides high-level methods for encoding and decoding of data such as strings and blittable types. In other words, if you want to have BinaryReader or BinaryWriter for pipelines then welcome!
    2. Ability to obtain result of task asynchronously when its result type is not known at compile-time
    3. Fast hexadecimal string conversion to Span<byte> and vice versa

Version 1.x is still supported and maintained because I want to keep .NEXT available on .NET Framework 4.8. However, backports of new features from 2.x to 1.x are very unlikely.

Raft users are strongly advised to migrate to this new version.

Changelog for previous versions located here.

Release Policy

  • 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

Support Policy

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:

  1. Underlying implementation for ASP.NET Core is no longer supported
  2. Raft implementation is incomplete

Development Process

Philosophy of development process:

  1. All libraries in .NEXT family based on .NET Standard to be available for wide range of .NET implementations: Mono, Xamarin, .NET Core
  2. Compatibility with AOT compiler should be checked for every release
  3. Minimize set of dependencies
  4. Rely on .NET Standard specification
  5. Provide high-quality documentation
  6. Stay cross-platform
  7. Provide benchmarks

Packages

No packages published

Languages

  • C# 100.0%