Skip to content

feat(conda): graduate conda backend out of experimental#9544

Merged
jdx merged 1 commit intomainfrom
feat/conda-stable
May 2, 2026
Merged

feat(conda): graduate conda backend out of experimental#9544
jdx merged 1 commit intomainfrom
feat/conda-stable

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented May 2, 2026

Summary

The conda backend has been stable in practice — install/uninstall, lockfile resolution, dependency handling, and library-path patching are all covered by the e2e suite (e2e/backend/test_conda exercises ruff, bat, jq with deps, and postgresql with ~23 transitive deps). Drop the experimental gate so users no longer need to set MISE_EXPERIMENTAL=1 to use it.

Changes:

  • Remove conda::EXPERIMENTAL constant and the ensure_experimental("conda backend") check in install_version_.
  • Drop the BackendType::Conda branch in is_experimental().
  • Remove the experimental badge from docs/dev-tools/backends/conda.md and the backends index.

dotnet, s3, and spm remain experimental and are unchanged.

Test plan

  • cargo check --all-features (verified locally — clean).
  • mise run test:e2e test_conda still passes (e2e harness sets MISE_EXPERIMENTAL=1 globally so behavior is unchanged in CI; this PR's effect is for end users not setting that var).
  • mise install conda:ruff works without MISE_EXPERIMENTAL=1 set.

🤖 Generated with Claude Code


Note

Low Risk
Low risk: removes the experimental gate for the conda backend and updates docs; no functional changes to install/solve logic beyond allowing it to run without MISE_EXPERIMENTAL enabled.

Overview
Graduates the conda backend out of experimental by removing the experimental flag/constant, dropping BackendType::Conda from is_experimental(), and eliminating the Settings::ensure_experimental("conda backend") check during install.

Updates backend documentation to remove the experimental badge for conda in both docs/dev-tools/backends/conda.md and the backends index.

Reviewed by Cursor Bugbot for commit 39d45eb. Bugbot is set up for automated code reviews on this repo. Configure here.

The conda backend has been stable in practice — install/uninstall, lockfile
resolution, dependency handling, and library-path patching are all covered
by e2e tests. Drop the experimental gate so users no longer need to set
MISE_EXPERIMENTAL=1 to use it.

- Remove conda::EXPERIMENTAL constant and the ensure_experimental() check.
- Drop the BackendType::Conda branch in is_experimental().
- Remove the experimental badge from the conda backend docs and the
  backends index.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 2, 2026

Greptile Summary

Graduates the conda backend out of experimental by removing the EXPERIMENTAL constant, the ensure_experimental("conda backend") guard in install_version_, and the BackendType::Conda arm in is_experimental(). Documentation badges are updated to match. All three removal sites are consistent and no stale references to conda's experimental status remain in the codebase.

Confidence Score: 5/5

This PR is safe to merge — it removes a narrow, well-scoped experimental gate with no functional changes to the conda backend itself.

All three removal sites (constant, is_experimental match arm, ensure_experimental call) are correctly handled and consistent. No stale references to conda's experimental status exist in the codebase. Remaining experimental backends (dotnet, s3, spm) are untouched. Docs are updated to match.

No files require special attention.

Important Files Changed

Filename Overview
src/backend/conda.rs Removes the EXPERIMENTAL constant and ensure_experimental guard from install_version_, graduating conda to stable.
src/backend/backend_type.rs Drops the BackendType::Conda arm from is_experimental() and removes the now-unused conda import; remaining experimental backends (dotnet, s3, spm) are unchanged.
docs/dev-tools/backends/conda.md Removes the experimental badge from the conda backend page heading.
docs/dev-tools/backends/index.md Removes the experimental badge from the conda entry in the backends index; dotnet, s3, and spm badges are correctly retained.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User runs: mise install conda:ruff] --> B{is_experimental?}
    B -- "Before PR: BackendType::Conda → true" --> C[Check MISE_EXPERIMENTAL=1]
    C -- not set --> D[❌ Error: conda backend is experimental]
    C -- set --> E[install_version_ called]
    E --> F["ensure_experimental() check"]
    F --> G[✅ Install proceeds]

    B -- "After PR: Conda not in match → false" --> H[install_version_ called directly]
    H --> I[✅ Install proceeds without flag]
Loading

Reviews (1): Last reviewed commit: "feat(conda): graduate conda backend out ..." | Re-trigger Greptile

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request promotes the Conda backend from experimental to stable by removing experimental badges in the documentation and eliminating the experimental mode checks and constants in the source code. I have no feedback to provide.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 2, 2026

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 x -- echo 23.0 ± 0.4 22.0 25.0 1.00
mise x -- echo 24.0 ± 3.0 22.6 89.3 1.04 ± 0.13

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 env 22.6 ± 0.6 21.5 29.0 1.00
mise env 23.3 ± 0.5 22.0 27.3 1.03 ± 0.04

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 hook-env 23.3 ± 0.6 22.3 28.9 1.00
mise hook-env 24.1 ± 0.5 22.8 26.3 1.03 ± 0.03

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 ls 20.5 ± 0.4 19.4 23.6 1.00
mise ls 21.4 ± 0.4 20.1 23.1 1.04 ± 0.03

xtasks/test/perf

Command mise-2026.4.28 mise Variance
install (cached) 155ms 159ms -2%
ls (cached) 78ms 80ms -2%
bin-paths (cached) 83ms 84ms -1%
task-ls (cached) 825ms 818ms +0%

@jdx jdx merged commit 2628fd6 into main May 2, 2026
39 checks passed
@jdx jdx deleted the feat/conda-stable branch May 2, 2026 15:33
mise-en-dev added a commit that referenced this pull request May 3, 2026
### 🚀 Features

- **(conda)** graduate conda backend out of experimental by @jdx in
[#9544](#9544)
- **(deps)** Add dart and flutter providers by @tjarvstrand in
[#9505](#9505)
- **(registry)** add neo4j by @mnm364 in
[#9525](#9525)
- **(registry)** add rustfs by @mnm364 in
[#9530](#9530)
- **(task)** support exclusion patterns in task sources by
@jlarmstrongiv in [#9496](#9496)
- **(vfox)** add stat function to lua file module by @esteve in
[#9497](#9497)

### 🐛 Bug Fixes

- **(backend)** flag regex prerelease versions by @jdx in
[#9500](#9500)
- **(backend)** mark -nightly/-canary/-experimental as prereleases by
@jdx in [#9523](#9523)
- **(backend)** suppress no-versions warning for unresolved-latest
backends by @jdx in [#9548](#9548)
- **(backend)** include dotnet prereleases from package flags by @jdx in
[#9551](#9551)
- **(backend)** scope PEP 440 prerelease detection to Python backends by
@jdx in [#9558](#9558)
- **(cargo)** Apply install_env during cargo install by @c22 in
[#9502](#9502)
- **(copr)** drop epel-9 chroots since rust >= 1.91 is unavailable by
@jdx in [#9484](#9484)
- **(github)** skip attestations on non-default api_url by @jdx in
[#9486](#9486)
- **(github)** retry ip allow list errors without auth by @risu729 in
[#9506](#9506)
- **(http)** update versions host tracking endpoint by @jdx in
[#9527](#9527)
- **(install)** don't warn for configured tools when version is passed
via CLI by @jdx in [#9522](#9522)
- **(install)** refresh latest before installing missing tools by @jdx
in [#9545](#9545)
- **(install)** don't cache nonexistent install paths by @jdx in
[#9553](#9553)
- **(lockfile)** don't propagate ad-hoc CLI overrides into the project
lockfile by @jdx in [#9562](#9562)
- **(plugin)** detect plugin types after cloning by @risu729 in
[#9540](#9540)
- **(release)** pass --no-git-checks to aube publish by @jdx in
[#9483](#9483)
- **(task)** convert PATH to MSYS Unix form when spawning POSIX shells
on Windows by @JamBalaya56562 in
[#9547](#9547)

### 📚 Documentation

- **(contributing)** require popularity check for registry PRs by @jdx
in
[7bbeebe](7bbeebe)
- **(watch)** update pitchfork domain to en.dev by @risu729 in
[#9536](#9536)
- document ghtkn GitHub token setup by @jdx in
[#9546](#9546)
- clarify registry backend acceptance policy by @jdx in
[#9543](#9543)
- Change exec command to use bash for variable echo by @kuboon in
[#9567](#9567)

### 🧪 Testing

- **(e2e)** run test-tool targets in parallel by @jdx in
[#9564](#9564)
- **(e2e)** run tests in parallel by @jdx in
[#9563](#9563)
- **(e2e)** bind-mount /tmp on disk and surface failed tests in CI
summary by @jdx in [#9570](#9570)
- **(tasks)** migrate test_task_help atask to usage field by @jdx in
[#9549](#9549)

### 📦️ Dependency Updates

- update fedora:45 docker digest to 8b838b3 by @renovate[bot] in
[#9507](#9507)
- update ghcr.io/jdx/mise:deb docker digest to f02194c by @renovate[bot]
in [#9509](#9509)
- update taiki-e/install-action digest to 7769b73 by @renovate[bot] in
[#9512](#9512)
- update ghcr.io/jdx/mise:alpine docker digest to 581f8a8 by
@renovate[bot] in [#9508](#9508)
- update rust crate ctor to v0.10.1 by @renovate[bot] in
[#9515](#9515)
- update ghcr.io/jdx/mise:rpm docker digest to a5c9655 by @renovate[bot]
in [#9510](#9510)
- update rust docker digest to a9cfb75 by @renovate[bot] in
[#9511](#9511)
- update rust crate age to v0.11.3 by @renovate[bot] in
[#9514](#9514)
- update rust crate jiff to v0.2.24 by @renovate[bot] in
[#9516](#9516)
- update dependency vitepress-plugin-tabs to ^0.9.0 by @renovate[bot] in
[#9518](#9518)
- update autofix-ci/action action to v1.3.4 by @renovate[bot] in
[#9513](#9513)
- update rust crate usage-lib to v3.2.1 by @renovate[bot] in
[#9517](#9517)
- update apple-actions/import-codesign-certs action to v7 by
@renovate[bot] in [#9519](#9519)
- update taiki-e/install-action digest to 51cd0b8 by @renovate[bot] in
[#9531](#9531)
- exclude taiki-e/install-action from renovate by @jdx in
[#9532](#9532)
- update rust crate blake3 to v1.8.5 by @renovate[bot] in
[#9533](#9533)

### 📦 Registry

- enable shellcheck on windows by @zeitlinger in
[#9487](#9487)
- add google-java-format by @zeitlinger in
[#9488](#9488)
- add expert
([aqua:expert-lsp/expert](https://github.com/expert-lsp/expert)) by
@AlternateRT in [#9498](#9498)
- update entry for checkmake by @eread in
[#9504](#9504)
- add systemctl-tui
([aqua:rgwood/systemctl-tui](https://github.com/rgwood/systemctl-tui))
by @2xdevv in [#9521](#9521)
- add codon by @3w36zj6 in
[#9538](#9538)
- add tool yr (backend:github:VirusTotal/yara-x) by @adam-moss in
[#9542](#9542)
- add tool betterleaks (backend:aqua/betterleaks/betterleaks) by
@adam-moss in [#9541](#9541)
- add `git-filter-repo` by @garysassano in
[#9550](#9550)
- add umoci
([aqua:opencontainers/umoci](https://github.com/opencontainers/umoci))
by @2xdevv in [#9555](#9555)
- add aqua backend for elixir-ls by @AlternateRT in
[#9557](#9557)
- deny inline backend options by @risu729 in
[#9565](#9565)

### Chore

- **(ci)** fail registry tests without summary by @jdx in
[#9559](#9559)
- **(ci)** use !cancelled() instead of always() for test-ci aggregator
by @jdx in [#9569](#9569)
- **(ci)** use namespace runners for ci jobs by @jdx in
[#9561](#9561)
- **(config)** deprecate shorthands_file setting by @risu729 in
[#9534](#9534)
- **(docs)** remove shrill.en.dev analytics script by @jdx in
[#9539](#9539)
- **(release)** replace bc with awk in release-plz star formatting by
@jdx in
[d7f177f](d7f177f)
- bump hk to 1.44.3 by @jdx in
[#9493](#9493)
- invert CLAUDE.md/AGENTS.md so AGENTS.md is canonical by @jdx in
[#9560](#9560)
- set dev profile debug to 1 by @jdx in
[#9572](#9572)

### New Contributors

- @kuboon made their first contribution in
[#9567](#9567)
- @AlternateRT made their first contribution in
[#9557](#9557)
- @2xdevv made their first contribution in
[#9555](#9555)
- @adam-moss made their first contribution in
[#9541](#9541)
- @jlarmstrongiv made their first contribution in
[#9496](#9496)
- @tjarvstrand made their first contribution in
[#9505](#9505)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant