Skip to content

Release v2.10.0

Compare
Choose a tag to compare
@github-actions github-actions released this 24 Mar 19:33

Changelog

  • Merged code from upstream up to 6006140 (see Harmony changelog)

    • Important: The merge brings binary incompatibilities to CodeMatch class. If you distribute HarmonyX in games or mod loaders, please test for any regressions and apply shims where appropriate

      Starting this version, CodeMatch now inherits CodeInstruction. Because of this, some fields (labels, blocks) have been removed from CodeMatch as they are now provided by CodeInstructon. Any CodeMatch uses where fields are accessed directly will be binary-incompatible. However, this should generally be fairly rare: analysing a few dozen CodeMatch class uses across different GitHub projects revealed that most developers only use the new CodeMatch constructor, which hasn't been altered. Most use cases of CodeMatch should still be binary-compatible with HarmonyX 2.10.

    • All nested classes in the Code class have also been annotated with the [EditorBrowsable(EditorBrowsableState.Never)] attribute to prevent custom classes from cluttering most IDEs' code completion.

  • Fix HARMONY_NO_LOG environment variable is not respected for file logger

  • Fix HarmonyEmitIL attribute not working on methods with certain branches

  • Fix handling methods that include throws OpCode on mono

  • Fix net35 builds not working on CoreCLR because of AccessTools.PrepForRemoting fix

  • Improve exception messages when applying patches (warn about missing target method or patch method not being static)

  • Bump MonoMod version to 22.3.23.4 (changelog)