jdx/mise · error

no precompiled ruby is available for this platform\nTo compi

Error message

no precompiled ruby is available for this platform\nTo compile ruby from source, run: mise settings ruby.compile=true

What it means

core:ruby enumerates precompiled ruby builds (from the configured release source). When listing remote versions, if the current platform has no precompiled platform mapping (precompiled_platform() returns None), mise cannot enumerate precompiled builds and fails immediately with a hint to enable source compilation via ruby.compile=true.

Source

Thrown at src/plugins/core/ruby.rs:626

        )))
    }

    /// Restrict a version list to versions that have a precompiled binary for this platform.
    ///
    /// Entries are only removed, never reordered, so `latest` and prefix resolution keep the
    /// same ordering semantics as a source install.
    async fn retain_precompiled_versions(
        &self,
        versions: Vec<VersionInfo>,
    ) -> Result<Vec<VersionInfo>> {
        let settings = Settings::get();
        let source = &settings.ruby.precompiled_url;
        if source.contains("://") {
            // A URL template can't be enumerated, so every version is assumed available.
            return Ok(versions);
        }
        let Some(platform) = self.precompiled_platform() else {
            bail!(
                "no precompiled ruby is available for this platform\n\
                 To compile ruby from source, run: mise settings ruby.compile=true"
            );
        };
        // Only the releases `list_releases` returns are considered. Without
        // MISE_LIST_ALL_VERSIONS that is the most recent page, which is where the
        // precompiled builds live.
        let releases = github::list_releases(source).await?;
        let available = Self::precompiled_versions_from_releases(
            &releases,
            Self::source_requires_build_revision(source),
            &platform,
        );
        Ok(versions
            .into_iter()
            .filter(|v| available.contains(&v.version))
            .collect())
    }

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Enable source compilation: `mise settings ruby.compile=true`
  2. Set ruby.precompiled_url to a URL template providing builds for your platform
  3. Use a supported platform (glibc Linux x86_64/aarch64 or supported macOS) or the vfox ruby backend

Example fix

// before
mise ls-remote ruby  // unsupported platform

// after
mise settings set ruby.compile true
mise install ruby@3.3.0
Defensive patterns

Strategy: validation

Validate before calling

case "$(uname -s)-$(uname -m)" in
  Linux-x86_64|Linux-aarch64|Darwin-arm64|Darwin-x86_64) : ;;
  *) echo "platform likely unsupported for precompiled ruby; set ruby.compile=true" ;;
esac

Try / catch

if ! mise ls-remote ruby >/dev/null 2>&1; then
  mise settings set ruby.compile true
fi

Prevention

When it happens

Trigger: Running anything that lists remote ruby versions (e.g. `mise ls-remote ruby`) on a platform the precompiled builds don't cover, when ruby.precompiled_url is not a custom URL template and ruby.compile is disabled.

Common situations: Uncommon OS/arch (musl/Alpine, BSD, exotic CPUs); macOS x86_64 after prebuilt support was dropped; custom precompiled_url not set while default host doesn't map to any platform.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/2311956c33fbdc26. Report an issue: GitHub.