Repository navigation
Harmony 3.0.0-rc.4
Pre-release
Pre-release
- Fix the patch-installation performance regression reported in #783. Ordinary CoreCLR patches, exception handlers, finalizers and dynamic callbacks use direct dynamic methods without loading replacement or callback-proxy assemblies.
- Preserve the exact exception table and calculate the complete evaluation-stack depth, including returning
calliinstructions. Ordinary patches and Infixes continue to share the same patch-construction pipeline and detour mechanism. - Preserve exact runtime callback identities and release retired dynamic replacements without retaining their callbacks in Harmony's method lookup.
- Keep assembly generation for explicit diagnostic output and runtime limitations, including custom-modified call-site signatures before .NET 10. Reduce dependency-name allocation on this path while preserving quoted assembly names and ambiguity checks.
- Add .NET 11 support, verified with RC3, and embed MonoMod.Core 1.4.0-prerelease.1 for all targets. Native async methods remain unsupported and throw
NotSupportedExceptionwhen patched or reverse-patched. OrdinaryTask-returning methods and compiler-generated async state machines remain supported. - Known issue on .NET 11: callers compiled with runtime-async, including the .NET 11 runtime libraries, call the async variant of an ordinary
Task-returning method, which a patch does not reach. With the embedded MonoMod, a variant compiled after the patch corrupts code and can crash the process (MonoMod#344, fix proposed in MonoMod#345). Harmony logs the bypass whenHarmony.DEBUGis on.