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.
- Rework the intenral representation for
FileKindandFileInfo. - Rework internal representation for conditional predicates.
0.6.0 - 2026-07-19
moved_groupfile kind.- Allows to move the sections of a block of files to a different block of sections, preserving the original block order.
- Many files were moved into folders for better organization.
- Moved many structs into
mods for better organization.
0.5.0 - 2026-04-26
partialsetting. Groups every global setting related to partial linking.- It now contains the old
partial_scripts_folderandpartial_build_segments_foldersettings, renamed toscripts_folderandbuild_segments_folderrespectively.
- It now contains the old
partial.segment_extension: Specify the extension used for partially linked segments.
- Add
#[non_exhaustive]attributes to all relevant structures. LinkerWriter::new,LinkerWriter::new_reference_partial_objectsandPartialLinkerWriter::newnow return aResult<Self, SlinkyError>.- The extension for partial segments have been changed from
otoplf.- The extension used can be changed with the
partial.segment_extensionsetting.
- The extension used can be changed with the
- Delete the old
partial_scripts_folderandpartial_build_segments_foldersettings in favor of the newpartial.scripts_folderandpartial.build_segments_foldersettings.
0.4.0 - 2026-04-20
paths_list_pathsetting.- A path to a plain text file to be generated, containing all the files listed to build the target elf.
- Useful to pass a list of input files to the linker using the
@path/to/file.listsyntax on linkers that do support it.
- Include
.symtaband.strtabin default value ofsections_allowlist_extrafrom Settings.lldcan segfault in certain conditions if those sections are not listed explicitly on the linker script.
- Add
.gotto the default list of discarded sections. - Simplify the formatting used for extra sections.
alloc_sectionsandnoload_sectionssections now acceptnullvalues.- This allows to avoid emitting those sections completely for a given segment or globally.
- The main difference between using
nulland an empty list isnullwill not produce linker symbol nor the section itself in the generated linker script, while the empty list would generate the starting and ending linker symbols and the section with no files.
- The generated dependency file will now include an
-includedirective for every path listed, but replacing their extensions with.dto allow tracking the dependencies of those paths automatically.
0.3.0 - 2024-08-17
- Add new top-level attribute for the file format:
symbol_assignments.- Allows to define symbols directly on the generated linker script.
- Symbols created this way can be defined with raw addresses, reference other symbols or more complex expressions.
- These generated symbols do not have a corresponding section (defined as
ABSsymbols on the elf). - If a symbol assignment is emitted or not can be controlled with the same conditional inclussion/exclussion mechanism used by the custom options.
- These definitions can be wrapped in
PROVIDE,HIDDENorPROVIDE_HIDDEN.
- Add new top-level attribute for the file format:
required_symbols.- Allows to specify a list of symbols that should be forced to be linked into the build, even if they are not refenced by any other linked code.
- Useful for making sure a symbol from an static library is being linked.
- If a symbol assignment is emitted or not can be controlled with the same conditional inclussion/exclussion mechanism used by the custom options.
- Add way to define a non hardcoded
_gpsymbol for a given segment.- Used by defining the
gp_infofield on a segment. - Can't be combined with the global
hardcoded_gp_value.
- Used by defining the
- Add new top-level attribute for the file format:
entry.- Specifies the entrypoint for the build.
- Add new top-level attribute for the file format:
asserts.- Allows to define multiple assertions that should be satisfied for the link to success.
- New
keep_sectionsattribute forvram_classes,segmentsandfiles.- Allows to specify which sections of a files should be
KEEPduring link time garbage collection, even of those are not referenced at al by anything else. - Allows to configure for everything referencing a given vram class or as fine grained as a single file entry.
- Allows to specify which sections of a files should be
- New
sections_subgroupsattribute forsettingsandsegments.- Allows to specify one or multiple sections that should be emitted alongside another section for each file, instead of getting their own "proper" section.
- Produce an error if the user specifies an empty conditional inclusion/exclusion for any entry.
- Make sure all platforms use forward slashes when emitting file paths.
- Tests now strip the
\rcharacter from the expected files before compaing them.- This is done to normalize the tests files accross all platforms, including
the ones where git may add
\rcharacters when cloning the repository (like Windows).
- This is done to normalize the tests files accross all platforms, including
the ones where git may add
- Github Actions:
- Change CI to run tests on all platforms we generate builds artifacts for.
- Use the ARM Mac Github runner to build and test the ARM Mac builds.
- Merge
run_testsandreleasejobs to try to improve CI times.
0.2.5 - 2024-07-17
- Fix partial linking related paths not being properly escaped.
- Fix
partial_build_segments_foldernot being properly prefixed on some places. - Fix
section_ordernot being applied to files inside ofgroups. - Avoid generating sub-scripts of conditionally excluded segments during partial linking scripts generation.
0.2.4 - 2024-07-15
- Fix crate version not updated.
0.2.3 - 2024-07-15 [YANKED]
- Fix CI not uploading build artifacts to Github release.
- Fix README badge.
0.2.2 - 2024-07-15
- Fix release.
0.2.1 - 2024-07-15 [YANKED]
- Fix MSRV.
0.2.0 - 2024-07-15 [YANKED]
- Initial release.