-
Notifications
You must be signed in to change notification settings - Fork 27.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
perf(turbo-tasks): Optionally schedule ResolveNative/ResolveTrait tasks as local tasks #69126
base: bgw/return-values-should-be-non-local
Are you sure you want to change the base?
perf(turbo-tasks): Optionally schedule ResolveNative/ResolveTrait tasks as local tasks #69126
Conversation
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
buildDuration | 19.1s | 17.4s | N/A |
buildDurationCached | 16.6s | 14.3s | N/A |
nodeModulesSize | 417 MB | 417 MB | N/A |
nextStartRea..uration (ms) | 464ms | 481ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
5306-HASH.js gzip | 53.4 kB | 53.4 kB | N/A |
8276.HASH.js gzip | 169 B | 168 B | N/A |
8377-HASH.js gzip | 5.44 kB | 5.44 kB | N/A |
bccd1874-HASH.js gzip | 52.9 kB | 52.9 kB | N/A |
framework-HASH.js gzip | 57.5 kB | 57.5 kB | N/A |
main-app-HASH.js gzip | 240 B | 243 B | N/A |
main-HASH.js gzip | 34.2 kB | 34.2 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 39.4 kB | 39.4 kB | ✓ |
Client Pages
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 193 B | ✓ |
_error-HASH.js gzip | 193 B | 193 B | ✓ |
amp-HASH.js gzip | 512 B | 510 B | N/A |
css-HASH.js gzip | 343 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | ✓ |
edge-ssr-HASH.js gzip | 265 B | 265 B | ✓ |
head-HASH.js gzip | 363 B | 362 B | N/A |
hooks-HASH.js gzip | 393 B | 392 B | N/A |
image-HASH.js gzip | 4.57 kB | 4.57 kB | N/A |
index-HASH.js gzip | 268 B | 268 B | ✓ |
link-HASH.js gzip | 2.35 kB | 2.34 kB | N/A |
routerDirect..HASH.js gzip | 328 B | 328 B | ✓ |
script-HASH.js gzip | 397 B | 397 B | ✓ |
withRouter-HASH.js gzip | 323 B | 326 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 3.59 kB | 3.59 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
_buildManifest.js gzip | 749 B | 747 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
index.html gzip | 524 B | 523 B | N/A |
link.html gzip | 539 B | 538 B | N/A |
withRouter.html gzip | 520 B | 520 B | ✓ |
Overall change | 520 B | 520 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
edge-ssr.js gzip | 129 kB | 129 kB | N/A |
page.js gzip | 207 kB | 207 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 670 B | 669 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 31.3 kB | 31.3 kB | N/A |
edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
Overall change | 844 B | 844 B | ✓ |
Next Runtimes
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
274-experime...dev.js gzip | 322 B | 322 B | ✓ |
274.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 369 kB | 369 kB | ✓ |
app-page-exp..prod.js gzip | 130 kB | 130 kB | ✓ |
app-page-tur..prod.js gzip | 142 kB | 142 kB | ✓ |
app-page-tur..prod.js gzip | 138 kB | 138 kB | ✓ |
app-page.run...dev.js gzip | 357 kB | 357 kB | ✓ |
app-page.run..prod.js gzip | 126 kB | 126 kB | ✓ |
app-route-ex...dev.js gzip | 37.6 kB | 37.6 kB | ✓ |
app-route-ex..prod.js gzip | 25.6 kB | 25.6 kB | ✓ |
app-route-tu..prod.js gzip | 25.6 kB | 25.6 kB | ✓ |
app-route-tu..prod.js gzip | 25.4 kB | 25.4 kB | ✓ |
app-route.ru...dev.js gzip | 39.2 kB | 39.2 kB | ✓ |
app-route.ru..prod.js gzip | 25.4 kB | 25.4 kB | ✓ |
pages-api-tu..prod.js gzip | 9.69 kB | 9.69 kB | ✓ |
pages-api.ru...dev.js gzip | 11.6 kB | 11.6 kB | ✓ |
pages-api.ru..prod.js gzip | 9.68 kB | 9.68 kB | ✓ |
pages-turbo...prod.js gzip | 21.7 kB | 21.7 kB | ✓ |
pages.runtim...dev.js gzip | 27.5 kB | 27.5 kB | ✓ |
pages.runtim..prod.js gzip | 21.7 kB | 21.7 kB | ✓ |
server.runti..prod.js gzip | 916 kB | 916 kB | ✓ |
Overall change | 2.46 MB | 2.46 MB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js bgw/schedule-local-task | Change | |
---|---|---|---|
0.pack gzip | 2.09 MB | 2.09 MB | N/A |
index.pack gzip | 74.3 kB | 75.2 kB | |
Overall change | 74.3 kB | 75.2 kB |
Diff details
Diff for main-HASH.js
Diff too large to display
Failing test suitesCommit: 380be4b
Expand output● next.rs api › should allow to write root page to disk
● next.rs api › should allow to write root page to disk
● next.rs api › should allow to write pages edge api to disk
● next.rs api › should allow to write pages Node.js api to disk
● next.rs api › should allow to write app edge page to disk
● next.rs api › should allow to write app edge page to disk
● next.rs api › should allow to write app Node.js page to disk
● next.rs api › should allow to write app Node.js page to disk
● next.rs api › should allow to write pages edge page to disk
● next.rs api › should allow to write pages edge page to disk
● next.rs api › should allow to write pages Node.js page to disk
● next.rs api › should allow to write pages Node.js page to disk
● next.rs api › should allow to write app edge route to disk
● next.rs api › should allow to write app Node.js route to disk
Read more about building and testing Next.js in contributing.md.
Expand output● clientTraceMetadata › app router › should inject propagation data for a dynamically server-side-rendered page
● clientTraceMetadata › app router › hard loading a dynamic page twice should yield different dynamic trace data
● clientTraceMetadata › app router › should only insert the client trace metadata once
● clientTraceMetadata › app router › next dev only › should inject propagation data for a statically server-side-rendered page
● clientTraceMetadata › app router › next dev only › soft navigating to a dynamic page should not transform previous propagation data
● clientTraceMetadata › app router › next dev only › soft navigating to a static page should not transform previous propagation data
● clientTraceMetadata › pages router › should inject propagation data for a dynamically server-side-rendered page
● clientTraceMetadata › pages router › hard loading a dynamic page twice should yield different dynamic trace data
● clientTraceMetadata › pages router › next dev only › should inject propagation data for a statically server-side-rendered page
● clientTraceMetadata › pages router › next dev only › soft navigating to a dynamic page should not transform previous propagation data
● clientTraceMetadata › pages router › next dev only › soft navigating to a static page should not transform previous propagation data
Read more about building and testing Next.js in contributing.md. |
21b123a
to
06c1a4f
Compare
bf4e236
to
5f7cee9
Compare
06c1a4f
to
a718d9e
Compare
5f7cee9
to
8237476
Compare
a718d9e
to
bcd07cf
Compare
8237476
to
694aa77
Compare
a00965d
to
7ce8ac4
Compare
694aa77
to
07ce967
Compare
9e272d6
to
52ea711
Compare
07ce967
to
f292e7b
Compare
1a10536
to
59ff3b4
Compare
0980b44
to
376fb22
Compare
59ff3b4
to
1713534
Compare
376fb22
to
2c9c7b1
Compare
1713534
to
90c2d5c
Compare
2c9c7b1
to
6a3eecc
Compare
90c2d5c
to
fe63d1b
Compare
6a3eecc
to
d454a92
Compare
fe63d1b
to
0e91d34
Compare
d454a92
to
48ca24f
Compare
0e91d34
to
fb08b7c
Compare
48ca24f
to
a17ac39
Compare
fb08b7c
to
c7279e4
Compare
a17ac39
to
2d07a58
Compare
c7279e4
to
b2e9360
Compare
2d07a58
to
2f75838
Compare
b2e9360
to
9c6d5d4
Compare
2f75838
to
ec4d192
Compare
9c6d5d4
to
78f1579
Compare
ec4d192
to
65d8235
Compare
78f1579
to
073dfc1
Compare
65d8235
to
55de0bb
Compare
073dfc1
to
6ed1846
Compare
55de0bb
to
237f438
Compare
6ed1846
to
40117d9
Compare
237f438
to
380be4b
Compare
When calling a turbo tasks function with unresolved arguments, we create a wrapper
CachedTaskType::ResolveNative
orResolveTrait
task.These are quite frequently created, and their behavior is constrained and well-defined, so we should turn them into local tasks that aren't cached in the backend.
This logic is gated behind
--features turbo-tasks/local_resolution
, as it has some known issues.Known Issues
A
RawVc::LocalOutput
can currently only be resolved within it's parent task.The long-term plan is for everything to use
ResolvedVc
, so that this assumption is safe.The short-term plan is to store local outputs more globally. Design here: https://www.notion.so/vercel/RawVc-LocalOutput-aede5f463f594ca58396eb3fdaffd865?pvs=4#02af94e3b9b64a3690f3e467abc0a47e
Test Plan