v2026.9.0
jdx/misev2026.9.0Sep 1, 2026by mise-en-dev
AI Summary
This release introduces lazy tool shims that install tools automatically on first invocation, adds an opt-in Erlang precompiled OS override, and fixes a bug where nested mise calls during postinstall hooks would resolve to incorrect versions.
Key Highlights
- Lazy tool shims allow tools to be declared with `lazy = true` and installed on-demand.
- New `erlang.precompiled_os` setting opts into specific Bob Ubuntu builds.
- Postinstall hooks now activate the exact version being installed, fixing nested invocation issues.
New Features
- Lazy tool declaration in [tools] with lazy_bins support.
- Global path settings for shims and system installs.
- Erlang precompiled OS override for compatible glibc distributions.
Full Release Notes
This release introduces lazy tool shims, which install a tool automatically the first time one of its commands is invoked, plus an opt-in Erlang precompiled OS override and a fix for nested `mise` calls during postinstall hooks.
## Added
- **tools:** Declare a tool as lazy in `[tools]` with `lazy = true` and mise generates bootstrap shims into its normal user/system shim farms. The provider is installed only when one of its commands is first called, then executes immediately; subsequent calls run the real binary without another mise dispatch. Registry tools derive their command names from registry `bins`, while explicit or non-registry backends declare them with `lazy_bins`. A bare `mise install` skips lazy declarations; use `mise install --include-lazy` to provision them all. New global path settings (`shims_dir`/`MISE_SHIMS_DIR`, `system_installs_dir`/`MISE_SYSTEM_INSTALLS_DIR`, `system_shims_dir`/`MISE_SYSTEM_SHIMS_DIR`) and `mise reshim --system` support system-scoped and collocated layouts. ([#12594](https://github.com/jdx/mise/pull/12594) by @jdx)
```toml
[tools]
node = { version = "24", lazy = true }
"github:example/acme" = { version = "1.2.3", lazy = true, lazy_bins = ["acme", "acmectl"] }
```
- **erlang:** New `erlang.precompiled_os` setting (and `MISE_ERLANG_PRECOMPILED_OS`) opts into a specific Bob Ubuntu build target—including Ubuntu 26.04—on compatible glibc distributions. Automatic target detection is unchanged, and lockfiles now preserve the selected OS for reproducible builds. Note the portability constraints around shared-library SONAMEs documented with the setting. ([#12637](https://github.com/jdx/mise/pull/12637) by @jdx)
## Fixed
- **install:** Postinstall hooks now activate the exact tool version being installed, so nested `mise` invocations (such as `mise which` or `mise ls`) resolve that version instead of an older discoverable one—or losing the tool entirely when it was declared through a custom config path with `mise use --path`. ([#12635](https://github.com/jdx/mise/pull/12635) by @jdx)
## Registry
- Added `engram` ([#12480](https://github.com/jdx/mise/pull/12480) by @AndryOre)
- Added `gentle-ai` ([aqua:Gentleman-Programming/gentle-ai](https://github.com/Gentleman-Programming/gentle-ai)) ([#12444](https://github.com/jdx/mise/pull/12444) by @AndryOre)
## New Contributors
* @AndryOre made their first contribution in [#12444](https://github.com/jdx/mise/pull/12444)
**Full Changelog**: https://github.com/jdx/mise/compare/v2026.8.16...v2026.9.0
## 💚 Sponsor mise
mise is maintained by [@jdx](https://github.com/jdx), an open source developer for [**entire.io**](https://entire.io), the title sponsor of the [jdx.dev](https://jdx.dev) open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at [jdx.dev](https://jdx.dev/sponsors.html). Individual and company sponsorships keep mise fast, free, and independent.