Skip to content

Commit 666ce7b

Browse files
sokrajridgewell
andauthored
Chunking Refactor Step 1 (vercel#56467)
### What? This change moves a few methods around. Module::as_chunk is moved to ChunkItem::as_chunk as temporary intermediate state. EcmascriptPlaceable::as_chunk_item is moved to ChunkableModule::as_chunk_item. This generalizes the concept of converting a Module into a ChunkItem ### Why? This is the first step of refactoring the chunking. In the end we want to avoid creating chunks from modules directly, but enforce everything going through the ChunkingContext to be chunked. This allows us to replace the existing chunking algorithm with a much more efficient one that avoid duplication between chunks in first place and doesn't require a post-chunking optimization. ### How? see vercel/turborepo#6104 Closes WEB-1715 Co-authored-by: Justin Ridgewell <112982+jridgewell@users.noreply.github.com>
1 parent 11c1d07 commit 666ce7b

File tree

17 files changed

+183
-169
lines changed

17 files changed

+183
-169
lines changed

Cargo.lock

Lines changed: 33 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ swc_core = { version = "0.83.28", features = [
4040
testing = { version = "0.34.1" }
4141

4242
# Turbo crates
43-
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231002.1" }
43+
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231005.2" }
4444
# [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros..
45-
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231002.1" }
45+
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231005.2" }
4646
# [TODO]: need to refactor embed_directory! macro usage in next-core
47-
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231002.1" }
47+
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231005.2" }
4848

4949
# General Deps
5050

packages/next-swc/crates/next-api/src/app.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ use turbopack_binding::{
3939
turbopack::{
4040
core::{
4141
asset::{Asset, AssetContent},
42-
chunk::{ChunkableModule, ChunkingContext, EvaluatableAssets},
42+
chunk::{ChunkableModuleExt, ChunkingContext, EvaluatableAssets},
4343
file_source::FileSource,
4444
output::{OutputAsset, OutputAssets},
4545
virtual_output::VirtualOutputAsset,

packages/next-swc/crates/next-api/src/middleware.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use turbopack_binding::{
1313
turbopack::{
1414
core::{
1515
asset::AssetContent,
16-
chunk::{ChunkableModule, ChunkingContext},
16+
chunk::{ChunkableModuleExt, ChunkingContext},
1717
context::AssetContext,
1818
module::Module,
1919
output::{OutputAsset, OutputAssets},

packages/next-swc/crates/next-api/src/pages.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ use turbopack_binding::{
3737
build::BuildChunkingContext,
3838
core::{
3939
asset::AssetContent,
40-
chunk::{ChunkableModule, ChunkingContext, EvaluatableAssets},
40+
chunk::{ChunkableModuleExt, ChunkingContext, EvaluatableAssets},
4141
context::AssetContext,
4242
file_source::FileSource,
4343
issue::{IssueSeverity, OptionIssueSource},

packages/next-swc/crates/next-api/src/server_actions.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,18 @@ use turbopack_binding::{
1616
turbo::tasks_fs::{rope::RopeBuilder, File, FileSystemPath},
1717
turbopack::{
1818
core::{
19-
asset::AssetContent, chunk::EvaluatableAsset, context::AssetContext, module::Module,
20-
output::OutputAsset, reference::primary_referenced_modules,
21-
reference_type::ReferenceType, virtual_output::VirtualOutputAsset,
19+
asset::AssetContent,
20+
chunk::{ChunkItemExt, ChunkableModule, EvaluatableAsset},
21+
context::AssetContext,
22+
module::Module,
23+
output::OutputAsset,
24+
reference::primary_referenced_modules,
25+
reference_type::ReferenceType,
26+
virtual_output::VirtualOutputAsset,
2227
virtual_source::VirtualSource,
2328
},
2429
ecmascript::{
25-
chunk::{EcmascriptChunkItemExt, EcmascriptChunkPlaceable, EcmascriptChunkingContext},
30+
chunk::{EcmascriptChunkPlaceable, EcmascriptChunkingContext},
2631
parse::ParseResult,
2732
EcmascriptModuleAsset,
2833
},
@@ -72,7 +77,10 @@ pub(crate) async fn create_server_actions_manifest(
7277
bail!("loader module must be evaluatable");
7378
};
7479

75-
let loader_id = loader.as_chunk_item(chunking_context).id().to_string();
80+
let loader_id = loader
81+
.as_chunk_item(Vc::upcast(chunking_context))
82+
.id()
83+
.to_string();
7684
let manifest =
7785
build_manifest(node_root, pathname, page_name, runtime, actions, loader_id).await?;
7886
Ok((Some(evaluable), manifest))

packages/next-swc/crates/next-build/src/next_pages/page_entries.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use turbopack_binding::{
2727
turbopack::{
2828
build::BuildChunkingContext,
2929
core::{
30-
chunk::{ChunkableModule, ChunkingContext, EvaluatableAssets},
30+
chunk::{ChunkableModuleExt, ChunkingContext, EvaluatableAssets},
3131
compile_time_info::CompileTimeInfo,
3232
context::AssetContext,
3333
file_source::FileSource,

packages/next-swc/crates/next-core/src/next_app/app_client_references_chunks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use turbo_tasks::{debug::ValueDebugFormat, trace::TraceRawVcs, TryJoinIterExt, V
55
use turbopack_binding::turbopack::{
66
build::BuildChunkingContext,
77
core::{
8-
chunk::{ChunkableModule, ChunkingContext},
8+
chunk::{ChunkableModuleExt, ChunkingContext},
99
output::OutputAssets,
1010
},
1111
ecmascript::chunk::EcmascriptChunkingContext,

0 commit comments

Comments
 (0)