Skip to content

Releases: pardeike/Harmony

Harmony 2

31 Mar 20:01
Compare
Choose a tag to compare

2.0.0.9 fixes

  • #266, #267, #274 (struct returning methods with Mono in .NET 3.5)
  • #268 (Target DllImport methods)
  • #269 (Traverse.Method throws ambiguous match exception)

Harmony 2

29 Feb 20:49
Compare
Choose a tag to compare

2.0.0.8 fixes

  • Struct returning methods with Mono (again)
  • Fix #263
  • Fix #255
  • Debug output format improvements (local variables, complete types)

Harmony 2

27 Feb 18:28
Compare
Choose a tag to compare

2.0.0.7 fixes

  • struct returning methods with Mon (for real this time)
  • offsets in debug output are correct
  • local variables now show in debug output
  • exception handling and reporting improved
  • build process improved

Harmony 2

24 Feb 19:53
Compare
Choose a tag to compare

2.0.0.6 is a hotfix release fixing struct returning methods that are virtual
Also new: Prefix that do not alter the original methods state in any way are now no longer skipped when a previous Prefix returns false.

Harmony 2

20 Feb 18:07
Compare
Choose a tag to compare

2.0.0.5 is a hotfix release fixing #254

Harmony 2

19 Feb 19:45
Compare
Choose a tag to compare

2.0.0.4 is a hotfix for patching static methods that have pointers to returned structs [Regression on 5456977]

Harmony 2

18 Feb 21:54
Compare
Choose a tag to compare

2.0.0.3 is a hotfix for a cast error when shifting method arguments and an error with void Prepare methods

Harmony 2

18 Feb 07:41
Compare
Choose a tag to compare

2.0.0.2 is a hotfix for patching methods that have pointers to returned structs [#252]

Harmony 2

16 Feb 15:42
Compare
Choose a tag to compare

2.0.0.1 is a hotfix for patching methods not ending in ret OpCode [See 6935c69]

Harmony 2

16 Feb 12:11
Compare
Choose a tag to compare

Documentation: https://harmony.pardeike.net
Become a GitHub sponsor or a Patreon

Note: Harmony 2 is not runtime compatible with Harmony 1.x and should never be mixed.

Changes since 1.2.0.1:

New

CI/CD on Azure, Travis and AppVeyor
Switched to MonoMod.Common for shared low level patching with MonoMod project
Works with more .NET versions
Inline prevention for Mono
4th patch type: Finalizer - for handling and manipulating exceptions
Reverse Patching (original onto one of your stub methods)
Convenience extension methods for CodeInstruction
Selective debug log with [HarmonyDebug] annotation - works even with future changes of the method
Prepare/Cleanup will be called even with exceptions during patching
Cleanup can now receive and return the current Exception during patching
Better exception reporting with HarmonyException
Automatic documentation generated to https://harmony.pardeike.net
AccessTools has methods for declared members
FastAccess now deals with generics
Manipulator transpiler helper
Get IL code from a method
Support for IL InlineSignature (patching methods with CALLI)

Fixed

Priority field spelling
Traverse can handle static members
Methods returning struct types are now patchable
Main API is now properly divided into static/instance methods
HarmonyMethod and other high level API throws on null input
Patch sorting
DeepCopy works with nullable types
Patch annotations API cleaned up
FieldRef covers more cases and is simplified
__result assignability checks
Handling __state without Prefix
Debug log writes out full type names
Documentation now uses compiled code snippets for correctness
Traverse works with inherited fields, properties and methods

Changes

Removed Self-patching
Renamed Add() extension on IEnumerable<T> and T[] to AddItem() to avoid conflicts
HarmonyInstance is now called Harmony and Harmony namespace is now called HarmonyLib