Releases: pardeike/Harmony
Harmony 2.3.3
Harmony 2.3.2
Harmony 2.3.1.1
This releases fixes a regression for .Net Standard projects
Harmony 2.3.1
v2.3.1 fixes:
- Dependency problem / duplicate type errors that we introduced with v2.3
- Better dead code handling #584
- new Lib.Harmony.Ref for projects targeting .NET Standard 2.0
Harmony Thin 2.3.0.1
This update updates Harmony Thin only and makes the dependency on MonoMod.Core public so it is included in transitive dependencies. No other changes.
Harmony 2.3
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
- Methods for getting indices and making loads and stores by @LoganDark in #500
- Add an example for patch factory methods by @Meigyoku-Thmn in #502
- Add Categories feature to Patch Container Classes by @rrazgriz in #498
- yet another injector by @StackOverflowExcept1on in #512
- Adds support for targeting an async method's internal MoveNext method by @Banane9 in #514
- Add targeting of indexer properties by @Banane9 in #519
- Add Delegate overloads and implicit casts to HarmonyMethod; Fixes #505 by @Banane9 in #521
- Added netstandard2.0 reference assemblies support by @Aragas in #523
Additions
- adds
Mono.Cecil.ByReferenceType
,Mono.Cecil.GenericInstanceMethod
,Mono.Cecil.GenericInstanceType
,Mono.Cecil.TypeSpecification
andMono.Cecil.Cil.OpCodes
to ForwardingAttributes - You can now patch methods like
ref SomeType Test()
by usingref RefResult<SomeType> __resultRef
Huge THANK YOU to all contributors (a lot of them new):
- @LoganDark - #500
- @Meigyoku-Thmn - #502
- @rrazgriz - #498
- @StackOverflowExcept1on - #512
- @SineSwiper - #544
- @ZXfkSIE - #548
- @erdelf - #557
- @jivanf - #560
- @Zetrith - #565
- @kohanis - #582
SPECIAL THANKS
Full Changelog
Harmony 2.3-prerelease.7
This release is just like prerelease.6 but build with the new thin/fat mechanics.
No new features or fixes were added.
Harmony 2.3-prerelease.6
Harmony 2.3-prerelease.5
Harmony 2.3-prerelease.4
Changes
- updates MonoMod.Core to v1.1.0-prerelease.1
- fixes 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
For the main description see v2.3-prerelease.2