![]() * [mono] Add LoaderAllocator type, whose instances are used to detect whenever a collectible ALC has managed references. * [mono] Add an implicit GC reference between objects allocated from a collectible ALC and its LoaderAllocator object. * [mono] Add a new hash table which is similar to MonoGHashTable, but it doesn't keep the key/value objects alive by itself. * [mono] Add a keepalive field to some reflection objects to keep the alc alive if user code holds a reference to them. Change the reflection hashes in MonoMemoryManager to weak hashes so the hashes themselves don't keep the alc alive. * Fix reflection hashes. * [mono] Optimize the case when mono_method_get_signature_checked () is called with a non-zero context and a non-generic signature. * Free memory manager caches. * [mono] Store static variables with GC references in collectible alcs on the GC heap. Normally, static variables are stored in an array inside MonoVTable which is registered as a GC root. For collectible alcs, this would not work, since GC references in these arrays would keep the alc alive. Instead, store them in arrays referenced by the LoaderAllocator object. This assumes the static variables will no longer be accessed after the LoaderAllocator object dies. * Add basic unload functionality. * Fix weak hashes. * Free MonoJitInfos belonging to unloaded memory managers. * Avoid returning collectible types from mono_metadata_get_shared_type (). * Add docs. * Fix the build. * Fix the build. * Disable unloading for now. |
||
---|---|---|
.. | ||
coding-guidelines | ||
design | ||
infra | ||
issue-mappings | ||
manpages/host | ||
project | ||
tools/illink | ||
workflow | ||
area-owners.json | ||
area-owners.md | ||
deep-dive-blog-posts.md | ||
issue-cleanup.md | ||
issues-pr-management.md | ||
pr-builds.md | ||
pr-guide.md | ||
README.md |
Documents Index
This repo includes several documents that explain both high-level and low-level concepts about the .NET runtime and libraries. These are very useful for contributors, to get context that can be very difficult to acquire from just reading code.
Intro to .NET
.NET is a self-contained .NET runtime and framework that implements ECMA 335. It can be (and has been) ported to multiple architectures and platforms. It support a variety of installation options, having no specific deployment requirements itself.
Getting Started
Workflow (Building, testing, benchmarking, profiling, etc.)
If you want to contribute a code change to this repo, start here.
Design Docs
The Book of the Runtime is a set of chapters that go in depth into various interesting aspects of the design of the .NET Framework.
For your convenience, here are a few quick links to popular chapters:
For additional information, see this list of blog posts that provide a 'deep-dive' into the CoreCLR source code
Coding Guidelines
- CLR Coding Guide
- CLR JIT Coding Conventions
- Cross Platform Performance and Eventing Design
- Adding New Events to the VM
- C# coding style
- Framework Design Guidelines
- Cross-Platform Guidelines
- Performance Guidelines
- Interop Guidelines
- Breaking Changes
- Breaking Change Definitions
- Breaking Change Rules
- Project Guidelines
- Adding APIs Guidelines
Project Docs
To be added. Visit the project docs folder directly meanwhile.