Skip to content

Releases: encounter/objdiff

v1.0.0

22 Jan 07:43
Compare
Choose a tag to compare

objdiff has reached v1.0! 🎉

  • Added: Export function to decomp.me scratch (beta)
    • Documentation coming soon!
  • Added: Extended font configuration: load any system font
  • Added: DWARF 2+ line info support (#37)
  • Added: Option to relax relocation diffs: ignores differences in relocation targets. (Address, name, etc) (#34)
  • Fixed: Highlight: Consider uimm/simm/offset all equivalent (#33)
  • Changed: Re-enable wgpu. This goes back to wgpu (D3D12, Metal, Vulkan, OpenGL/ES) over glow (OpenGL ES).
  • Changed: Re-enable wsl. This restores the WSL2 configuration option, moved into project settings.

Full Changelog: v0.6.1...v1.0.0

v0.6.1

22 Nov 05:18
Compare
Choose a tag to compare
  • Fixed: Minor fix for click-to-highlight (#32)

Full Changelog: v0.6.0...v0.6.1

v0.6.0

21 Nov 19:56
Compare
Choose a tag to compare
  • Added: A new default diff algorithm, and the ability to switch between algorithms. (See below)
  • Added: An "Incomplete" filter to the object list. Allows filtering out objects marked as "complete".
  • Fixed: Excessive repaints (especially on Windows). The app should use significantly less resources and be more responsive to file changes.
  • Fixed: Loading the last file on start when "Rebuild on changes" is disabled.
  • Removed: "Run in WSL" option for the build system. This was janky and overall not recommended as opposed to running natively. If you used this feature, please let me know.
  • Changed: Release builds of objdiff now use the glow (OpenGL) backend instead of wgpu. wgpu being enabled on release builds was unintentional, and adds unnecessary complexity/overhead.
    • Primarily, this means that OpenGL is used instead of Vulkan on Linux, Metal on macOS, and D3D12 on Windows.
    • If this causes issues or degrades performance for you, please create an issue.

Diff algorithms

New diff algorithms have been introduced, and a new default is now used for code and data:

  • Patience (new default)
  • Levenshtein (old default)
  • Myers
  • LCS (WARNING: slow & broken)

Compared to Levenshtein's space complexity of O(NM), Patience has a space complexity of O(N+M), meaning that much larger comparisons are possible (and faster, to boot). Previously, translation units with large data sections could easily eat up gigabytes of RAM or straight up crash with Levenshtein.

Change the active diff algorithm in "Diff Options" -> "Algorithm...".
Please try both Patience and Levenshtein and provide feedback on the change.

Full Changelog: v0.5.2...v0.6.0

v0.5.2

09 Oct 17:00
Compare
Choose a tag to compare
  • Adjust "Diffable" to exclude missing target objects

Full Changelog: v0.5.1...v0.5.2

v0.5.1

07 Oct 19:06
Compare
Choose a tag to compare
  • Restore context menu on highlightable fields (fixes #30).
  • Hide hidden symbols by default.
  • Add "Diff Options" to menu bar.
  • Reload objects when changed externally.
  • Allows disabling build_base as well for projects using an external build system.

Full Changelog: v0.5.0...v0.5.1

v0.5.0

06 Oct 04:14
Compare
Choose a tag to compare
  • Adds click-to-highlight: Highlights registers, instructions, arguments, symbols or addresses.
  • Adds "Original" instruction to hover tooltip, showing the non-simplified form of the instruction.
  • Updates all dependencies.
    • Resolves slowness when closing the application.

Full Changelog: v0.4.4...v0.5.0

v0.4.4

05 Oct 04:20
Compare
Choose a tag to compare
  • Add "Recent Projects" to file menu

Full Changelog: v0.4.3...v0.4.4

v0.4.3

10 Sep 04:36
Compare
Choose a tag to compare
  • Support completed field for objects in project config. In object tree, displays red for incomplete, green for complete.
  • Add support for one-sided diffs. A project can include objects without an associated source file for viewing.
  • Add versioning to the app's configuration, supporting upgrades without losing user configuration.
  • Support min_version field in objdiff.json.

Full Changelog: v0.4.1...v0.4.3

v0.4.1

03 Sep 14:07
Compare
Choose a tag to compare
  • Allow config to specify object target_path and base_path explicitly, rather than relying on relative path from the target_dir and base_dir. Useful for more complex directory layouts.
  • Fix watch_patterns in project config not using default when omitted.
  • Fix "Rebuild on changes" not defaulting to true.
  • Keep watching project config updates even when "Rebuild on changes" is false.
  • Disable some configuration options when loaded from project config file.

Full Changelog: v0.4.0...v0.4.1

v0.4.0

12 Aug 18:32
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.3.4...v0.4.0