Skip to content

Milestone 2021.5.3

Compare
Choose a tag to compare
@SamboyCoding SamboyCoding released this 03 Nov 19:39
· 144 commits to new-analysis since this release

This is a minor improvement and bugfix release.

Analysis

  • Added a new IL post-processor which aims to remove locals that are only used once, often on the immediately following line
  • Tuned conditional move actions to be more accurate. Thanks to @gompoc in #50 for contributing part of this.
  • Improved some of the generic method handling code. This reduces the chance of exceptions while saving, but this entire section of code is awful and needs rewriting, so as a knock-on effect some methods that previously used to generate clean IL no longer will. This is expected and will be remedied in an upcoming release.
  • Fixed methods which fail analysis being marked as extern. They will now throw an AnalysisFailedException.

Dummy DLLs

  • Emit packing and type sizes to assemblies
  • Added new injected type "AnalysisFailedException"
  • Made all injected types internal, not public.

LibCpp2IL

  • Experimental support for NSO (Nintendo Switch) binaries. This may not work in all cases. Please report any issues you encounter.
  • Corrected the metadata version for unity versions 2019.3.0 to 2019.3.6
  • Fixed strings being read using the Default encoding instead of UTF8 always, causing incorrect member names on .NET Framework.

Core API

  • Cpp2IL will no longer attempt to write files or folders containing the { or } characters as windows can interpret these as GUIDs in specific circumstances, and fail.
  • Performance improvements for finding KeyFunctionAddresses on Arm64.
  • Attribute restoration pre-metadata-v29 will now detect useless KeyFunctionAddresses (e.g. for binaries which have no exported il2cpp functions) and fallback to simple restoration.

Command-Line Wrapper

  • Moved the initialization of and improved the cecil patch so that errors due to attribute restoration are caught.
  • Fixed major performance problems on the NetFramework build caused by Enumerable.Skip being incredibly slow.