Skip to content

Update tokio from 1.43.0 to 1.47.3#90945

Open
lukesandberg wants to merge 2 commits intocanaryfrom
update-tokio-1.47.3
Open

Update tokio from 1.43.0 to 1.47.3#90945
lukesandberg wants to merge 2 commits intocanaryfrom
update-tokio-1.47.3

Conversation

@lukesandberg
Copy link
Contributor

@lukesandberg lukesandberg commented Mar 5, 2026

Summary

Update the workspace tokio dependency from 1.43.0 to 1.47.3 (resolves to 1.50.0 in lockfile).

The tokio 1.43.x LTS line expires March 2026. This moves to the 1.47.x LTS line (supported until September 2026).

Key changes included in this bump

  • Soundness fix: broadcast channel clone race condition (1.44.2)
  • select! is now budget-aware (1.44) — cooperates with tokio's cooperative scheduling
  • Stabilized runtime metrics: worker_total_busy_duration, worker_park_count, worker_unpark_count (1.45)
  • Performance: improved AtomicWaker::wake, eliminated unnecessary lfence in task queue (1.46-1.47)
  • New APIs: sync::SetOnce, Notify::notified_owned(), broadcast::WeakSender, biased option for join!/try_join!
  • runtime::Handle marked unwind-safe (1.45)
  • Transitive dep bump: socket2 0.5 → 0.6, windows-sys 0.52 → 0.61

Breaking changes (verified safe)

  • from_std now panics on blocking sockets — no TcpStream::from_std calls in codebase
  • LocalSet::{poll,drop} disallows blocking — no LocalSet usage in codebase
  • select! budget awareness — behavioral change, should improve fairness

New duplicate dependencies

  • socket2 v0.6.2 added (v0.4 and v0.5 already existed due to hyper 0.14)

Test plan

  • cargo check passes with no errors
  • CI build and test suite

@nextjs-bot nextjs-bot added the created-by: Turbopack team PRs by the Turbopack team. label Mar 5, 2026
Copy link
Contributor Author

lukesandberg commented Mar 5, 2026

@lukesandberg lukesandberg marked this pull request as ready for review March 5, 2026 20:35
@lukesandberg lukesandberg requested a review from a team March 5, 2026 20:35
Copy link
Contributor

@mmastrac mmastrac left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@mischnic
Copy link
Member

mischnic commented Mar 5, 2026

to 1.47.3 (resolves to 1.50.0 in lockfile)

weird, but doesn't matter really

Copy link
Contributor Author

yeah noticed that too... it is a compatible update i guess.

CI is in charge of this decision :D

@nextjs-bot
Copy link
Collaborator

nextjs-bot commented Mar 5, 2026

Tests Passed

@codspeed-hq
Copy link

codspeed-hq bot commented Mar 5, 2026

Merging this PR will degrade performance by 6.89%

❌ 1 regressed benchmark
✅ 16 untouched benchmarks
⏩ 3 skipped benchmarks1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation build[lucide-react-all] 6.9 s 7.4 s -6.89%

Comparing update-tokio-1.47.3 (14f1da3) with canary (cd49df2)

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@nextjs-bot
Copy link
Collaborator

nextjs-bot commented Mar 5, 2026

Stats from current PR

🔴 1 regression

Metric Canary PR Change Trend
Warm (Listen) 963ms 1.064s 🔴 +101ms (+10%) ▁▁▁▁▁
📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 1.014s 964ms ▁▁▁▁▁
Cold (Ready in log) 1.015s 959ms ▁▁▁▁▁
Cold (First Request) 1.878s 1.791s ▃▃▃▁▁
Warm (Listen) 963ms 1.064s 🔴 +101ms (+10%) ▁▁▁▁▁
Warm (Ready in log) 959ms 1.025s ▁▁▁▁▁
Warm (First Request) 778ms 800ms ▁▁▁▂▁
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 456ms 455ms ▁▁▁▁▁
Cold (Ready in log) 436ms 435ms ▃▂▃▃▃
Cold (First Request) 1.939s 1.939s ▁▁▁▁▁
Warm (Listen) 455ms 455ms ▁▁▁▁▁
Warm (Ready in log) 436ms 436ms ▃▃▁▂▂
Warm (First Request) 1.961s 1.932s ▁▁▁▁▁

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 7.609s 7.404s ▁▁▁▁▂
Cached Build 7.622s 7.326s ▁▁▁▁▂
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 14.258s 14.235s ▂▁▁▁▁
Cached Build 14.453s 14.468s ▁▁▁▁▁
node_modules Size 482 MB 482 MB ▁▁▁▁▁
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
0_6xxv2jiaklh.js gzip 13.6 kB N/A -
0.-r71sd1j_zb.js gzip 7.61 kB N/A -
0~lwfcrlb4v_9.css gzip 115 B 115 B
00h0nz7r436~l.js gzip 13.3 kB N/A -
02ku7edzc_wf7.js gzip 450 B N/A -
03~yq9q893hmn.js gzip 39.4 kB 39.4 kB
07sn0b4nbcn1d.js gzip 48 kB N/A -
092lcb3fqrrf9.js gzip 8.52 kB N/A -
09aojw2sfnh9w.js gzip 158 B N/A -
0aj~xs1l1g8tg.js gzip 8.53 kB N/A -
0b_vmvwyei9.js gzip 162 B N/A -
0c9-9hu.1pepj.js gzip 154 B N/A -
0dv70_.gmif78.js gzip 65.7 kB N/A -
0h35gmp9u328z.js gzip 8.54 kB N/A -
0h6fkavebp.iz.js gzip 8.47 kB N/A -
0hd-ql2h2r4cn.js gzip 155 B N/A -
0ino_yf1k3h6k.js gzip 10.4 kB N/A -
0ip7lm~usinza.js gzip 155 B N/A -
0j-zh.3ht.p4o.js gzip 157 B N/A -
0k.sixc712dq1.js gzip 10.1 kB N/A -
0kkm7tesfinr6.js gzip 12.9 kB N/A -
0kksp53y6_-a9.js gzip 154 B N/A -
0moy~uao4dl.m.js gzip 9.19 kB N/A -
0q50rtpusjy90.js gzip 2.28 kB N/A -
0qxky9-n~u1p4.js gzip 163 B N/A -
0s10x3rw-134r.js gzip 70.8 kB N/A -
0smgy2grrrlka.js gzip 8.58 kB N/A -
0t0whz-iuxthr.js gzip 157 B N/A -
0t1dzhdfh0txh.js gzip 215 B 215 B
0w-k48_buuwdr.js gzip 157 B N/A -
0xeiazrbzzv44.js gzip 154 B N/A -
0zid7o0-vupvp.js gzip 225 B N/A -
11yo3xfd6b147.js gzip 12.9 kB N/A -
13.84hqxl_1p7.js gzip 9.76 kB N/A -
13mwr00h1ccuz.js gzip 157 B N/A -
1554wr-t7p6z-.js gzip 8.55 kB N/A -
15tjst79~qy3_.js gzip 1.46 kB N/A -
15z_v00ne4ud0.js gzip 8.47 kB N/A -
17242a2mp76au.js gzip 169 B N/A -
17d_m3p4j9w6r.js gzip 5.62 kB N/A -
17yu~3yiu7d2m.js gzip 8.52 kB N/A -
turbopack-0...k.n..js gzip 4.16 kB N/A -
turbopack-01..u_f..js gzip 4.16 kB N/A -
turbopack-04..h.1v.js gzip 4.16 kB N/A -
turbopack-06..3inv.js gzip 4.16 kB N/A -
turbopack-0e..ad2y.js gzip 4.17 kB N/A -
turbopack-0g..dald.js gzip 4.16 kB N/A -
turbopack-0j..z7m6.js gzip 4.16 kB N/A -
turbopack-0n..c0sc.js gzip 4.16 kB N/A -
turbopack-0p..ti57.js gzip 4.16 kB N/A -
turbopack-0q..webl.js gzip 4.14 kB N/A -
turbopack-0s..w3_k.js gzip 4.16 kB N/A -
turbopack-11..x-t6.js gzip 4.16 kB N/A -
turbopack-13..tm26.js gzip 4.16 kB N/A -
turbopack-14..on.t.js gzip 4.16 kB N/A -
0_~83b5e6e7l0.js gzip N/A 13.6 kB -
0.vygkt6.oiju.js gzip N/A 157 B -
0~5wik339id-8.js gzip N/A 153 B -
03t__~.5lvgeu.js gzip N/A 5.62 kB -
04d6ll75jqx3r.js gzip N/A 9.19 kB -
0583exyh-yhc7.js gzip N/A 9.76 kB -
05b07nana~4_..js gzip N/A 10.1 kB -
06o0rvpyi86bj.js gzip N/A 157 B -
07-x3bpms-s9t.js gzip N/A 70.8 kB -
072lv63r8dcz~.js gzip N/A 8.58 kB -
08cf9bbqs5u3h.js gzip N/A 161 B -
0apkzi79a8f6c.js gzip N/A 157 B -
0ar1~bwpezfgw.js gzip N/A 13.3 kB -
0c99mq1ez2bke.js gzip N/A 450 B -
0cdn5udqxvge3.js gzip N/A 156 B -
0cq-cmde_ws6u.js gzip N/A 8.47 kB -
0fwf102w10o9~.js gzip N/A 8.52 kB -
0gg3dtp0n4p.y.js gzip N/A 154 B -
0gtmn.q_j1v5r.js gzip N/A 10.4 kB -
0i~r5.wh-edq4.js gzip N/A 156 B -
0jbal_o7xtsxp.js gzip N/A 169 B -
0jhtb~3297y0u.js gzip N/A 48 kB -
0jq6ih6j6xxph.js gzip N/A 155 B -
0l4d~z7ixj3wz.js gzip N/A 12.9 kB -
0lmi1ca8yr_v1.js gzip N/A 156 B -
0m-4sjcvavf15.js gzip N/A 65.7 kB -
0nclq9z6yzzm5.js gzip N/A 1.46 kB -
0nzumcogektg7.js gzip N/A 8.55 kB -
0s.c-cn5eebrx.js gzip N/A 8.47 kB -
0tna7lg6q4zne.js gzip N/A 12.9 kB -
0votdfxr5fb5u.js gzip N/A 2.28 kB -
0xkuhv202qqhu.js gzip N/A 7.6 kB -
0ykl9bs_qj.5..js gzip N/A 8.52 kB -
0yx1xky7t0e8e.js gzip N/A 160 B -
0zfen0tnxp4gh.js gzip N/A 8.55 kB -
0zqkw42-xtx6w.js gzip N/A 157 B -
10wkq1h9jzkg..js gzip N/A 225 B -
149ndfh8zfcaz.js gzip N/A 8.53 kB -
turbopack-0-..a0gs.js gzip N/A 4.16 kB -
turbopack-0~..ss-..js gzip N/A 4.16 kB -
turbopack-02..~qfd.js gzip N/A 4.16 kB -
turbopack-04..8.b8.js gzip N/A 4.16 kB -
turbopack-0b..fd.o.js gzip N/A 4.16 kB -
turbopack-0c..hp_7.js gzip N/A 4.16 kB -
turbopack-0c..0v.e.js gzip N/A 4.16 kB -
turbopack-0c..qnrp.js gzip N/A 4.16 kB -
turbopack-0e..m-.n.js gzip N/A 4.14 kB -
turbopack-0g..pnt1.js gzip N/A 4.18 kB -
turbopack-0k..1u0a.js gzip N/A 4.16 kB -
turbopack-0u..evws.js gzip N/A 4.16 kB -
turbopack-0v..7286.js gzip N/A 4.16 kB -
turbopack-0w..t21o.js gzip N/A 4.16 kB -
Total 462 kB 462 kB ⚠️ +3 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 714 B 705 B 🟢 9 B (-1%)
Total 714 B 705 B ✅ -9 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 428 B 430 B
Total 428 B 430 B ⚠️ +2 B

📦 Webpack

Client

Main Bundles
Canary PR Change
5528-HASH.js gzip 5.54 kB N/A -
6280-HASH.js gzip 59.9 kB N/A -
6335.HASH.js gzip 169 B N/A -
912-HASH.js gzip 4.59 kB N/A -
e8aec2e4-HASH.js gzip 62.7 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 255 B 252 B 🟢 3 B (-1%)
main-HASH.js gzip 39.2 kB 39.2 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
262-HASH.js gzip N/A 4.59 kB -
2889.HASH.js gzip N/A 169 B -
5602-HASH.js gzip N/A 5.55 kB -
6948ada0-HASH.js gzip N/A 62.7 kB -
9544-HASH.js gzip N/A 60.6 kB -
Total 234 kB 235 kB ⚠️ +720 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Total 39.4 kB 39.4 kB
Pages
Canary PR Change
_app-HASH.js gzip 194 B 194 B
_error-HASH.js gzip 183 B 180 B 🟢 3 B (-2%)
css-HASH.js gzip 331 B 330 B
dynamic-HASH.js gzip 1.81 kB 1.81 kB
edge-ssr-HASH.js gzip 256 B 256 B
head-HASH.js gzip 351 B 352 B
hooks-HASH.js gzip 384 B 383 B
image-HASH.js gzip 580 B 581 B
index-HASH.js gzip 260 B 260 B
link-HASH.js gzip 2.51 kB 2.51 kB
routerDirect..HASH.js gzip 320 B 319 B
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 315 B 315 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.98 kB 7.98 kB ✅ -1 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 125 kB 125 kB
page.js gzip 268 kB 267 kB
Total 393 kB 392 kB ✅ -330 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 618 B 615 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 43.5 kB 43.7 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.1 kB 45.3 kB ⚠️ +209 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 715 B 718 B
Total 715 B 718 B ⚠️ +3 B
Build Cache
Canary PR Change
0.pack gzip 4.27 MB 4.26 MB 🟢 6.57 kB (0%)
index.pack gzip 109 kB 108 kB 🟢 1.18 kB (-1%)
index.pack.old gzip 108 kB 108 kB
Total 4.49 MB 4.48 MB ✅ -7.7 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 332 kB 332 kB
app-page-exp..prod.js gzip 180 kB 180 kB
app-page-tur...dev.js gzip 332 kB 332 kB
app-page-tur..prod.js gzip 180 kB 180 kB
app-page-tur...dev.js gzip 328 kB 328 kB
app-page-tur..prod.js gzip 178 kB 178 kB
app-page.run...dev.js gzip 329 kB 329 kB
app-page.run..prod.js gzip 178 kB 178 kB
app-route-ex...dev.js gzip 76 kB 76 kB
app-route-ex..prod.js gzip 51.7 kB 51.7 kB
app-route-tu...dev.js gzip 76 kB 76 kB
app-route-tu..prod.js gzip 51.7 kB 51.7 kB
app-route-tu...dev.js gzip 75.6 kB 75.6 kB
app-route-tu..prod.js gzip 51.5 kB 51.5 kB
app-route.ru...dev.js gzip 75.5 kB 75.5 kB
app-route.ru..prod.js gzip 51.4 kB 51.4 kB
dist_client_...dev.js gzip 324 B 324 B
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 318 B 318 B
dist_client_...dev.js gzip 317 B 317 B
pages-api-tu...dev.js gzip 43.3 kB 43.3 kB
pages-api-tu..prod.js gzip 33 kB 33 kB
pages-api.ru...dev.js gzip 43.3 kB 43.3 kB
pages-api.ru..prod.js gzip 33 kB 33 kB
pages-turbo....dev.js gzip 52.7 kB 52.7 kB
pages-turbo...prod.js gzip 38.6 kB 38.6 kB
pages.runtim...dev.js gzip 52.7 kB 52.7 kB
pages.runtim..prod.js gzip 38.6 kB 38.6 kB
server.runti..prod.js gzip 62.4 kB 62.4 kB
Total 2.95 MB 2.95 MB ⚠️ +2 B
📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/14f1da3a880b624b61f61ca3cf6edf93039395f5/next

Copy link
Member

@bgw bgw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding the lockfile: IMO, we should either specify the exact LTS version range in Cargo.toml (https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#tilde-requirements) or we should specify the latest version (1.50.0) in Cargo.toml.

My preference is for the LTS version, but either is fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

created-by: Turbopack team PRs by the Turbopack team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants