Skip to content

Releases: BepInEx/HarmonyX

Release v2.9.0

02 Feb 17:32

Choose a tag to compare

Changelog

  • CodeMatcher: Update to partially match current upstream codebase
    • Adds some new overloads for matching
  • CodeMatcher: Add implicit cast to CodeMatch from OpCode to simplify simple matches
  • Harmony: Implement IDisposable interface implicitly
    • Allows writing temporary patches with using syntax
    • Disposing of Harmony will call UnpatchSelf()
  • Fix cases where handler block didn't have an explicit end (#46)
  • Add HarmonyEmitIL attribute to dump patches as DLL (Documentation)
  • HarmonyManipulator: Add new overload for simplified patching
  • Updated MonoMod.RuntimeDetour to 21.12.13.1 (changelog)

Release v2.8.0

10 Jan 19:41

Choose a tag to compare

Changelog

  • Merged code from upstream up to 53d8c7b
    • See Harmony 2.2 changelog for some new features
    • CodeInstructions.CallClosure calls original Transpilers.EmitDelegate
    • Fix patching some methods in global type (e.g. <Module>
  • Updated MonoMod to 22.01.04.03 (changelog)

Release v2.7.0

21 Dec 07:06

Choose a tag to compare

Changelog

  • @ErisApps: Add global flag to disallow global UnpatchAll behavior (#40)
  • @ErisApps: Add static UnpatchAll and UnpatchID (#41)
    • This marks old harmony.UnpatchAll(string) as obsolete. Any developers should migrate to using harmony.UnpatchSelf() or the new overloads. See wiki for more details.
  • Merged upstream up to 5bd23f3
  • Updated MonoMod.RuntimeDetour to 21.12.13.1 (changelog)

Release v2.6.1

29 Nov 21:22

Choose a tag to compare

Changelog

  • @ManlyMarco: Improved documentation for various Harmony attributes
  • Fixed HarmonyWrapSafe attribute when not using it as the last attribute

Release v2.6.0

28 Nov 10:30

Choose a tag to compare

Changelog

  • Updated MonoMod to 21.11.11.1 (changelog)
  • Fixed leave, leave.s, endfinally and endfilter being duplicated when generated patched method code
    • This also fixes certain cases where inserting IL right after exception blocks caused the IL to be skipped over in generated patch
  • Added MethodType.Enumerator method type to make transpiling enumerators (e.g. Unity coroutines) easier (thanks, @ManlyMarco!)

Release v2.5.7

24 Oct 14:14

Choose a tag to compare

Changelog

  • Merged upstream up to b101f1d
    • Reverse patcher targets now can be specified dynamically via TargetMethod or class attributes

Release v2.5.6

17 Oct 14:28

Choose a tag to compare

Changelog

  • Merged upstream up to 7928599
  • Updated MonoMod to 21.10.10.1 (changelog)
  • Fixed patching in cases where a transpiler returns an empty code list (#32)
    • Developers should prefer using prefixes instead for these cases, this special case behaviour was added for Harmony 2 interop

Release v2.5.5

21 Sep 18:04

Choose a tag to compare

Changelog

  • Fixed Harmony instance owner not being logged properly
  • Fixed compatibility with transpilers that explicitly set labels and blocks to null in CodeInstructions
  • Updated MonoMod to 21.8.19.1 (changelog)

Release v2.5.4

05 Aug 19:34

Choose a tag to compare

Changelog

Release v2.5.3

30 Jul 14:38

Choose a tag to compare

Changelog

  • Merged upstream up to 129ce7c
  • Updated MonoMod.RuntimeDetour to 21.07.22.03