Skip to content

Harmony 2.3

Compare
Choose a tag to compare
@pardeike pardeike released this 26 Feb 09:36
· 72 commits to master since this release

We have been preparing and testing this for months and I want to specially mention the the help of our HUGE community on this release. Harmony is downloaded over 800 times a day and has over 1.6 million downloads on Nuget and a Discord server with over 2100 members.

New core engine
Harmony 2.3 now uses MonoMod.Core v1.1 (part of https://github.com/MonoMod) which is a rewrite of the low level back-end for patching .NET methods.

Support for newer .NET versions
.NET 7 and .NET 8 support is finally here

Tests via GitHub Actions
Harmony is now tested on Azure and GitHub and thus we can start testing macOS and other fancy combinations: https://github.com/pardeike/Harmony/actions/workflows/test.yml

Fat and Thin versions
Harmony is now released in two packages on nuget: Lib.Harmony and Lib.Harmony.Thin. The thin version does not embed dependencies and thus allows you to manage them yourself. The normal version embeds them as internal types and works as usual as a standalone dll.
https://www.nuget.org/packages/Lib.Harmony
https://www.nuget.org/packages/Lib.Harmony.Thin

Changes

  • Support GenericInstance types in inline method signatures 1960f57
  • adds better detection for methods that end in dead code 7b5158a
  • Merge pull request #565 from Zetrith 03b6426
  • Error in exported Godot Engine build when attempting to patch method #562
  • Regression with methods ending in throw + ret e63e183
  • fixes a bug where Harmony calls TargetMethods() always twice 7ab508c
  • Native async patching is not available in .NET Standard or .NET #533
  • adds IEnumerable.Matches() b9206db
  • Uses PlatformTriple.Current.GetIdentifiable for a user submitted MethodInfo
  • fixes more unix tests
  • patches Assembly.GetExecutingAssembly internally
  • Improves http_client tests cda2226
  • adds useful linux test shortcut c2586e7
  • adds null/zero return clarifcations for TargetMethod/s #544
  • fixes CodeMatch(()=>... 7e4183e
  • Documentation Auxiliary Methods - Attribute spelling issue. Plus logic fix. #557
  • adds InnerTypes() and extensions for AccessTool methods on type Type d916a30
  • code cleanup, net8.0, optional ret code for methods ending in throw

Additions

  • adds Mono.Cecil.ByReferenceType, Mono.Cecil.GenericInstanceMethod, Mono.Cecil.GenericInstanceType, Mono.Cecil.TypeSpecification and Mono.Cecil.Cil.OpCodes to ForwardingAttributes
  • You can now patch methods like ref SomeType Test() by using ref RefResult<SomeType> __resultRef

Huge THANK YOU to all contributors (a lot of them new):

SPECIAL THANKS

Full Changelog

v2.2.2.0...v2.3.0.0