Releases: Decompollaborate/mapfile_parser
Releases · Decompollaborate/mapfile_parser
2.12.1
[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.
- Specifically useful for abi3 wheels, so we can ensure the wheel is
- Integrate
uvin 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-settings0.0.10 is now required.
2.12.0
[2.12.0] - 2025-10-11
Added
- Install a
mapfile_parserprogram 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
uvxorpipx.
- This provides the same functionality as running the library module with
- Prebuilt binaries for Python 3.14.
Changed
- Update the
pyo3dependency version.
2.11.0
[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_MATCHINGmarkers 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: Trueon yourdecomp.yamlfile.
- Data progress reporting requires
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
checkingSymbol::inferred_static.
- For every inferred static sym a corresponding symbol will be inserted into
- The
--emit-categoriesflag ofobjdiff_reportnot sets
check_asm_paths: Falseandreport_data: Trueby default.
Fixed
- Fix the vram address plf-resolved mapfiles when the sections of those plfs
were not relative to zero.
2.10.0
[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 thatplf. - Rust:
MapFile::resolve_partially_linked_files(). - Python:
MapFile::resolvePartiallyLinkedFiles().
- This is done by calling a function with a user provided callback that
- All the CLI utilities include basic support for
plfs.- Pass the flag
-x .extensionor--plf-ext .extensionto specify the
extension of the partially linked objects files that should be replaced with
a.mapextension. - The frontends API allow to further customize this behavior by passing a
callback like the one used byMapFile::resolvePartiallyLinkedFiles.
- Pass the flag
2.9.4
[2.9.4] - 2025-06-02
Changed
- Implement parsing for
mwld2.7+ generated mapfiles. - Handle
*fill*s inmwld.
2.9.3
[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
[2.9.2] - 2025-05-28
Changed
objdiff_report:- Simplify emitted entries by avoiding using quotes as much as possible when
using the--emit-categoriesflag. - 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.
- Simplify emitted entries by avoiding using quotes as much as possible when
2.9.1
[2.9.1] - 2025-05-27
Added
- Add
--emit-categoriesflag toobjdiff_report.- Prints to stdout automatically-generated categories from the mapfile.
Categories will use thedecomp.yamlformat. - 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.
- Prints to stdout automatically-generated categories from the mapfile.
- 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 the segment's metadata (name, address, etc) when the
- Fix parsing if the mapfile contains Carriage Returns characters (
\r).
2.9.0
[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_reportfeature. - Use
MapFile::get_objdiff_report()to generate the report. - It is recommended to mix with the
serdefeature to make serialization of
the report easier.
- Disabled by default, it is gated by the
- Python:
- Use
MapFile::writeObjdiffReportToFile()to write an objdiff report as a
jsonfile.
- Use
- Relies mainly on
- Add
objdiff_reportas a new CLI utility to the Python library.- Generate a simple
objdiffprogress report from your terminal! - This utility supports the
decomp.yamlformat. This format is the preferred
way of invoking the tool, given the long list of arguments needed for the
tool to properly work.
- Generate a simple
- 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) andMapFile::newFromMwMapStr()
(Python): Parses specifically a Metrowerks ld mapfile without guessing.
- Existing catch-all functions will try to guess if the given mapfile
Changed
- Update
decomp_settingsto version 0.0.9. - Bump MSRV from
1.65.0to1.74.0.
2.8.1
[2.8.1] - 2025-05-22
Fixed
- Fix broken CLI utilities when a decomp.yaml file is not detected.