A feature-rich release that adds runtime musl/glibc detection for correct binary selection on Linux, a new interactive task field for exclusive terminal access, and several important fixes for platform-specific tool installation, the standalone installer, and Ruby precompiled binary discovery.
Highlights
- Runtime musl/glibc detection ensures mise downloads the right binary variant regardless of how mise itself was compiled, with lockfile support for both libc variants.
interactivetask field provides a targeted way to give a task exclusive terminal access without forcing all tasks to run sequentially.- Platform install fixes correct multiple issues where registry-defined platform options were ignored or mangled, affecting tools like flyway and http-backend tools with platform-specific URLs.
- Installer safety guard prevents accidental data loss when
MISE_INSTALL_PATHpoints to an existing directory.
Added
-
interactivefield for tasks -- Mark a task withinteractive = trueto give it exclusive terminal access (stdin/stdout/stderr) while other non-interactive tasks continue running in parallel. This is a more targeted alternative toraw = true, which forcesjobs=1globally --interactiveonly blocks concurrent tasks while the interactive task is actively running. #8491 by @jdx[tasks.deploy] run = "deploy.sh" interactive = true # gets exclusive stdin/stdout/stderr access
-
Runtime musl/glibc detection for correct libc variant selection -- mise now detects musl libc at runtime (by checking for
/lib/ld-musl-*) instead of using compile-time configuration. This means a musl-built mise running on a glibc system (or vice versa) will correctly select the right binary variant. Lockfiles now include separate entries forlinux-x64-muslandlinux-arm64-muslplatforms. Existing lockfiles without musl entries continue to work and will be updated on the nextmise lock. #8490 by @jdx -
Header comment in generated lockfiles --
mise.lockfiles now include a@generatedheader comment, making it clear the file is auto-generated and should not be edited manually. #8481 by @ivy# @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html [[tools.node]] version = "22.14.0" ...
-
Preserve
.exeextensions on Windows -- The github, gitlab, forgejo, and http backends now automatically keep executable extensions (.exe,.bat,.cmd) when usingbinorrename_exeoptions on Windows, fixing tools like yt-dlp that were broken by extension stripping. #8424 by @iki
Fixed
-
Registry platform options now applied during install -- Platform-specific options like
asset_patterndefined in the tool registry were silently ignored during installation because nested TOML structures were flattened to strings. This caused tools like flyway to select the wrong asset (e.g., alpine instead of linux-x64). #8492 by @jdx -
Tool opts stored as native TOML to fix platform switching -- Switching an
http:tool from a single URL to platform-specific URLs ([tools."http:X".platforms]) could fail because cached options in.mise-installs.tomlwere mangled during round-tripping. Options are now stored as proper TOML fields with automatic migration of old manifests. #8448 by @jdx -
Installer errors if
MISE_INSTALL_PATHis a directory -- SettingMISE_INSTALL_PATHto an existing directory (e.g.,~/tmpinstead of~/tmp/mise) caused the installer torm -rfthat directory, potentially deleting important files. The installer now detects this and exits with a clear error message suggesting a file path. #8468 by @jdx -
Prepare sources/outputs resolve relative to
dir-- When a prepare provider setsdir, relative source and output paths now correctly resolve againstproject_root/dirinstead of justproject_root. This fixes freshness tracking in monorepo setups where prepare providers target subdirectories. #8472 by @jdx -
Ruby precompiled binary lookup for older versions -- Precompiled Ruby discovery used paginated release listing (first page only), so versions beyond the first 30 releases (like Ruby 3.2.2) silently fell back to compiling from source. The lookup now fetches the specific release by tag directly. #8488 by @jdx
-
JSON schema supports structured objects in task depends -- The JSON schema for
depends,depends_post, andwait_fornow correctly accepts the structured{ task, args?, env? }object syntax that the runtime already supported, fixing IDE validation errors. #8463 by @risu729 -
Broken pipe no longer panics in task output -- Task output macros used
println!/eprintln!which panic on broken pipes (e.g., when piping mise output tohead). Replaced withcalm_ioequivalents that gracefully handle closed stdout/stderr. #8485 by @vmaleze -
Scoped npm package names no longer panic -- Using
@scope/pkg(e.g.,@anthropic-ai/claude-code) without thenpm:backend prefix caused an internal panic. The parser now correctly treats the leading@as part of the package name and provides a proper error message. #8477 by @jdx
New Contributors
Full Changelog: v2026.3.3...v2026.3.4