Releases: ParchmentMC/Compass
Release list
v0.10.0
This releases introduces two separate mapping data formats for Enigma mapping files, for compatibility with both Enigma 2.4.0+ and older.
The new mapping data formats, ENIGMA_EXPLODED_LENGTH_SORT and ENIGMA_EXPLODED_LEXICOGRAPHIC_SORT, are largely the same with one difference: the order in which inner classes are written. The first one does a lengthwise sort first on the inner class name (then a lexicographical sort), which corresponds to the behavior of versions of Enigma older than 2.4.0. The second one only does a lexicographical sort on the full inner class name, which corresponds to Enigma 2.4.0 and beyond.
For backwards compatibility, the original ENIGMA_EXPLODED mapping data format is retained with its original behavior (corresponding to ENIGMA_EXPLODED_LENGTH_SORT).
Other additional fixes and changesinclude:
- The message used to indicate method non-existence in the member existence validator has been fixed to correctly refer to it as a 'method' (and not 'class').
- The sanitized export will no longer prefix the parameters of record canonical constructors with
p. - The parameter index validator (which checks that parameters are valid according to the metadata) has been merged into the member existence validator.
Full Changelog: v0.9.0...v0.10.0
v0.9.0
This release introduces a new migration system, backed up by the in-house ParchmentJAM integration application for JarAwareMapping/JAMMER. For more details, such as how to configure and run the migration system, see #23.
Other additional fixes and enhancements include:
- The
VersionDownloadtask now uses the version from the manifest its given for naming its output file, rather than pulling from thecompassextension. Whoops. - Task inference for the output of
VersionDownloadnow works properly -- plugging the output of that task to another task will now function correctly, in that Gradle can automatically infer the task dependency in that situation. CopyDatahas been modified to accept either a directory or a file (but not both) as its input and output. This is a breaking change, as thegetInput()andgetOutput()properties were removed to make way for directory- and file-specifc properties.- The Gradle version was updated from 7.4.2 to 8.2.
Thanks to @Matyrobbrt and @qwertyuioplkjhgfd for their contributions to this release!
Full Changelog: v0.8.1...v0.9.0
v0.8.1
This fixes an bug where DownloadAction#execute became an asynchronous operation, causing a situation where a file is asynchronously downloaded (via DownloadUtil#createAndExecuteAction) and then the file is opened to be hashed synchronously (via DownloadUtil#verifyChecksum) while the file may not yet be finished downloading.
Full Changelog: v0.8.0...v0.8.1
v0.8.0
This includes a few new features and enhancements:
-
#15: The export generation tasks now copy the data from record fields (which is where Enigma writes the javadocs for record components) to the class javadoc (as
@paramtags, which documents the record components) and the canonical constructor parameters' javadocs. -
#17: The writing process of the Enigma data IO interface was improved to reduce file IO churn due to mass-deletion and recreation of files.
Previously, the Enigma data IO would delete all the files and recreate them one-by-one, which creates a lot of churn when rewriting to the same folder with anything less than all-the-files changes. This new implementation avoids that by reusing mapping files if they match a class name, deleting files which don't match a class name (or the two JSON files) or directories without any files, and creating new mapping files for class names which don't have a reused file.
-
A new validator and new sanitizer was added to verify the existence of members in the mapping data.
-
The method data cascading in the export generation tasks was fixed to properly handle constructors.
Because constructors do not have the normal override information linking to the parent methods in the superclass -- the superclass constructors -- we add a special case: use the constructor from thesuperclass with the same descriptor/parameters.
There's also a few minor changes and fixes alongside those:
- The
launchermeta.mojang.comdomain for the manifest URL convention in thecompassextension was updated to use the new subdomainpiston-meta.mojang.com. - The conventional data formats for the production and staging directories was changed from the exploded MDC format to the exploded Enigma format, bringing it in line with its use in the Parchment mappings repository.
- The name for the method standards validator was fixed from
"Method standards"to"method standards", aligning with the lowercased convention of all other validators' names. - Gradle was updated to 7.4.2, Guava was updated to 31.1-jre, and the Gradle Download Task was updated to 5.1.0.
Full Changelog: v0.7.0...v0.8.0
v0.7.0
This adds a new data visitor structure in the form of the DataVisitor and ModifyingDataVisitor interfaces, for generalized and unified visitation (and in-flight modification) of mapping data. See PR #16 for more details.
Note that this feature may be moved to ParchmentMC/Feather in the future.
Among the other changes and fixes for the data visitor structure above, this also fixes (and basically rewrites) BouncerDataMover to work correct. It now runs in three phases: first to collect bouncer data, second to modify/replace existing targets with the new bouncer data, and third to replace bouncers whose target did not exist.
Full Changelog: v0.6.3...v0.7.0
v0.6.3
Updates the Gradle version targeted by the plugin and used by the wrapper to 7.3.1. Also removes the use of internal Gradle classes, which fixes an issue where previous versions of Compass used the internal Gradle utility HashUtil which was refactored somewhere between 7.0 and 7.3.1.
v0.6.2
Fixes a bug in RecordValidator where the position of the parameter was being passed as the requested index of parameter data from the method data, causing an out-of-bounds exception when trying to retrieve the non-existent record component name for the same position as the return type.
v0.6.1
v0.6.0
Notable changes
-
Updates various dependencies, notably Feather v1.0.0.3, which adds new classes for record component information for Blackstone metadata.
-
Adds a new
MethodDescriptorVisitorfunctional interface, for visiting each component of a method descriptor (parameters and return type, including LVT index).This also includes a refactor for
DescriptorIndexerto use the visitor instead of having its own descriptor parameter counting code; this means that the tests for this utility class now also test the visitor code. -
Adds a
RecordValidatorfor validation of the parameters of the record's canonical constructor.This validates that these parameters, if named, match exactly the name of the record component. This is enabled by default in the validation task, but as Enigma (the interface used in the Parchment mappings project) does not map the canonical constructor, this will likely sit unused.
-
Exposes the download locations for the client and server obfuscation logs in
ObfuscationMapsDownloader, for easier access as a file by consumers.