chore: Release Turborepo 2.10.9 (#13696)
## Release v2.10.9
> [!CAUTION]
> Versioned docs aliasing FAILED. [View
logs](https://github.com/vercel/turborepo/actions/runs/31216733075)
### Changes
- chore: Release Turborepo 2.10.8 (#13626) (`adbfec7`)
- perf: Walk literal-prefix tree globs without wax compilation (#13522)
(`eb42f23`)
- fix: Accept semver ranges in devEngines.packageManager.version
(#13623) (`5297aa2`)
- docs: Explain affected package invalidation reasons (#13594)
(`c6fbc97`)
- perf(lockfiles): Borrow field-name scalars in the pnpm fast parser
(#13648) (`73e8d8c`)
- perf(repository): Avoid discarded alias allocation in Relationship
(#13650) (`b888891`)
- perf(lockfiles): Drop redundant human_name clone for pnpm v7/v9
(#13649) (`2effc86`)
- perf: Index workspace nodes by name in project_relationships (#13647)
(`0bf6973`)
- perf: Share resolution identity lists across identical workspace
closures (#13641) (`5107207`)
- docs: Fix duplicated word in runtime dependencies guide summary
(#13630) (`0664de8`)
- refactor: Remove turborepo-lsp dependency on turborepo-lib (#13631)
(`8ff1ad7`)
- perf: Index Bun nested lockfile entries by name for fallback
resolution (#13633) (`c0a8996`)
- perf: Memoize framework inference per package during task hashing
(#13634) (`21ea1d0`)
- perf: Avoid materializing transient declarations in
external_dependencies (#13646) (`a892a89`)
- perf: Enable shared closure DP for npm and yarn1 lockfiles (#13635)
(`04db9a8`)
- perf: Parse pnpm explicit-key entries in the lockfile fast path
(#13640) (`83ae3d9`)
- perf: Parallelize resolution fingerprint hashing (#13642) (`95f2297`)
- perf: Build resolution identity lists in parallel (#13643) (`58e4e8a`)
- perf: Intern resolution identities as Arc<str> across closures
(#13645) (`6af5423`)
- fix: Compose affected tasks with package filters (#13656) (`0b1f466`)
- docs: Explain worktree cache path isolation (#13657) (`9e2865e`)
- fix: Upgrade brace-expansion to 5.0.9 (#13658) (`e247a0e`)
- docs: Correct verified inaccuracies in the Turborepo Agent Skill
(#13644) (`c05ed3d`)
- chore: Update Next.js to 16.3.0 (#13659) (`a936402`)
- fix: don't use eprintln! in the panic hook (#13637) (`658fd54`)
- fix: Invalidate only when Git ignore sources change (#13632)
(`f2957a2`)
- docs: Update Geistdocs to 1.19.4 (#13680) (`3617c78`)
- docs: Exclude Turborepo from its own OSS products menu (#13681)
(`43ee46a`)
- docs: Use the geistdocs Turborepo logo in the navbar (#13682)
(`d43eec5`)
- docs: Update redirected vercel.com/nextjs.org links to current targets
(#13685) (`b23e283`)
- refactor: Generalize native command arguments (#13664) (`e797251`)
- refactor: Move native contracts to tasks (#13665) (`851857d`)
- docs: Fix loadTransformers reference in turbo-codemod README (#13683)
(`7b8144e`)
- refactor: Model native task execution explicitly (#13666) (`2634f3c`)
- feat: Compose aggregate native task dependencies (#13667) (`ef8b3f3`)
- fix: Respect aggregate task overrides (#13668) (`81f88f2`)
- test: Stabilize watch task inputs regression test (#13686) (`308ea6b`)
- feat: Parse Python quality tool declarations (#13669) (`b1d5dc5`)
- feat: Resolve Python quality plans (#13670) (`439b465`)
- refactor: Extract uv native task specs (#13671) (`e14f04e`)
- feat: Synthesize Python quality tasks (#13672) (`94708ad`)
- test: Cover Python quality task commands (#13673) (`0d43ff3`)
- feat: Hash Python quality task inputs (#13674) (`3584a5f`)
- test: Cover Python quality task graph (#13675) (`09bd548`)
- chore: Release Turborepo 2.10.9-canary.1 (#13687) (`c09a92f`)
- docs: Document dependency-driven Python tasks (#13676) (`a98e5cd`)
- fix: Prune Bun wildcard workspace dev dependencies (#13694)
(`efe4e1b`)
- fix: Prevent Windows process cleanup PID reuse (#13695) (`3b0e57f`)
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>