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.
Unreleased - ReleaseDate
0.1.39 - 2026-01-27
- Introduce
requires(#820)
- Don't escape expression string results (#822)
- Evaluate
${outfile}(#816) - Prevent panic on flattening empty list (#805)
- Do not panic on clean (#791)
- book: Typo fix in configuration.md (#747)
- book: Simplify how to source fish completions (#775)
- deps: Bump anyhow from 1.0.98 to 1.1.12
- deps: Bump clap from 4.5.41 to 4.5.54
- deps: Bump clap_complete from 4.5.55 to 4.5.65
- deps: Bump clap_mangen from 0.2.28 to 0.2.31
- deps: Bump git-cache from 0.2.5 to 0.2.6
- deps: Bump indexmap from 2.10.0 to 2.13.0
- deps: Bump jobslot from 0.2.22 to 0.2.23
- deps: Bump mimalloc from 0.1.47 to 0.1.48
- deps: Bump rayon from 1.10.0 to 1.11.0
- deps: Bump rust-embed from 8.7.2 to 8.11.0
- deps: Bump semver from 1.0.26 to 1.0.228
- deps: Bump serde_json from 1.0.140 to 1.0.149
- deps: Bump shell-words from 1.1.0 to 1.1.1
- deps: Bump signal-hook from 0.3.18 to 0.4.3
- deps: Bump tempfile from 3.20.0 to 3.24.0
- deps: Bump thiserror from 2.0.12 to 2.0.18
0.1.38 - 2025-07-17
- Support optionally parsing laze-local.yml (#745)
- deps: Bump clap_mangen from 0.2.27 to 0.2.28 (#742)
- deps: Bump clap from 4.5.40 to 4.5.41 (#740)
- deps: Bump clap_complete from 4.5.54 to 4.5.55 (#741)
- deps: Bump indexmap from 2.9.0 to 2.10.0 (#737)
0.1.37 - 2025-06-24
- Add jobserver support (#735)
- ninja: Use slash paths for ninja files (#734)
- tasks: Implement tasks calling subtasks (#725)
- release: Add git cliff config file (#720)
- deps: Bump subst from 0.3.7 to 0.3.8 (#736)
- deps: Bump mimalloc from 0.1.46 to 0.1.47 (#733)
- deps: Bump clap_complete from 4.5.52 to 4.5.54 (#731)
- deps: Bump clap_mangen from 0.2.26 to 0.2.27 (#729)
- deps: Bump clap from 4.5.39 to 4.5.40 (#730)
- deps: Bump camino from 1.1.9 to 1.1.10 (#727)
- deps: Bump clap_complete from 4.5.51 to 4.5.52 (#726)
- deps: Bump clap from 4.5.38 to 4.5.39 (#724)
- deps: Bump clap_complete from 4.5.50 to 4.5.51 (#723)
0.1.36 - 2025-05-19
- Only show "laze: executing task ..." in verbose mode (#716)
- Create PR links in CHANGELOG.md (#712)
- deps: Bump signal-hook from 0.3.17 to 0.3.18 (#715)
- deps: Bump clap_complete from 4.5.49 to 4.5.50 (#714)
- deps: Bump rust-embed from 8.7.0 to 8.7.1 (#713)
- deps: Bump clap_complete from 4.5.47 to 4.5.48 (#711)
- deps: Bump clap from 4.5.36 to 4.5.37 (#706)
- deps: Bump shellexpand from 3.1.0 to 3.1.1 (#704)
- deps: Bump anyhow from 1.0.97 to 1.0.98 (#703)
- deps: Bump mimalloc from 0.1.45 to 0.1.46 (#699)
- deps: Bump rust-embed from 8.6.0 to 8.7.0 (#700)
- deps: Bump indexmap from 2.8.0 to 2.9.0 (#698)
- deps: Bump mimalloc from 0.1.44 to 0.1.45 (#697)
- deps: Bump clap from 4.5.34 to 4.5.35 (#696)
0.1.35 - 2025-03-28
- feat: make output sharing optional (#687)
- feat: add dependency resolution verbose output
- feat: track why a module was disabled, improve error msgs
- feat: expose errors resolving module providers (#694)
- feat: improve "conflicted by" error message (#693)
- fix(rule): pass through rule variables that are not in env (#691)
- fix: pass git commit and url to
GIT_PATCHrule (#690)
0.1.34 - 2025-03-24
- fix(env): fix state reset with escaped expressions (#682)
0.1.33 - 2025-02-24
- feat: allow setting a workdir for tasks using
workdir(#652, #658) - feat: initial support for Windows (#653, #648, #645)
- fix: use "directory" consistently across docs (drop uses of "folder") (#655)
0.1.32 - 2025-02-18
- fix: don't leak empty variables in tasks (#647)
0.1.31 - 2025-02-17
- feat: context
provides/provides_unique(#639) - feat: provide an env variable
contextssimilar tomodules(#636)
0.1.30 - 2025-02-08
- feat: implement
includes(#include <file>but for laze build files) - feat: allow
if: - thendependencies also forselect: - feat: rules
exportshell exports
0.1.29 - 2024-12-20
- feat(cli): implement dynamic shell completions (autocomplete builders, apps, modules)
- fix(cli): don't treat comma in '--define' as separator (#590)
- build(deps): bump clap_complete from 4.5.38 to 4.5.40
- build(deps): bump semver from 1.0.23 to 1.0.24
- build(deps): bump thiserror from 2.0.6 to 2.0.8
0.1.28 - 2024-12-12
- allow defining tasks in modules
- implemented
task::required_modules
- always update git-cache of a branch or tag
importssource - track
imports:sources, trigger new download if source has changed
0.1.27 - 2024-12-06
- fix cache laze version check again, go through bytes
0.1.26 - 2024-12-06
- fix sorting of ninja build statements, preventing ninja errors
- fix
$relrootpotentially having one..too much (#571) - fix
$rootto usually contain., matching documentation - fix cache laze version check (there was a potential crash after a laze update)
- fix buildfile caching (was broken by task
export)
- build(deps): bump clap from 4.5.21 to 4.5.22
- build(deps): bump anyhow from 1.0.93 to 1.0.94
- build(deps): bump indexmap from 2.6.0 to 2.7.0
- build(deps): bump pathdiff from 0.2.2 to 0.2.3
0.1.25 - 2024-11-25
- implement continue-on-error (add
-k/--keep-going) - implement executing multiple tasks (add
-m/--multiple-tasks) - allow contexts in
conflicts/disables(prependcontext::)
- disallow module names starting with
context::
- build(deps): bump anyhow from 1.0.88 to 1.0.93
- build(deps): bump clap from 4.5.17 to 4.5.21
- build(deps): bump clap_complete from 4.5.26 to 4.5.38
- build(deps): bump clap_mangen from 0.2.23 to 0.2.24
- build(deps): bump derive_builder from 0.20.1 to 0.20.2
- build(deps): bump indexmap from 2.5.0 to 2.6.0
- build(deps): bump pathdiff from 0.2.1 to 0.2.2
- build(deps): bump serde from 1.0.210 to 1.0.215
- build(deps): bump serde_json from 1.0.128 to 1.0.133
- build(deps): bump uuid from 1.10.0 to 1.11.0
0.1.24 - 2024-09-13
- wire up
importsfrom branches or tags, and default branch - implement
importsfrom local paths
0.1.23 - 2024-09-07
0.1.22 - 2024-09-07
- integrate
git-cache-rs - introduce
var_options::from - Add
context::buildable, allowing a context to become a builder.
0.1.21 - 2024-02-13
- Allow overriding the
dldirfor (download,cmd) imports
- Make yaml parsing strict (disallow unexpected fields)
- Introduce "meta" field on contexts, modules, rules, tasks and at file level. This field will just be ignored, allowing for extra information in laze build files now that the yaml parsing is strict.
- Strip binary by default
- Fix CHANGELOG.md links, update
cargo releasepre-release-replacements
- Bump clap from 4.4.13 to 4.4.18
- Bump clap_complete from 4.4.6 to 4.4.10
- Bump clap_mangen from 0.2.16 to 0.2.19
- Bump container.yml versions
- Bump derive_builder from 0.12.0 to 0.13.0
- Bump indexmap from 2.1.0 to 2.2.2
- Bump itertools from 0.12.0 to 0.12.1
- Bump rayon from 1.8.0 to 1.8.1
- Bump serde from 1.0.194 to 1.0.196
- Bump serde_json from 1.0.111 to 1.0.113
- Bump serde_yaml from 0.9.30 to 0.9.31
- Bump treestate from 0.1.0 to 0.1.1
- Bump uuid from 1.6.1 to 1.7.0
- import: Factor out download.rs
- nested_env: Improve error message
0.1.20 - 2024-01-08
POST_LINKrule: added a way to post process app.elffiles
laze newnow drops the.inextension from rendered templates
- bump clap from 4.4.12 to 4.4.13
- refactored
nested_env::Envto be a distinct struct. This brought a nice performance gain (+~5% for RIOT use case).
0.1.19 - 2024-01-05
- implement
laze build --info-export <file.json> ..., exporting some insights (modules & dependencies) - implement
laze new, a way to generate laze projects from templates
- cli: make "--verbose" a global flag
${relpath}now contains '.' if otherwise emtpy in more cases- correctly find applications in local mode when in project root
- use buffered IO for cache. Speeds up cache read/write dramatically.
- if the srcdir of a module is equal or a descendent of a dependency, create a ninja phony rule. Prevents ninja from complaining about non-existant files.
- set up continuous benchmarking using bencher
- prevent
fixup!commits from getting merged - build(deps): bump anyhow from 1.0.75 to 1.0.79
- build(deps): bump clap from 4.4.11 to 4.4.12
- build(deps): bump clap_complete from 4.4.4 to 4.4.6
- build(deps): bump clap_mangen from 0.2.15 to 0.2.16
- build(deps): bump rust-embed from 8.1.0 to 8.2.0
- build(deps): bump semver from 1.0.20 to 1.0.21
- build(deps): bump serde from 1.0.193 to 1.0.194
- build(deps): bump serde_yaml from 0.9.27 to 0.9.30
0.1.18 - 2023-12-18
-
add file-level
laze_required_versionIf specified, laze checks if its own version is at leastlaze_required_version. -
add
task::exportsThis allows laze variables to be exported to the envirenment of tasks:context: - name: foo env: some_variable: some_value tasks: some_task: exports: - some_variable cmd: # some_varialble=some_value is will be set in the _shell environment_ - some_command
-
extended test suite, now allows to test for exit codes and stdout/stderr patterns. Mostly, this allows to test errors.
-
dependencies:
- bump clap from 4.4.6 to 4.4.11
- bump clap_complete from 4.4.3 to 4.4.4
- bump clap_mangen from 0.2.14 to 0.2.15
- bump evalexpr from 11.1.0 to 11.3.0
- bump indexmap from 2.0.2 to 2.1.0
- bump itertools from 0.11.0 to 0.12.0
- bump rust-embed from 8.0.0 to 8.1.0
- bump serde from 1.0.188 to 1.0.193
- bump serde_yaml from 0.9.25 to 0.9.27
- bump url from 2.4.1 to 2.5.0
- bump uuid from 1.4.1 to 1.6.1
0.1.17 - 2023-10-06
- fixed expression evaluation for tasks
- more CHANGELOG.md automation
-
BREAKING: allow basic expressions in variables and task commands This is using the
evalexprcrate. Expressions are used make-style by wrapping them in$(), e.g.,$(1+2).This requires previous
$(echo foo)meant to be subshells to be escaped:$$(echo foo). -
implement task
required_varsThis allows task availability depend on the existence of global variables. -
cli: drop "tasks" cli subcommand, add tasks to "build" Instead of
laze task ... <task-name> [<task args>], just dolaze build ... <task-name> [<task args>]. -
cli: improve "build" subcommand help message
- global build deps are now applied to the LINK step. That fixes build targets
that have no created objects where the dependencies can be added to, e.g.,
a module with 'download:' but without
sources:/ objects.
- fix release / rebase mishap
-
disallow space seperated lists for apps, builders, define, selects, disables Lists can still be specified as comma-seperated (e.g.,
--apps foo,bar), or by doing e.g.,--apps foo --apps bar. -
MSRV bumped to 1.64
- modules: add
provides_uniqueas shortcut to both provide and conflict - download and patch rules are now module-env expanded
- fix: fix not selected provided modules leaking exports
- bump mimalloc from 0.1.32 to 0.1.34
- bump clap from 4.0.32 to 4.1.1
- bump clap_mangen from 0.2.6 to 0.2.7
- modules: add "is_global_build_dep"
- exports from "provided" dependencies are now properly imported
- bump anyhow from 1.0.66 to 1.0.68
- bump clap from 4.0.29 to 4.0.32
- bump clap_complete from 4.0.6 to 4.0.7
- bump clap_mangen from 0.2.5 to 0.2.6
- bump serde from 1.0.150 to 1.0.152
- bump serde_yaml from 0.9.14 to 0.9.16
- cli: implement partitioning
- cli: experimental: add (hidden) commands to create shell completions and man pages
- cli: fix
-C <dir> - cli: change name to just
laze(fromlaze in Rust)
- modules: add "provides"
- cli: allow
--build-dir,--jobs,--compile-commands,--globalto be set via environment - cli: wire up creation of compile_commands.json
- make CLI selects have precedence over app/context selects
- "app:" -> "apps:"
- "module:" -> "modules:"
- "context:" -> "contexts:"
- "builder:" -> "builders:"
- "contexts.rule" -> "context.rules"
- "context.disable" -> "context.disables"
- mdBook manual
- add
-j<N>to build/task, pass to ninja
- fix release workflow
- "import" from git
- "import" from assets bundled with laze (e.g., "import: laze: defaults")
- custom module builds (
build:) - allow "--enable" as alias for "--select"
- add laze binary build id to cache hash
- allow overriding default download dir with "dldir" option
- expand variables in "sources" and "srcdir"
- pass "description" to Ninja rules
- "clean" cli command
- switch to mimalloc
- providing binary releases on Github
- set "project-root" variable
- allow specifying custom "outfile"
- this CHANGELOG.md
- apply early environment (e.g.,
$root) to task commands - don't panic on duplicate context definition, show involved files
- fix "if_then" dependency order
- fix build dependencies
- take "app" context into account