v2026.5.4

jdx/misev2026.5.4May 9, 2026by mise-en-dev

AI Summary

This release adds automatic musl detection for Java on Alpine Linux and significantly improves PowerShell activation performance by avoiding shell spawning. It also cleans up the `ibmcloud` install footprint.

Key Highlights

  • Automatic musl detection for Java on Alpine, removing the need for explicit `-musl` suffixes.
  • PowerShell activation is ~270ms faster on `pwsh` and ~185ms faster on `powershell` by directly setting exit codes.
  • IBM Cloud now uses `symlink_bins`, reducing the `$PATH` footprint and preventing binary shadowing.

New Features

  • Automatic musl detection for Java
  • Improved PowerShell activation performance

Full Release Notes

A small release that smooths out Java installs on Alpine, makes pwsh shell activation noticeably snappier, and cleans up `ibmcloud`'s `$PATH` footprint.

## Added

- **(java)** Automatic musl detection on Alpine Linux ([#9688](https://github.com/jdx/mise/pull/9688)) by @roele. Java versions on Alpine no longer require an explicit `-musl` feature suffix — `mise-java` now exposes an `alpine-linux` OS containing the musl builds, and mise selects it automatically when running on a musl libc. So this:

  ```sh
  mise use java@corretto-25
  ```

  picks the Alpine/musl Corretto build on Alpine, and `-musl`-suffixed versions (e.g. `corretto-musl-25`) continue to resolve for backwards compatibility.

## Fixed

- **(registry)** `ibmcloud` now uses `symlink_bins`, so only the `ibmcloud` binary is placed on `$PATH` instead of the entire install directory. This prevents the bundled `install` binary from shadowing `/usr/bin/install` ([#9685](https://github.com/jdx/mise/pull/9685)) by @dnwe.

## Performance

- **(pwsh)** Activation no longer spawns a fresh `pwsh -NoProfile -Command exit $status` (or `powershell` on PS 5) after every hook just to propagate mise's exit code — it now assigns `$global:LASTEXITCODE = $status` directly. On a typical machine that's ~270ms (`pwsh`) or ~185ms (`powershell`) shaved off every prompt ([#9723](https://github.com/jdx/mise/pull/9723)) by @vemoo.

## Changed

- **(schema)** `xtasks/render/schema.ts` no longer overwrites `$defs.task_template` and the trailing `$defs.task.oneOf` branch on every `mise run render:schema`; those shapes already live in `schema/mise.json`, with lightweight guard checks remaining ([#9680](https://github.com/jdx/mise/pull/9680)) by @risu729.

## Aqua Registry Updates

New packages:
- [`DataDog/managed-kubernetes-auditing-toolkit`](https://github.com/DataDog/managed-kubernetes-auditing-toolkit)
- `oracle.com/sqlcl`

Updated packages:
- [`alltuner/mise-completions-sync`](https://github.com/alltuner/mise-completions-sync)
- [`iann0036/iamlive`](https://github.com/iann0036/iamlive)
- [`pnpm/pnpm`](https://github.com/pnpm/pnpm)

**Full Changelog**: https://github.com/jdx/mise/compare/v2026.5.3...v2026.5.4

## 💚 Sponsor mise

mise is built by [@jdx](https://github.com/jdx) under [**en.dev**](https://en.dev) — an independent studio making developer tooling (mise, [aube](https://aube.en.dev/), and more). Development is funded by sponsors.

If mise saves you or your team time, please consider sponsoring at [en.dev](https://en.dev). Individual and company sponsorships keep mise fast, free, and independent.