Skip to content

chore(fish-speech): drop the darwin/metal build target#10561

Merged
mudler merged 1 commit into
masterfrom
worktree-remove-fish-speech-darwin
Jun 27, 2026
Merged

chore(fish-speech): drop the darwin/metal build target#10561
mudler merged 1 commit into
masterfrom
worktree-remove-fish-speech-darwin

Conversation

@localai-bot

Copy link
Copy Markdown
Collaborator

Why

The fish-speech metal-darwin-arm64 backend build has failed on every recent release (v4.5.3, v4.5.4, v4.5.5) and is a standing red on the darwin backend matrix.

fish-speech pulls tokenizers transitively from its upstream source (pip install -e fish-speech-src). On darwin/arm64 there is no prebuilt wheel for the pinned old tokenizers version, so pip builds it from source, and modern rustc rejects that old crate as a hard error:

error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
   --> tokenizers-lib/src/models/bpe/trainer.rs:517:47
   = note: `#[deny(invalid_reference_casting)]` on by default
error: could not compile `tokenizers` (lib) due to 1 previous error

This is deterministic, not a flake. There is no clean fix that does not either pin a stale Rust toolchain or downgrade a soundness lint that guards real UB. Until upstream fish-speech moves to a tokenizers version that compiles on current toolchains, the pragmatic call is to drop the darwin target so the release backend build stays green.

Per the CLAUDE.md backend-OS-coverage guidance ("...or say in the PR why an OS is unsupported"), this is the documented reason darwin is unsupported for fish-speech.

What changed

  • Removed the -metal-darwin-arm64-fish-speech entry from includeDarwin in .github/backend-matrix.yml
  • Removed the metal: capability mappings and the concrete metal-fish-speech / metal-fish-speech-development gallery entries in backend/index.yaml
  • Removed the now-unused darwin-only backend/python/fish-speech/requirements-mps.txt

Unaffected

Linux CPU / CUDA 12 / CUDA 13 / ROCm / Intel / L4T variants are untouched. Referential integrity of backend/index.yaml was verified (no dangling capability refs) and both YAML files parse.

Assisted-by: Claude:claude-opus-4-8 [Claude Code]

The fish-speech metal-darwin-arm64 backend build has been failing on every
release (v4.5.3, v4.5.4, v4.5.5) and is a standing red on the darwin backend
matrix. fish-speech pulls `tokenizers` transitively from its upstream source
(`pip install -e fish-speech-src`), and on darwin/arm64 there is no prebuilt
wheel for the pinned old `tokenizers` version, so pip builds it from source.
Modern rustc rejects that old crate as a hard error:

    error: casting `&T` to `&mut T` is undefined behavior ...
       --> tokenizers-lib/src/models/bpe/trainer.rs:517:47
       = note: `#[deny(invalid_reference_casting)]` on by default
    error: could not compile `tokenizers` (lib) due to 1 previous error

This is deterministic, not a flake, and there is no clean fix that does not
either pin a stale Rust toolchain or downgrade a soundness lint guarding real
UB. Until upstream fish-speech moves to a tokenizers version that compiles on
current toolchains, drop darwin support so the release backend build stays
green. The Linux/CUDA/ROCm/Intel/L4T variants are unaffected.

Removes:
- the `-metal-darwin-arm64-fish-speech` entry from `includeDarwin` in
  backend-matrix.yml
- the `metal:` capability mappings and the concrete `metal-fish-speech` /
  `metal-fish-speech-development` gallery entries in backend/index.yaml
- the now-unused darwin-only requirements-mps.txt

Assisted-by: Claude:claude-opus-4-8 [Claude Code]

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
@mudler
mudler merged commit 8aba4fd into master Jun 27, 2026
65 checks passed
@mudler
mudler deleted the worktree-remove-fish-speech-darwin branch June 27, 2026 21:24
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.

2 participants