Change8

v2.10.4

📦 turborepoView on GitHub →
9 features🐛 9 fixes🔧 5 symbols

Summary

This release focuses heavily on performance improvements across lockfile parsing, hashing, and discovery phases, alongside introducing significant experimental support for Rust Cargo workspaces. Key changes include adopting mimalloc as the global allocator and enhancing dependency computation concurrency.

Migration Steps

  1. Rename the `turborepo-repository` napi package to `@turbo/repository`.

✨ New Features

  • Added futureFlags.experimentalCargoWorkspaces flag (currently no-op).
  • Introduced toolchain provider abstraction.
  • Discovered Cargo crates as packages.
  • Execute Cargo crate tasks via cargo.
  • Derive input and output globs for Cargo tasks.
  • Expose resolved experimentalCI task configuration in `turbo query`.
  • Make `turbo watch` Cargo-aware.
  • Make `turbo prune` Cargo-aware.
  • Hash Cargo external dependencies per-crate.

🐛 Bug Fixes

  • Fixed cache outputs for Eve app in CI.
  • Kept ancestor-scoped bun dependencies resolvable after prune renames.
  • Applied input exclusion globs to the filesystem walk.
  • Stopped root-directory packages from claiming every file in change mapping.
  • Avoided non-reentrant libc calls in concurrent shutdown process scans.
  • Fell back to lockfile detection in @turbo/repository when package manager is undeclared.
  • Collapsed nested package-manager fallback conditional.
  • Raised the open-file soft limit at startup.
  • Stopped flagging relative imports that resolve into node_modules in boundaries.

Affected Symbols