Skip to content

Releases: Decompollaborate/mapfile_parser

2.12.1

17 Jan 14:02
f5791b3

Choose a tag to compare

[2.12.1] - 2026-01-17

Added

  • Add support for Python 3.8 again.
    • Figured out how to have CI to test compatibility with Python 3.8 again.
  • Wheels for free threaded Python (3.14t).
    • Hopefully nothing will break when running without the GIL.
  • Wheels are now tested to be installable in CI.
    • Specifically useful for abi3 wheels, so we can ensure the wheel is
      installable in the oldest Python version we support for each OS/arch combo.
  • Integrate uv in CI for Python and dependencies management.

Changed

  • Wheels now use the stable abi3 abi instead of building a single wheel for
    each version for GIL Python.
  • Python tests in CI are now run against all the Python versions we support
    instead of relying on whatever Python version the Github runner has.
  • decomp-settings 0.0.10 is now required.

2.12.0

11 Oct 16:59

Choose a tag to compare

[2.12.0] - 2025-10-11

Added

  • Install a mapfile_parser program script when installing the library through
    pip.
    • This provides the same functionality as running the library module with
      python3 -m mapfile_parser.
    • This should allow better integration with tools like uvx or pipx.
  • Prebuilt binaries for Python 3.14.

Changed

  • Update the pyo3 dependency version.

2.11.0

08 Sep 21:34
01b5596

Choose a tag to compare

[2.11.0] - 2025-09-08

Added

  • Progress reports using the objdiff's report format can now emit progress for
    data symbols!
    • Data progress reporting requires .NON_MATCHING markers for every data
      symbol that is not considered matched yet (i.e. from an automatic disassembly).
    • It is turned off by default in objdiff_report. To turn it on set
      report_data: True on your decomp.yaml file.

Changed

  • Mapfile parsing will now try to infer static symbols by analyzing mismatches
    on section address and size vs the addresses and sizes of symbols within that
    section.
    • For every inferred static sym a corresponding symbol will be inserted into
      the section. Its name will be prefixed with $_static_symbol_.
    • It is possible to check if a symbol is an inferred static in the API by
      checking Symbol::inferred_static.
  • The --emit-categories flag of objdiff_report not sets
    check_asm_paths: False and report_data: True by default.

Fixed

  • Fix the vram address plf-resolved mapfiles when the sections of those plfs
    were not relative to zero.

2.10.0

02 Sep 03:39
22a03f2

Choose a tag to compare

[2.10.0] - 2025-09-01

Added

  • Support for partially linked objects (a.k.a. plf).
    • This is done by calling a function with a user provided callback that
      converts a given object path into the corresponding mapfile for that plf.
    • Rust: MapFile::resolve_partially_linked_files().
    • Python: MapFile::resolvePartiallyLinkedFiles().
  • All the CLI utilities include basic support for plfs.
    • Pass the flag -x .extension or --plf-ext .extension to specify the
      extension of the partially linked objects files that should be replaced with
      a .map extension.
    • The frontends API allow to further customize this behavior by passing a
      callback like the one used by MapFile::resolvePartiallyLinkedFiles.

2.9.4

02 Jun 17:03
afa7600

Choose a tag to compare

[2.9.4] - 2025-06-02

Changed

  • Implement parsing for mwld 2.7+ generated mapfiles.
  • Handle *fill*s in mwld.

2.9.3

01 Jun 15:05
85a283e

Choose a tag to compare

[2.9.3] - 2025-06-01

Fixed

  • Try to infer the rom address of sections and segments even when the mapfile
    does not have it explictly on GNU mapfiles.

2.9.2

28 May 14:04
ca3e688

Choose a tag to compare

[2.9.2] - 2025-05-28

Changed

  • objdiff_report:
    • Simplify emitted entries by avoiding using quotes as much as possible when
      using the --emit-categories flag.
    • Avoid printing the summary table when using the --emit-categories.
    • Allow customizing the output of the summary table a little bit via the
      Python API.

2.9.1

27 May 19:18
96e0ea7

Choose a tag to compare

[2.9.1] - 2025-05-27

Added

  • Add --emit-categories flag to objdiff_report.
    • Prints to stdout automatically-generated categories from the mapfile.
      Categories will use the decomp.yaml format.
    • Intended to facilitate to integrate this progress reporting method.
    • The generated categories are expected to be modified by the user and not
      used as is.
  • Print a summary from the generated progress report in objdiff_report.
    • Printed to stdout by default.
    • This will be printed as a summary step if the script detects it is being run
      in a Github Action.

Changed

  • Metroweks ld: Parse alignment column.

Fixed

  • GNU maps:
    • Fix parsing the segment's metadata (name, address, etc) when the
      segment does not have a rom address.
    • Properly drop empty segments from the parsed output.
  • Fix parsing if the mapfile contains Carriage Returns characters (\r).

2.9.0

25 May 14:50
dd01f8c

Choose a tag to compare

[2.9.0] - 2025-05-25

Added

  • Support emitting progress reports using
    objdiff's format.
    • Relies mainly on .NON_MATCHING-suffixed marker symbols being present on
      the mapfile for each non-matched symbol.
    • Rust:
      • Disabled by default, it is gated by the objdiff_report feature.
      • Use MapFile::get_objdiff_report() to generate the report.
      • It is recommended to mix with the serde feature to make serialization of
        the report easier.
    • Python:
      • Use MapFile::writeObjdiffReportToFile() to write an objdiff report as a
        json file.
  • Add objdiff_report as a new CLI utility to the Python library.
    • Generate a simple objdiff progress report from your terminal!
    • This utility supports the decomp.yaml format. This format is the preferred
      way of invoking the tool, given the long list of arguments needed for the
      tool to properly work.
  • Add support for Metrowerks ld mapfiles.
    • Existing catch-all functions will try to guess if the given mapfile
      correspond to this kind of map by default.
    • New functions:
      • MapFile::new_from_mw_map_str() (Rust) and MapFile::newFromMwMapStr()
        (Python): Parses specifically a Metrowerks ld mapfile without guessing.

Changed

  • Update decomp_settings to version 0.0.9.
  • Bump MSRV from 1.65.0 to 1.74.0.

2.8.1

22 May 14:13
083eb5f

Choose a tag to compare

[2.8.1] - 2025-05-22

Fixed

  • Fix broken CLI utilities when a decomp.yaml file is not detected.