All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
- Added IntelliJ IDEA migration map reader and writer
- Added
MappingFormat#features()
to allow for more fine-grained programmatic querying of format capabilities - Added tests to validate our writer outputs against 3rd-party readers
- Overhauled the internal
ColumnFileReader
to behave more consistently - Made
VisitOrder#createByName
use alphanumeric and nest-aware sorting - Made handling of the
NEEDS_MULTIPLE_PASSES
flag more consistent, reducing memory usage in a few cases - Made some internal methods in Enigma and TSRG readers actually private
- Made all writers for formats which can't represent empty destination names skip such elements entirely, unless mapped child elements are present
- Added missing
visitElementContent
calls to CSRG and Recaf Simple readers - Added protection to
MemoryMappingTree
guarding against external data modification while a visitation pass is in progress - Clearly defined Tree-API contracts regarding returned collections' mutability
- Fixed
MemoryMappingTree#reset
to actually reset all its internal state related to the current visitation pass - Fixed and improved
MemoryMappingTree
's merging capabilities:- Fixed broken member mapping merging via tree-API in
MemoryMappingTree
- Fixed existing entries' data not getting overridden when merging elements into
MemoryMappingTree
via tree-API - Fixed NPE when visiting with flipped namespaces (issue 68)
- Made merging with flipped namespaces actually work and handle both names and descriptors
- Fixed potentially incorrect descriptor computation by delaying until all classes are present and merged
- Fixed broken member mapping merging via tree-API in
- Fixed duplicate mapping definitions not being handled correctly in multiple readers
- Removed ASM dependency from core project
- Fixed CSRG and JAM writers sometimes skipping elements whose parents have incomplete destination names
- Fixed incorrect Javadoc link
- Added CSRG writer
- Added TSRG and TSRG v2 writer
- Added JAM reader and writer
- Added JOBF reader and writer
- Added Recaf Simple reader and writer
- Added
OuterClassNameInheritingVisitor
- Added
MappingFormat#hasWriter
boolean - Added CSRG detection via the path-based API
- Improved documentation
- Fixed ProGuard writer producing invalid files when missing destination names
- Fixed Enigma reader throwing incorrect error message
- Fixed NPE in
MemoryMappingTree
- Fixed TSRG v2 reader not handling multiple passes correctly
- Actually marked
HierarchyInfoProvider
as experimental - Added changelog
- Added SRG and XSRG writer
- Optimized Enigma directory reader
- Fixed reader being closed when detecting format
- Added readers for XSRG and CSRG formats
- Added
MappingTreeRemapper
, an ASM remapper wrapper around aMappingTreeView
- Added
@Nullable
annotations where applicable; everything not annotated can be assumed null-hostile by default - Deferred existing Enigma directory deletion to writer visit pass start
- Made
MappingWriter#create
return null instead of throwing an exception - Moved
MappingTreeRemapper
,TinyRemapperHierarchyProvider
andClassAnalysisDescCompleter
to newmapping-io-extras
publication - Fixed TSRG v2 reporting itself as not supporting field descriptors
- Fixed regular <-> flat visitor adapter methods
- Added
VisitableMappingTree
interface - Added experimental hierarchy propagation support
- Added
endOpIdx
for vars - Added reader and writer for single Enigma files
- Added some documentation with links to specs for mapping formats
- Added automatic flushing of all writers in
visitEnd
- Improved
MemoryMappingTree
merging flexibility - Changed to better error when trying to use a reader on a directory based format
- Prevented instantiation of mapping reader and util classes
- Allowed null destination names for parameters in Enigma format
MappingFormat
entries were renamed for consistency, they now end in either_FILE
or_DIR
- Mapping reader and writer classes have been renamed accordingly, and all got moved into new subpackages under
net.fabricmc.mappingio.format
- Fixed
MemoryMappingTree
methods returning private types - Fixed handling of absent nested class destination names in Enigma directory reader
- Fixed handling of multiple metadata entries with equal keys
- Fixed SRG reader source descriptor validation
- Fixed crash when trying to read empty TSRG file
- Fixed Enigma and ProGuard mapping file extensions
- Published to Maven Central
- Added support for ordered
MappingTreeView#accept
- Added support for equal source and destination namespaces in
MemoryMappingTree
's visitor - Added ProGuard writer
- Treated
<init>
and<clinit>
as non-missing inMappingSourceNsSwitch
- Fixed
MappingWriter#create
crashing for Tiny v1 - Fixed Tiny v2 serialization of missing lvt row indices
- Added Tiny v1 writer
- Added
NEEDS_HEADER_METADATA
flag - Made
ClassAnalysisDescCompleter
's ASM version configurable
- Allowed args/vars with missing source names in
MappingSourceNsSwitch
- Added
MappingTreeView
(read-onlyMappingTree
) - Added format detecting overloads to
MappingReader
- Added method to change member source descriptors directly
- Added
MissingDescFilter
andClassAnalysisDescCompleter
- Added support for dropping missing new source names in
MappingSourceNsSwitch
instead of keeping the old source name - Improved
MemoryMappingTree
merging behavior - Allowed parameter-only descriptors
- Fixed
MemoryMappingTree#getMethod
using the incorrect flags value
- Fixed reader crashes
- Fixed dynamic re-initialization with
MemoryMappingTree#setIndexByDstNames
- Fixed Enigma directory writer sometimes emitting extra class declarations
- Fixed handling of mappings with zero namespaces
- Fixed matching of arg/var names being too aggressive
- Added Enigma directory writer
- Added
throws IOException
to visitor methods
- Added option to add missing namespaces in
MappingNsCompleter
- Fixed
MemoryMappingTree
not saving visited arg/var source names
- Added
MappingVisitor
documentation - Made mapping readers of formats without namespace support use fallback namespaces
- Fixed
MappingNsCompleter
not working correctly
- Added
MappingDstNsReorder
adapter - Added Enigma directory and SRG readers
Initial release