-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Comparing changes
Open a pull request
base repository: vercel/turborepo
base: v2.9.0
head repository: vercel/turborepo
compare: v2.9.1
- 7 commits
- 60 files changed
- 3 contributors
Commits on Mar 30, 2026
-
release(turborepo): 2.9.0 (#12494)
## Release v2.9.0 Versioned docs: https://v2-9-0.turborepo.dev ### Changes - release(turborepo): 2.8.21 (#12472) (`be8dc50`) - fix: Avoid panic for unanchorable/non-UTF8 git paths (#11106) (`5f45fdb`) - release(turborepo): 2.8.22-canary.1 (#12473) (`f929b6d`) - fix: Handle Yarn 2+ in @turbo/codemod install commands (#12477) (`64e5ffd`) - release(turborepo): 2.8.22-canary.2 (#12479) (`be8cf64`) - feat: Accept `experimentalCI` key in turbo.json task config (#12480) (`bff5591`) - release(turborepo): 2.8.22-canary.3 (#12481) (`cd2d25b`) - fix: Prevent pnpm overrides from corrupting resolved peer-dep variants (#12482) (`91d31cf`) - release(turborepo): 2.8.22-canary.4 (#12483) (`a6eabc6`) - fix: Skip writing unchanged files during slow-path cache restore (#12484) (`b7c0001`) - release(turborepo): 2.8.22-canary.5 (#12486) (`3155a35`) - fix: Replace pre-existing symlinks with directories during cache restore (#12488) (`d07bee8`) - release(turborepo): 2.8.22-canary.6 (#12490) (`5e9ba83`) - fix: Follow symlinks during workspace package discovery (#12489) (`f39b370`) - release(turborepo): 2.8.22-canary.7 (#12491) (`c03cc5f`) - fix: Reduce inotify watch count via gitignore-aware directory walking on Linux (#12398) (`664fd88`) - release(turborepo): 2.8.22-canary.8 (#12492) (`841fe79`) --------- Co-authored-by: Turbobot <turbobot@vercel.com>
Configuration menu - View commit details
-
Copy full SHA for 9702dc8 - Browse repository at this point
Copy the full SHA 9702dc8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6bf87ec - Browse repository at this point
Copy the full SHA 6bf87ecView commit details -
fix: Use previous minor/major tag for release notes on minor/major re…
…leases (#12495) ## Summary - The "Get previous tag" step in the release workflow treated all stable releases the same, picking the latest non-canary tag as `--notes-start-tag`. For minor/major releases like v2.9.0, this meant comparing against v2.8.21 (a patch) instead of v2.8.0 (the last minor), so the generated notes missed everything shipped in patches between the two minors. - Now, minor/major releases filter to `vX.Y.0` tags so the full delta is captured. Patch releases keep the existing behavior. - Already fixed the live v2.9.0 release notes via `gh release edit`.
Configuration menu - View commit details
-
Copy full SHA for a7c6dd9 - Browse repository at this point
Copy the full SHA a7c6dd9View commit details -
feat: Handle package manager catalogs in migration codemod (#12496)
## Summary When a project uses package manager catalogs (e.g. `"turbo": "catalog:"` in `package.json`), the migration codemod previously ran `pnpm add turbo@latest` which overwrote the `catalog:` reference with a literal version string — breaking the catalog setup. Now the codemod detects `catalog:` protocol references, updates the version directly in the catalog file (`pnpm-workspace.yaml` or `.yarnrc.yml`), and runs a plain `install` to sync the lockfile instead. Fixes the issue reported here: https://x.com/stanzillaz/status/1906367700218610076 ## What changed - **New step in migration flow**: Before building the upgrade command, the codemod checks if turbo uses a `catalog:` reference. If so, it updates the version in the catalog file (preserving the existing range prefix like `^` or `~`) and uses a plain install command instead of `add`. - **Tag resolution fix in `getLatestVersion`**: `--to latest` now resolves to the concrete version (e.g. `"2.9.0"`) instead of returning the string `"latest"`. This also fixes the `fromVersion === toVersion` short-circuit that previously couldn't detect same-version with tag names. - Supports pnpm default catalogs (`catalog:`), pnpm named catalogs (`catalog:<name>`), and Yarn Berry catalogs (`.yarnrc.yml`). ## Testing 18 new tests covering detection (pnpm default/named, yarn, npm, non-catalog, missing files) and YAML updates (version update, prefix preservation, no-op when already current). All 245 tests in the suite pass.
Configuration menu - View commit details
-
Copy full SHA for 079366b - Browse repository at this point
Copy the full SHA 079366bView commit details -
release(turborepo): 2.9.1-canary.1 (#12497)
## Release v2.9.1-canary.1 Versioned docs: https://v2-9-1-canary-1.turborepo.dev ### Changes - release(turborepo): 2.8.22-canary.8 (#12492) (`841fe79`) - release(turborepo): 2.9.0 (#12494) (`9702dc8`) - docs: Release post for 2.9 (#12441) (`6bf87ec`) - fix: Use previous minor/major tag for release notes on minor/major releases (#12495) (`a7c6dd9`) - feat: Handle package manager catalogs in migration codemod (#12496) (`079366b`) Co-authored-by: Turbobot <turbobot@vercel.com>
Configuration menu - View commit details
-
Copy full SHA for fbf34a2 - Browse repository at this point
Copy the full SHA fbf34a2View commit details -
feat: Add
cacheMaxAgeandcacheMaxSizefor local cache eviction (#……12487) ## Summary - Adds `cacheMaxAge` (TTL) and `cacheMaxSize` (LRU) config options to `turbo.json` for automatic local filesystem cache eviction - Also configurable via `TURBO_CACHE_MAX_AGE` and `TURBO_CACHE_MAX_SIZE` environment variables - Both options are opt-in; no behavioral change for existing users ## How it works Eviction runs in a **background thread** at `turbo run` startup (fire-and-forget, doesn't block task scheduling). The two-phase algorithm: 1. **Phase 1 (TTL)**: Removes entries whose `.tar.zst` mtime exceeds `cacheMaxAge` 2. **Phase 2 (LRU)**: If remaining cache exceeds `cacheMaxSize`, evicts oldest entries first ## Config examples ```json { "cacheMaxAge": "7d", "cacheMaxSize": "10GB" } ``` Duration supports: `30s`, `5m`, `24h`, `7d`, `2w`. Size supports: `500MB`, `10GB`, `1TB` (case-insensitive, fractional values like `1.5GB` work). ## Safety - Parsers use checked arithmetic — overflow, NaN, negative, and Infinity inputs are rejected with clear error messages - `.tmp` file cleanup skips files younger than 1 hour to avoid racing concurrent `turbo run` processes - `SystemTime` subtraction uses `checked_sub` to prevent panics with extreme `max_age` values - Eviction is best-effort: individual file removal failures are silently skipped ## Testing To verify: set `TURBO_CACHE_MAX_AGE=1s` or `cacheMaxAge: "1s"` in turbo.json, run two builds with a gap, and confirm stale entries are removed. Eviction results are logged at `info` level.
Configuration menu - View commit details
-
Copy full SHA for a702a15 - Browse repository at this point
Copy the full SHA a702a15View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7a2191f - Browse repository at this point
Copy the full SHA 7a2191fView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v2.9.0...v2.9.1