pardeike
released this
Harmony 2.0.4 reverts a change in 2.0.3 that broke ABI compatibility
Fixes:
- Improve
AccessTools.*FieldRefAccess
safety by handling edge cases and having consistent error handling [9a3da4b] - Fix
AccessTools.FindIncludingBaseTypes
NRE on interface types [684b9b7] - Add
EditorBrowsableState.Never
to the specificAccessTools.IsStatic
methods [9be1fb0] - Reduce array copies in patch tracking [7991c14]
- Make sure the Harmony logging directory exists [69ef98e]
- Fix CTD in Linux when patching short methods (typically empty virtual methods) [406586a]
- Improve Harmony thread safety [f13beaf][1305a1f]
- Add handler cache for
AccessTools.MakeDeepCopy
[2f5c171] - Add
HARMONY_LOG_FILE
environment variable [318c1d2] - Remove unconditional call to
FileLog
[42d8567]
Added:
- More environment info at start of harmony log [bf3286d]
- Support patching methods with
ref
result [439b004]
New API in AccessTools:
delegate ref F StructFieldRef<T, F>(ref T instance)
StructFieldRef<T, F> StructFieldRefAccess<T, F>(string fieldName)
StructFieldRef<T, F> StructFieldRefAccess<T, F>(FieldInfo fieldInfo)
ref F StructFieldRefAccess<T, F>(ref T instance, string fieldName)
ref F StructFieldRefAccess<T, F>(ref T instance, FieldInfo fieldInfo)
Misc:
- Stop using Travis and AppVeyor and move all testing to Azure Pipelines
- Migrate from
ILRepack.Lib.MSBuild.Task
toILRepack.Lib.MSBuild
[36d8cbc] - Project now supports C# 8
- Various code and csproj cleanup
Assets
3
pardeike
released this
Fixes:
- MonoMod.Common updated to v20.5.31.1
- Method serialization now uses module guid instead of name [ca5fd9b]
AccessTools.Method(string typeColonMethodname, ...)
uses "Namespace.Type:MethodName" as format- Include type in patched method names for stack traces [1bdd4b4]
Traverse
now handles chaining static then non-static member calls correctly [2b6ad84]FastInvokeHandler
now usesparams
for varargs [c9934e1]PatchTools.GetPatchMethods
now returns every method, not just the ones to be patched #304 [31b4773]GetOriginalInstructions
/GetCurrentInstructions
now populatecode.labels
correctly- Fix exception in
Harmony.PatchAll
/AccessTools.TypeByName
when assembly dependencies are missing [a0c3620] [424c2ce] - Preparatory work for: delegate injection,
AccessTools.FieldRef
improvements (work in progress, more in next release)
New API for CodeInstruction:
codeInstruction.WithLabels(params Label[] labels)
codeInstruction.WithLabels(IEnumerable<Label> labels)
codeInstruction.ExtractLabels(this CodeInstruction code)
codeInstruction.MoveLabelsTo(CodeInstruction other)
codeInstruction.MoveLabelsFrom(CodeInstruction other)
codeInstruction.WithBlocks(params ExceptionBlock[] blocks)
codeInstruction.WithBlocks(IEnumerable<ExceptionBlock> blocks)
codeInstruction.ExtractBlocks(this CodeInstruction code)
codeInstruction.MoveBlocksTo(CodeInstruction other)
codeInstruction.MoveBlocksFrom(CodeInstruction other)
New API in PatchProcessor:
PatchProcessor.CreateILGenerator(MethodBase original)
New API in AccessTools:
AccessTools.MethodDelegate<DelegateType>(MethodInfo method, object instance = null, bool virtualCall = true)
AccessTools.HarmonyDelegate<DelegateType>(object instance = null)
AccessTools.IsStatic(MemberInfo member)
Assets
3
pardeike
released this
Fixes:
- MonoMod.Common updated to v20.5.7.1
- Unpatch has improved documentation pointing out it being global
New API:
Existing API:
- Transpilers can default to original input by returning
null
Assets
3
pardeike
released this
2.0.0.10 fixes #275 and updates MonoMod.Common to 20.4.20.1
It also adds
- HasMethodBody
- CreateILGenerator
- more variation for AccessTools.FieldRef/StaticFieldRef
Assets
3
pardeike
released this
2.0.0.9 fixes
Assets
3
pardeike
released this
2.0.0.8 fixes
Assets
3
pardeike
released this
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
Assets
3
pardeike
released this
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.
Assets
3
pardeike
released this
2.0.0.5 is a hotfix release fixing #254