This branch contains experimental fork of CoreCLR .NET runtime where we explore implementing async directly in the runtime instead of generating state machines in the IL compiler (Roslyn).
We support two prototypes: a JIT-based codegen prototype, and an unwinder-only based prototype.
The prototypes are described in detail in the design document, see below.
The former prototype is the default; the latter can be switched to by setting DOTNET_RuntimeAsyncViaJitGeneratedStateMachines=0
.
Current support in the prototypes looks like the following:
Feature/characteristic | JIT based state machines | Unwinder based state machines |
---|---|---|
Generics | ✅ | ❌ |
Byrefs live across suspension points | ❌ | ✅ |
Exception handling | ✅ | ❌ |
Returns via return buffers | ✅ | ❌ |
See the tests in src/tests/Loader/async.
- Before building, run the buildroslynugets.cmd script, it will build a variant of the Roslyn compiler that can be used to test this codebase. Otherwise follow the standard developer workflow.
- Async Experiment Issue
- Design and details
In order to build in this repo, you must have set up a Roslyn repo parallel to this repo with the name dotnet-roslyn, and it must have a remote called AzDo which has the updated compiler in it. Then you must run buildroslynnugets.cmd to create a local copy of the compiler for use in the repo. The equivalent work has not yet been done for running on Unix-like platforms.
- What is .NET?
- How can I contribute?
- Reporting security issues and security bugs
- Filing issues
- Useful Links
- .NET Foundation
- License
This repo contains the code to build the .NET runtime, libraries and shared host (dotnet
) installers for
all supported platforms, as well as the sources to .NET runtime and libraries.
Official Starting Page: https://dotnet.microsoft.com
- How to use .NET (with VS, VS Code, command-line CLI)
- Install official releases
- Documentation (Get Started, Tutorials, Porting from .NET Framework, API reference, ...)
- Support (Releases, OS Versions, ...)
- Roadmap
We welcome contributions! Many people all over the world have helped make this project better.
- Contributing explains what kinds of contributions we welcome
- Workflow Instructions explains how to build and test
- Dogfooding .NET explains how to get nightly builds of the runtime and its libraries to test them in your own projects.
Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter. You can also find these instructions in this repo's Security doc.
Also see info about related Microsoft .NET Bounty Program.
This repo should contain issues that are tied to the runtime, the class libraries and frameworks, the installation of the dotnet
binary (sometimes known as the muxer
) and the installation of the .NET runtime and libraries.
For other issues, please file them to their appropriate sibling repos. We have links to many of them on our new issue page.
- .NET source index / .NET Framework source index
- API Reference docs
- .NET API Catalog (incl. APIs from daily builds and API usage info)
- API docs writing guidelines - useful when writing /// comments
- .NET Discord Server - a place to discuss the development of .NET and its ecosystem
.NET Runtime is a .NET Foundation project.
There are many .NET related projects on GitHub.
- .NET home repo - links to 100s of .NET projects, from Microsoft and the community.
- ASP.NET Core home - the best place to start learning about ASP.NET Core.
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the .NET Foundation Code of Conduct.
General .NET OSS discussions: .NET Foundation Discussions
.NET (including the runtime repo) is licensed under the MIT license.