Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request finalizes the release of Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request handles the version bump to 2026.2.24. The changes are consistent across all relevant files, including the changelog, package manifests, and completion scripts. The dependency versions in mise.lock have also been updated correctly. The changes appear to be correct for a new release.
Greptile SummaryThis PR releases version 2026.2.24 with a bug fix for the aqua backend that removes unnecessary bin_paths disk cache. All version references have been consistently updated across package manifests, documentation, and generated files. The Confidence Score: 5/5
Important Files Changed
Last reviewed commit: cb914bb |
5c3b908 to
7f0a56c
Compare
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.2.23 x -- echo |
25.1 ± 0.5 | 24.2 | 27.4 | 1.00 |
mise x -- echo |
29.5 ± 0.9 | 27.7 | 35.6 | 1.17 ± 0.04 |
x -- echo is 17% |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.2.23 env |
24.9 ± 0.9 | 23.8 | 32.5 | 1.00 |
mise env |
28.5 ± 0.8 | 27.4 | 32.4 | 1.14 ± 0.05 |
env is 14% |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.2.23 hook-env |
25.9 ± 0.9 | 24.7 | 29.0 | 1.00 |
mise hook-env |
29.4 ± 1.7 | 28.4 | 55.2 | 1.13 ± 0.08 |
hook-env is 13% |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.2.23 ls |
23.7 ± 1.0 | 22.2 | 26.9 | 1.00 ± 0.05 |
mise ls |
23.6 ± 0.7 | 22.5 | 26.7 | 1.00 |
xtasks/test/perf
| Command | mise-2026.2.23 | mise | Variance |
|---|---|---|---|
| install (cached) | 159ms | 162ms | -1% |
| ls (cached) | 90ms | 89ms | +1% |
| bin-paths (cached) | 96ms | 97ms | -1% |
| task-ls (cached) | 828ms | 833ms | +0% |
…8398) ## Summary - Restore the aqua `bin_paths.msgpack.z` disk cache that was removed in #8383 - Use `with_fresh_file(tv.install_path())` for automatic cache invalidation when a tool is installed/updated - Restore `PathExt::mount` and `PathExt::is_empty` helpers needed for relative path handling ## Context PR #8383 removed the aqua bin_paths disk cache to fix staleness bugs (#8372) where concurrent `mise hook-env` during install could cache incomplete paths. However, this caused a ~8-17% performance regression on `mise env`, `mise x -- echo`, and `mise hook-env` (confirmed in CI hyperfine benchmarks on the 2026.2.24 release PR #8387). The root cause of the regression: each mise command is a separate process, so in-memory caches provide no benefit. The disk cache was what persisted across invocations. The original cache lacked `fresh_file` invalidation. This fix uses `with_fresh_file(tv.install_path())` — the same pattern used by `ExternalPluginCache` for asdf backends — so the cache automatically invalidates when the install directory's mtime changes (i.e., after tool installation). This avoids the race condition from #8372 without sacrificing performance. ### Local benchmark results (hyperfine, 100 runs) | Command | Baseline (2026.2.23) | No cache (2026.2.24) | **This fix** | |---------|---------------------|---------------------|-------------| | `mise env` | 24.5ms | 26.2ms (+7%) | **23.8ms** (restored) | | `mise x -- echo` | 23.5ms | 26.0ms (+11%) | **23.7ms** (restored) | ## Test plan - [x] `cargo check` passes - [x] All lints pass (`mise run lint-fix`) - [x] All 492 unit tests pass (`mise run test:unit`) - [x] Local hyperfine benchmarks confirm regression is eliminated - [ ] CI hyperfine benchmarks pass 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Medium risk because it changes `list_bin_paths` behavior and caching semantics for the aqua backend; incorrect invalidation or path mounting could lead to missing/incorrect PATH entries after installs/updates. > > **Overview** > Restores a persistent disk cache for aqua `list_bin_paths` (`bin_paths.msgpack.z`) to avoid recomputing bin directories on each invocation. > > The cache now uses `with_fresh_file(tv.install_path())` (plus an existing freshness duration) so it automatically invalidates when the install directory changes, and it stores paths relative to `install_path` then re-mounts them via newly reintroduced `PathExt::mount`/`PathExt::is_empty` helpers. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 8019d04. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
🐛 Bug Fixes