Skip to content

Continued improvements to Mono Method Body Replacement #57365

Closed
@lambdageek

Description

@lambdageek

Followup work to #44806

In .NET 6, Mono method body replacement is implemented to enable dotnet watch for Blazor WebAssembly projects, and "Apply Code Changes" in VS in .NET for iOS and .NET for Android. The supported hot reload edits are limited just to modifications of method existing method bodies - provided that certain constructs (such as lambdas, await, etc) are not added.

In .NET 7, we will expand the set of supported edits for Mono-based workloads beyond method body replacement, to include modifications to existing types and adding new types, including "reloadable types".

This issue tracks the followup work to improve Mono's hot reload support.

End to end scenarios

Tasks

Out of scope and future work

  • Type system modifications beyond what is supported on CoreCLR workloads (basically all the stuff CoreCLR doesn't support, we won't support either)
  • Active statements / On-stack replacement
  • Object migration
  • JIT support

Possible future work

  • Collectible ALC support
  • Support mixed AOT/interp mode - AOT code would not be allowed to change (easy check - if an AOT image is loaded, don't accept a delta to that assembly. Harder - check whether individual methods are included in the AOT image - is there a use case for this?). Block applying changes to assemblies with loaded AOT images.

Metadata

Metadata

Assignees

Labels

area-EnC-monoHot Reload for WebAssembly, iOS/Android, etchard-problemtrackingThis issue is tracking the completion of other related issues.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions