├── CODE-OF-CONDUCT.md ├── CreateAnExperiment.md ├── LICENSE.TXT ├── README.md └── SECURITY.md /CODE-OF-CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | This project has adopted the code of conduct defined by the Contributor Covenant 4 | to clarify expected behavior in our community. 5 | For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct). 6 | -------------------------------------------------------------------------------- /CreateAnExperiment.md: -------------------------------------------------------------------------------- 1 | # Create an experiment 2 | 3 | Experiments should be contained within a branch in the dotnet/runtimelab repository. Keeping all experiments branches in one repository helps with community visibility. 4 | 5 | ## Steps to setup a new experiment 6 | 7 | - Pick a good name for your experiment and create branch for it in dotnet/runtimelab. Branch names should be prefixed with `feature/` in order to have official build support. 8 | - If the experiment is expected to require changes of .NET runtime itself, it should be branched off of [dotnet/runtime:main](https://github.com/dotnet/runtime/tree/main). 9 | - Otherwise, the experiment should be branched off of [dotnet/runtimelab:standalone-template](https://github.com/dotnet/runtimelab/tree/standalone-template) to get CI and all publishing infrastructure for your experiment. 10 | - Submit a PR to update the [README.MD](https://github.com/dotnet/runtimelab/blob/docs/README.md#active-experimental-projects) with the name of your branch and a brief description of the experiment. Example: [#19](https://github.com/dotnet/runtimelab/pull/19/files) 11 | - Create label `area-` for tagging issues. The label should use color `#d4c5f9`. 12 | - Edit `README.MD` in your experiment branch to include details about the experiment. Example: [README.md](https://github.com/dotnet/runtimelab/blob/feature/NativeAOT/README.md). 13 | - If your experiment is branched from dotnet/runtime: 14 | - Update the pre-release label to include a unique identifier representing the name of the experiment to avoid package clashes given that all experiments publish to the same [feed](https://dev.azure.com/dnceng/public/_packaging?_a=feed&feed=dotnet-experimental). To do this you need to update the versioning properties in [`Versions.props`](https://github.com/dotnet/runtimelab/blob/0cf87055346fd12fb22478f17521ebeb28a6d323/eng/Versions.props#L9). Make sure the label you choose is maximum 7 chars long as NuGet has a limit on the version length so the official build would fail. 15 | - Update the `GitHubRepositoryName` property in [`Directory.Build.Props`](https://github.com/dotnet/runtimelab/blob/a4f11b05c8a76564a88ae060fd75894ca9202d12/Directory.Build.props#L219) to `runtimelab`. This is needed for the produced packages to have the right repository information and for source link to work correctly. 16 | - Edit `eng/pipelines/runtimelab.yml` in your branch to just build what your experiment needs on CI. 17 | - To avoid spurious github notifications for merges from upstream, delete `.github/CODEOWNERS` from your branch or replace it with setting specific to your experiment. Example: [#26](https://github.com/dotnet/runtimelab/pull/26/files) 18 | - If your experiment is branched from [dotnet/runtimelab:standalone-template](https://github.com/dotnet/runtimelab/tree/standalone-template) follow the [README.md](https://github.com/dotnet/runtimelab/tree/standalone-template#standalone-experiments). 19 | - To make sure we follow our naming conventions, make sure all packages produced on your experiment are prefixed with `Microsoft.*` or `System.*`. 20 | -------------------------------------------------------------------------------- /LICENSE.TXT: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) .NET Foundation and Contributors 4 | 5 | All rights reserved. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # .NET Runtime Lab 2 | 3 | This repo is for experimentation and exploring new ideas that may or may not make it into the main [dotnet/runtime](https://github.com/dotnet/runtime) repo. [Encouraging .NET Runtime Experiments](https://github.com/dotnet/runtime/issues/35609) describes reasons that motivated creating this repository. 4 | 5 | ## Active Experimental Projects 6 | 7 | Currently, this repo contains the following experimental projects: 8 | 9 | - [Utf8String](https://github.com/dotnet/runtimelab/tree/feature/Utf8String) - A new UTF-8 String data type in the runtime. 10 | - [FreeBSD](https://github.com/dotnet/runtimelab/tree/feature/FreeBSD) - Port of .NET runtime to FreeBSD 11 | - [NativeAOT-LLVM](https://github.com/dotnet/runtimelab/tree/feature/NativeAOT-LLVM) - LLVM generation for Native AOT compilation (including Web Assembly) 12 | - [NativeAOT-Mint](https://github.com/dotnet/runtimelab/tree/feature/NativeAOT-Mint) - Mono interpreter ported to Native AOT for dynamic execution support 13 | - [ManagedQuic](https://github.com/dotnet/runtimelab/tree/feature/ManagedQuic) - Fully managed implementation of QUIC protocol 14 | - [LLHTTP](https://github.com/dotnet/runtimelab/tree/feature/LLHTTP2) - a set of flexible, lower-level HTTP APIs. 15 | - [CompatibilityPackages](https://github.com/dotnet/runtimelab/tree/feature/CompatibilityPackages) - a set of packages which help satisfy binary dependencies of .NETFramework assemblies on .NET. 16 | - [Hot-Cold Splitting](https://github.com/dotnet/runtimelab/tree/feature/hot-cold-splitting) - Support the hot-cold splitting optimization in crossgen2. 17 | - [ManagedZLib](https://github.com/dotnet/runtimelab/tree/feature/ManagedZLib) - Fully managed implementation of DEFLATE algorithm and GZip/ZLib envelope formats. 18 | - [Async](https://github.com/dotnet/runtimelab/tree/feature/async2-experiment) - Move support for async state machine generation from the C# compiler to the runtime. 19 | - [SwiftBindings](https://github.com/dotnet/runtimelab/tree/feature/swift-bindings) - Swift bindings for .NET. 20 | - [CoreCLR Interpreter](https://github.com/dotnet/runtimelab/tree/feature/CoreclrInterpreter) - An interpreter for CoreCLR. 21 | 22 | You can create your own experiment, learn more [here](CreateAnExperiment.md)! 23 | 24 | ## Completed Projects 25 | 26 | - [s390x](https://github.com/dotnet/runtimelab/tree/feature/s390x) - Port of .NET runtime (Mono) to the s390x architecture. The changes were upstreamed to [dotnet/runtime](https://github.com/dotnet/runtime). 27 | - [DllImportGenerator](https://github.com/dotnet/runtimelab/tree/feature/DllImportGenerator) - Roslyn Source Generator used for generating P/Invoke IL stubs. 28 | - [NativeAOT](https://github.com/dotnet/runtimelab/tree/feature/NativeAOT) - .NET runtime optimized for ahead of time compilation. 29 | - [JsonCodeGen](https://github.com/dotnet/runtimelab/tree/feature/JsonCodeGen) - Code generation for JSON. 30 | - [AssemblyBuilder.Save()](https://github.com/dotnet/runtimelab/tree/feature/assembly-builder-save) - Prototyping the implementation of AssemblyBuilder.Save() functionality. 31 | - [Green Threads](https://github.com/dotnet/runtimelab/tree/feature/green-threads) - Prototyping the implementation of green threads. 32 | - [NativeAOT for Android](https://github.com/dotnet/runtimelab/tree/feature/nativeaot-android) - Prototyping the Native AOT for Android apps and Java interop layer. 33 | 34 | ## Filing issues 35 | 36 | This repo should contain issues that are tied to the experiments hosted here. 37 | 38 | For other issues, please use the following repos: 39 | 40 | - For .NET Runtime issues, file in the [dotnet/runtime](https://github.com/dotnet/runtime) repo 41 | - For .NET SDK issues, file in the [dotnet/sdk](https://github.com/dotnet/sdk) repo 42 | - For ASP.NET issues, file in the [dotnet/aspnetcore](https://github.com/dotnet/aspnetcore) repo. 43 | 44 | ## Reporting security issues and security bugs 45 | 46 | Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) . 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](https://www.microsoft.com/msrc/faqs-report-an-issue). 47 | 48 | Also see info about related [Microsoft .NET Core and ASP.NET Core Bug Bounty Program](https://www.microsoft.com/msrc/bounty-dot-net-core). 49 | 50 | ## .NET Foundation 51 | 52 | .NET Runtime is a [.NET Foundation](https://www.dotnetfoundation.org/projects) project. 53 | 54 | This project has adopted the code of conduct defined by the [Contributor Covenant](http://contributor-covenant.org/) to clarify expected behavior in our community. For more information, see the [.NET Foundation Code of Conduct](http://www.dotnetfoundation.org/code-of-conduct). 55 | 56 | ## License 57 | 58 | .NET (including the runtime repo) is licensed under the [MIT](LICENSE.TXT) license. 59 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | The .NET Core and ASP.NET Core support policy, including supported versions can be found at the [.NET Core Support Policy Page](https://dotnet.microsoft.com/platform/support/policy/dotnet-core). 6 | 7 | ## Reporting a Vulnerability 8 | 9 | Security issues and bugs should be reported privately to the Microsoft Security Response Center (MSRC), either by emailing secure@microsoft.com or via the portal at https://msrc.microsoft.com. 10 | 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 11 | original message. Further information, including the MSRC PGP key, can be found in the [MSRC Report an Issue FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue). 12 | 13 | Reports via MSRC may qualify for the .NET Core Bug Bounty. Details of the .NET Core Bug Bounty including terms and conditions are at [https://aka.ms/corebounty](https://aka.ms/corebounty). 14 | 15 | Please do not open issues for anything you think might have a security implication. 16 | --------------------------------------------------------------------------------