Skip to content

Harmony 2.0.4

Compare
Choose a tag to compare
@pardeike pardeike released this 31 Oct 10:09
· 414 commits to master since this release

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 specific AccessTools.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 to ILRepack.Lib.MSBuild [36d8cbc]
  • Project now supports C# 8
  • Various code and csproj cleanup