Developer
Tobias Koppers
tobias.koppers@googlemail.com
Performance
YoY:+467%Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits from this developer.
| Hash | Message | Date | Files |
|---|
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.
| Effort |
|---|
| d84e3bb5 | This commit introduces a **performance optimization** within the **`crates/next-napi-bindings`** module by **refactoring** several `#[napi(object)]` structs. It replaces `String` fields with `RcStr` in types such as `NapiIssue`, `NapiRoute`, and `NapiAssetPath`, and updates their `From` implementations to use `RcStr` directly. This change eliminates unnecessary heap allocations and `.to_string()` conversions at the NAPI boundary, leveraging `RcStr`'s reference-counting for more efficient string handling. The **JavaScript API surface remains unchanged**, ensuring improved efficiency without altering external interfaces. | Mar 28 | 3 | maint |
| 63f48524 | This commit addresses **test flakiness** in the **end-to-end interoperability tests** for **App Router and Pages Router navigation**. It **increases the `waitForElementByCss` timeout** from ~10 seconds to 30 seconds for assertions following cross-router navigations in `test/e2e/app-dir/interoperability-with-pages/navigation.test.ts`. This **test maintenance** change prevents intermittent failures in CI, which occurred because on-demand compilation of destination pages in dev mode could exceed the default timeout during full-page reloads between the two router types. The fix improves **CI stability** without altering any framework behavior. | Mar 26 | 1 | maint |
| ad65b1bd | This commit **increases the `waitForElementByCss` timeout** from 10s to 30s within the **e2e test suite**, specifically for the **app-basepath hard navigation test** that transitions from a Pages Router page to an App Router page. This **test maintenance** change addresses **flaky failures** in CI, which occurred because on-demand compilation of the App Router destination page in dev mode could exceed the default timeout. By extending the timeout, the test now reliably waits for the page to render, ensuring **test stability** and preventing spurious failures without impacting any runtime code. | Mar 26 | 1 | maint |
| f7d48705 | This commit **fixes flaky e2e tests** for the **Typed Routes** feature within the `app-dir` by addressing intermittent timeouts during route type generation. The dev server's "ready" log was appearing before `routes.d.ts` was fully written, causing tests to fail on loaded CI runners. To resolve this, the `retry()` timeout in `test/e2e/app-dir/typed-routes/typed-routes.test.ts` has been **increased to 30000ms**, and a **retry guard** was added to ensure `routes.d.ts` exists before `tsc` runs. This **bug fix** significantly improves the **reliability of Typed Routes tests**, preventing false negatives in CI. | Mar 26 | 1 | maint |
| 0090db22 | This commit introduces a **new hashed cell mode** in `turbo-tasks` to enable **hash-based change detection** for transient cell data, significantly improving performance by preventing spurious invalidations. It modifies the **`turbo-tasks` backend** to persist content hashes and updates invalidation logic to skip re-execution when evicted data's hash matches. The **`turbo-tasks-macros`** gain `serialization = "hash"` and `hash = "manual"` options, which are applied to critical types like **`turbo-tasks-fs::FileContent`** and **`turbopack-core::Code`** to leverage this optimization. This **new capability** enhances the efficiency of caching and re-execution within the build system, while also adding **concurrent asset emission and duplicate asset detection** to `next-core`. | Mar 26 | 20 | grow |
| 548fbca6 | This commit performs a significant **refactoring** of the core `turbo-tasks` API by **removing the problematic `Vc::resolve()` method** and migrating all ~37 callsites to `Vc::to_resolved()`. This change enhances **type safety** by ensuring that `Vc::to_resolved()` returns `Result<ResolvedVc<T>>`, which statically guarantees the resolved state, unlike the previous `Vc::resolve()` which could lead to "footgun" scenarios where the resolved property was lost. This impacts various **Turbopack** and **Next.js** modules, including `turbopack-core`, `turbopack-ecmascript`, `next-core`, and `next-api`, by enforcing a more robust and compile-time verifiable resolution mechanism for `Vc` instances. Callers now benefit from stronger type guarantees, improving the overall reliability of value resolution within the system. | Mar 26 | 37 | maint |
| 73e654f6 | This commit provides a **bug fix** for **Turbopack's module resolution**, specifically addressing an issue where `resolveExtensions` priority was ignored in the `read_matches` fast path. Previously, when both platform-specific (e.g., `Component.web.tsx`) and default (`Component.tsx`) module variants existed, the resolution logic would arbitrarily pick one due to a hardcoded priority value, often selecting the incorrect default. The fix correctly passes the extension's `index` from `resolveExtensions` to `read_matches` in `turbopack/crates/turbopack-core/src/resolve/pattern.rs`, ensuring that the intended priority order is respected. This change is crucial for correctly supporting **platform-specific module overrides**, which significantly improves compatibility for projects leveraging patterns like React Native Web or Expo Web. | Mar 26 | 11 | maint |
| 16935744 | This commit introduces a **debug assertion** in `StorageWriteGuard::track_modification` within the **Turbopack backend storage** (`turbo-tasks-backend`) to prevent transient `TaskId`s from being enqueued for persistence. This **bug fix** addresses a critical runtime panic that occurred during concurrent HMR updates, where transient task IDs could bypass caller-level checks and incorrectly enter the persistence queue. By enforcing this invariant at the storage boundary, it prevents a downstream `unreachable!` error during the persist cycle and resolves a **flaky HMR test** related to server component updates. The change improves the **robustness and data integrity** of the task persistence mechanism by asserting invariants earlier in the data flow. | Mar 26 | 1 | waste |
| df88058f | This commit implements a **bug fix** for **Turbopack's hash encoding** by switching from base40 to **base38**, removing the problematic **`~` and `.` characters** from the charset. This change directly addresses **403 Forbidden errors** encountered when applications are deployed behind security-hardened Nginx or WAF configurations that block these characters in filenames. The **`turbo-tasks-hash`** crate was refactored to use the new base38 alphabet, including renaming `base40.rs` to `base38.rs` and updating `HashAlgorithm` enum variants. Consequently, encoding calls in **`turbopack-core`**, **`turbopack-browser`**, and **`turbopack-static`** were updated to utilize the new `encode_base38` functions, ensuring generated asset filenames are compatible with common infrastructure security rules and improving deployment reliability. | Mar 25 | 545 | maint |
| 78f16256 | This commit **fixes a critical deadlock** within the **`turbo-tasks-backend`** that caused compilation hangs when the `print_cache_item_size` debug feature was active. The issue stemmed from a non-reentrant `RwLock` in `persist_snapshot` attempting to acquire a write lock on a `DashMap` shard already held by a read lock. To resolve this, the code now directly accesses `TaskStorage` data, avoiding the redundant lock acquisition, and **refactors** the cache instrumentation by extracting helper functions. Additionally, compressed size reporting is now an **opt-in Cargo feature** (`print_cache_item_size_with_compressed`), improving default performance and clarity of cache size metrics. This significantly enhances the stability and maintainability of the `turbo-tasks-backend`'s debugging capabilities. | Mar 25 | 2 | waste |
| 43f90177 | This commit introduces a **new CLI command**, `next internal post-build`, to perform **Turbopack persistent cache database compaction** as a separate step after `next build`. This **performance improvement** for the **Next.js build process** allows `next build` to complete faster by skipping compaction during shutdown (when `NEXT_USE_POST_BUILD=1`), deferring the potentially slow operation to a dedicated command. The new command, implemented in the **Turbopack backend**, performs a more thorough, full compaction, enhancing the efficiency and longevity of the **Turbopack cache** and offering greater flexibility for build pipelines. | Mar 24 | 24 | grow |
| 7984e4ab | This commit introduces **filesystem-backed persistent caching** to the standalone **`turbopack-cli`**, enabling significantly **faster incremental builds** for repeated `dev` and `build` commands. It adds `--persistent-caching` and `--cache-dir` CLI flags to control this new capability, allowing users to opt-in and specify the cache location. The implementation involves a new `build.rs` script to embed Git version information for robust cache keying, and modifies `src/dev/mod.rs` and `src/build/mod.rs` to conditionally initialize `TurboBackingStorage` based on user arguments. This **feature addition** aligns the `turbopack-cli`'s caching behavior with the existing `next-napi-bindings` integration. Consequently, users will experience **improved performance** by avoiding cold starts and full re-computations on subsequent runs. | Mar 20 | 7 | grow |
| 7d451fe0 | This commit **enhances observability** by adding a `modules` field to tracing spans related to module graph construction. It affects the `"module graph for endpoint"` span in `next-api/src/app.rs` and introduces a new `"whole app module graph"` span in `next-api/src/project.rs`, while also adding a `module_count()` method to `turbopack-core/src/module_graph/mod.rs`. This **new capability** provides crucial data for performance analysis, allowing developers to correlate **module graph size** with build and HMR performance. By surfacing the module count as a structured span field, it becomes queryable, making it easier to detect regressions or unexpected graph growth without manual log parsing. This directly aids in optimizing **Turbopack's performance** for Next.js applications. | Mar 20 | 3 | grow |
| 25646b92 | This commit **fixes a bug** in the **Turbopack `turbo-tasks` core** by removing an incorrect `debug_assert_not_in_top_level_task` from the `try_read_task_cell` function. The assertion erroneously prevented **strongly consistent cell reads** from executing within top-level tasks, despite these operations always returning up-to-date data. This **refinement of the consistency logic** resolves false positive panics, allowing valid use cases to proceed correctly. The change improves the robustness of the **Turbopack task execution model**, with an updated test case reflecting the corrected behavior. | Mar 20 | 2 | maint |
| 47230b12 | This commit **refactors Turbopack's tracing spans** by moving the `"compact database"` span from `turbo-persistence/src/db.rs` to `turbo-tasks-backend/src/backend/mod.rs`. It introduces a new root `"background snapshot"` span, making both `"compact database"` and `"persist"` its children, thereby **improving the logical grouping and consistency of tracing data** for background persistence jobs. This **tracing improvement** centralizes span policy decisions in the backend layer, detaching the compaction span from ambient contexts. The change provides a clearer, more accurate view of snapshot and compaction work in trace viewers, enhancing **Turbopack's observability** for background operations. | Mar 20 | 2 | maint |
| df886d4a | This commit **fixes a critical issue** preventing **`turbo-persistence`** from functioning on **WSL (Windows Subsystem for Linux)** by **removing the `MADV_UNMERGEABLE` mmap advice**. The WSL kernel does not support this specific advice, leading to failures when `turbo-persistence` attempted to apply it via the `advise_mmap_for_persistence` helper in `mmap_helper.rs`. This **maintenance** change also addresses redundancy, as `MADV_UNMERGEABLE` is the default memory page state on standard kernels, providing no benefit while actively breaking WSL users. The `MADV_DONTFORK` advice is correctly retained for its clear correctness benefits, ensuring `turbo-persistence` now operates reliably across all supported environments. | Mar 20 | 2 | – |
| 6a8a31a7 | This commit **fixes a layout segment optimization issue** in **Turbopack's app directory support** by ensuring server-side imports from the `app-page.ts` template are correctly placed in the `next-server-utility` layer. It introduces a new `SharedMultiple` chunk group variant in `turbopack-core` to support multiple shared entries without relying on `SharedMerged`, which previously broke optimization. Additionally, it **refactors** the `app_module_graphs` API for better clarity and removes an unnecessary transition from `fillMetadataSegment`. This **bug fix** and **refactoring** improves the robustness of **server-side import handling** and **layout segment processing** within Turbopack's app directory. | Mar 20 | 4 | waste |
| 046e0c4a | This commit **improves diagnostic reporting** within the **Turbopack CSS parser** by **demoting recoverable CSS parse warnings** to `Warning` severity. Specifically, it modifies `turbopack/crates/turbopack-css/src/process.rs` to **surface all previously ignored parser warnings** instead of silently dropping them. This **diagnostic improvement** and **refactoring** of the warning loop provides developers with more comprehensive feedback on CSS parsing issues. The change enhances the development experience by offering greater visibility into potential problems without causing build failures. | Mar 19 | 1 | maint |
| 0f089d5f | This commit delivers a crucial **bug fix** and **diagnostic improvement** within the **`turbo-persistence` crate**, specifically impacting the **`MetaFile` component**'s memory mapping. It resolves an `mmap` page alignment issue in `MetaFile::open_internal` by mapping the entire file and adjusting data access via a new `amqf_data_start` field, preventing silent failures or panics when header lengths are not page-aligned. Concurrently, it enhances error context across `meta_file.rs` and `mmap_helper.rs` by adding specific messages to `mmap` and file operations. This significantly improves the ability to diagnose production issues by providing actionable error messages for persistence failures. | Mar 19 | 2 | waste |
| bdb2f2ce | This commit introduces **`this.importModule()` support** to Turbopack's **webpack loader compatibility layer**, enabling webpack loaders to dynamically import and execute modules during the build process. This **new capability** allows complex loaders, like `@vanilla-extract/webpack-plugin`, to function correctly by leveraging Turbopack's full module resolution, bundling, and in-memory evaluation for imported modules. The implementation involves a sophisticated IPC mechanism between the Node.js loader runner and the Rust compiler, which resolves module requests using Turbopack's asset context and generates Node.js bundles for evaluation. This significantly enhances **webpack loader compatibility** by ensuring that modules imported via `this.importModule()` benefit from Turbopack's advanced features like aliases, custom loader rules, and TypeScript support. | Mar 19 | 34 | maint |
This commit introduces a **performance optimization** within the **`crates/next-napi-bindings`** module by **refactoring** several `#[napi(object)]` structs. It replaces `String` fields with `RcStr` in types such as `NapiIssue`, `NapiRoute`, and `NapiAssetPath`, and updates their `From` implementations to use `RcStr` directly. This change eliminates unnecessary heap allocations and `.to_string()` conversions at the NAPI boundary, leveraging `RcStr`'s reference-counting for more efficient string handling. The **JavaScript API surface remains unchanged**, ensuring improved efficiency without altering external interfaces.
This commit addresses **test flakiness** in the **end-to-end interoperability tests** for **App Router and Pages Router navigation**. It **increases the `waitForElementByCss` timeout** from ~10 seconds to 30 seconds for assertions following cross-router navigations in `test/e2e/app-dir/interoperability-with-pages/navigation.test.ts`. This **test maintenance** change prevents intermittent failures in CI, which occurred because on-demand compilation of destination pages in dev mode could exceed the default timeout during full-page reloads between the two router types. The fix improves **CI stability** without altering any framework behavior.
This commit **increases the `waitForElementByCss` timeout** from 10s to 30s within the **e2e test suite**, specifically for the **app-basepath hard navigation test** that transitions from a Pages Router page to an App Router page. This **test maintenance** change addresses **flaky failures** in CI, which occurred because on-demand compilation of the App Router destination page in dev mode could exceed the default timeout. By extending the timeout, the test now reliably waits for the page to render, ensuring **test stability** and preventing spurious failures without impacting any runtime code.
This commit **fixes flaky e2e tests** for the **Typed Routes** feature within the `app-dir` by addressing intermittent timeouts during route type generation. The dev server's "ready" log was appearing before `routes.d.ts` was fully written, causing tests to fail on loaded CI runners. To resolve this, the `retry()` timeout in `test/e2e/app-dir/typed-routes/typed-routes.test.ts` has been **increased to 30000ms**, and a **retry guard** was added to ensure `routes.d.ts` exists before `tsc` runs. This **bug fix** significantly improves the **reliability of Typed Routes tests**, preventing false negatives in CI.
This commit introduces a **new hashed cell mode** in `turbo-tasks` to enable **hash-based change detection** for transient cell data, significantly improving performance by preventing spurious invalidations. It modifies the **`turbo-tasks` backend** to persist content hashes and updates invalidation logic to skip re-execution when evicted data's hash matches. The **`turbo-tasks-macros`** gain `serialization = "hash"` and `hash = "manual"` options, which are applied to critical types like **`turbo-tasks-fs::FileContent`** and **`turbopack-core::Code`** to leverage this optimization. This **new capability** enhances the efficiency of caching and re-execution within the build system, while also adding **concurrent asset emission and duplicate asset detection** to `next-core`.
This commit performs a significant **refactoring** of the core `turbo-tasks` API by **removing the problematic `Vc::resolve()` method** and migrating all ~37 callsites to `Vc::to_resolved()`. This change enhances **type safety** by ensuring that `Vc::to_resolved()` returns `Result<ResolvedVc<T>>`, which statically guarantees the resolved state, unlike the previous `Vc::resolve()` which could lead to "footgun" scenarios where the resolved property was lost. This impacts various **Turbopack** and **Next.js** modules, including `turbopack-core`, `turbopack-ecmascript`, `next-core`, and `next-api`, by enforcing a more robust and compile-time verifiable resolution mechanism for `Vc` instances. Callers now benefit from stronger type guarantees, improving the overall reliability of value resolution within the system.
This commit provides a **bug fix** for **Turbopack's module resolution**, specifically addressing an issue where `resolveExtensions` priority was ignored in the `read_matches` fast path. Previously, when both platform-specific (e.g., `Component.web.tsx`) and default (`Component.tsx`) module variants existed, the resolution logic would arbitrarily pick one due to a hardcoded priority value, often selecting the incorrect default. The fix correctly passes the extension's `index` from `resolveExtensions` to `read_matches` in `turbopack/crates/turbopack-core/src/resolve/pattern.rs`, ensuring that the intended priority order is respected. This change is crucial for correctly supporting **platform-specific module overrides**, which significantly improves compatibility for projects leveraging patterns like React Native Web or Expo Web.
This commit introduces a **debug assertion** in `StorageWriteGuard::track_modification` within the **Turbopack backend storage** (`turbo-tasks-backend`) to prevent transient `TaskId`s from being enqueued for persistence. This **bug fix** addresses a critical runtime panic that occurred during concurrent HMR updates, where transient task IDs could bypass caller-level checks and incorrectly enter the persistence queue. By enforcing this invariant at the storage boundary, it prevents a downstream `unreachable!` error during the persist cycle and resolves a **flaky HMR test** related to server component updates. The change improves the **robustness and data integrity** of the task persistence mechanism by asserting invariants earlier in the data flow.
This commit implements a **bug fix** for **Turbopack's hash encoding** by switching from base40 to **base38**, removing the problematic **`~` and `.` characters** from the charset. This change directly addresses **403 Forbidden errors** encountered when applications are deployed behind security-hardened Nginx or WAF configurations that block these characters in filenames. The **`turbo-tasks-hash`** crate was refactored to use the new base38 alphabet, including renaming `base40.rs` to `base38.rs` and updating `HashAlgorithm` enum variants. Consequently, encoding calls in **`turbopack-core`**, **`turbopack-browser`**, and **`turbopack-static`** were updated to utilize the new `encode_base38` functions, ensuring generated asset filenames are compatible with common infrastructure security rules and improving deployment reliability.
This commit **fixes a critical deadlock** within the **`turbo-tasks-backend`** that caused compilation hangs when the `print_cache_item_size` debug feature was active. The issue stemmed from a non-reentrant `RwLock` in `persist_snapshot` attempting to acquire a write lock on a `DashMap` shard already held by a read lock. To resolve this, the code now directly accesses `TaskStorage` data, avoiding the redundant lock acquisition, and **refactors** the cache instrumentation by extracting helper functions. Additionally, compressed size reporting is now an **opt-in Cargo feature** (`print_cache_item_size_with_compressed`), improving default performance and clarity of cache size metrics. This significantly enhances the stability and maintainability of the `turbo-tasks-backend`'s debugging capabilities.
This commit introduces a **new CLI command**, `next internal post-build`, to perform **Turbopack persistent cache database compaction** as a separate step after `next build`. This **performance improvement** for the **Next.js build process** allows `next build` to complete faster by skipping compaction during shutdown (when `NEXT_USE_POST_BUILD=1`), deferring the potentially slow operation to a dedicated command. The new command, implemented in the **Turbopack backend**, performs a more thorough, full compaction, enhancing the efficiency and longevity of the **Turbopack cache** and offering greater flexibility for build pipelines.
This commit introduces **filesystem-backed persistent caching** to the standalone **`turbopack-cli`**, enabling significantly **faster incremental builds** for repeated `dev` and `build` commands. It adds `--persistent-caching` and `--cache-dir` CLI flags to control this new capability, allowing users to opt-in and specify the cache location. The implementation involves a new `build.rs` script to embed Git version information for robust cache keying, and modifies `src/dev/mod.rs` and `src/build/mod.rs` to conditionally initialize `TurboBackingStorage` based on user arguments. This **feature addition** aligns the `turbopack-cli`'s caching behavior with the existing `next-napi-bindings` integration. Consequently, users will experience **improved performance** by avoiding cold starts and full re-computations on subsequent runs.
This commit **enhances observability** by adding a `modules` field to tracing spans related to module graph construction. It affects the `"module graph for endpoint"` span in `next-api/src/app.rs` and introduces a new `"whole app module graph"` span in `next-api/src/project.rs`, while also adding a `module_count()` method to `turbopack-core/src/module_graph/mod.rs`. This **new capability** provides crucial data for performance analysis, allowing developers to correlate **module graph size** with build and HMR performance. By surfacing the module count as a structured span field, it becomes queryable, making it easier to detect regressions or unexpected graph growth without manual log parsing. This directly aids in optimizing **Turbopack's performance** for Next.js applications.
This commit **fixes a bug** in the **Turbopack `turbo-tasks` core** by removing an incorrect `debug_assert_not_in_top_level_task` from the `try_read_task_cell` function. The assertion erroneously prevented **strongly consistent cell reads** from executing within top-level tasks, despite these operations always returning up-to-date data. This **refinement of the consistency logic** resolves false positive panics, allowing valid use cases to proceed correctly. The change improves the robustness of the **Turbopack task execution model**, with an updated test case reflecting the corrected behavior.
This commit **refactors Turbopack's tracing spans** by moving the `"compact database"` span from `turbo-persistence/src/db.rs` to `turbo-tasks-backend/src/backend/mod.rs`. It introduces a new root `"background snapshot"` span, making both `"compact database"` and `"persist"` its children, thereby **improving the logical grouping and consistency of tracing data** for background persistence jobs. This **tracing improvement** centralizes span policy decisions in the backend layer, detaching the compaction span from ambient contexts. The change provides a clearer, more accurate view of snapshot and compaction work in trace viewers, enhancing **Turbopack's observability** for background operations.
This commit **fixes a critical issue** preventing **`turbo-persistence`** from functioning on **WSL (Windows Subsystem for Linux)** by **removing the `MADV_UNMERGEABLE` mmap advice**. The WSL kernel does not support this specific advice, leading to failures when `turbo-persistence` attempted to apply it via the `advise_mmap_for_persistence` helper in `mmap_helper.rs`. This **maintenance** change also addresses redundancy, as `MADV_UNMERGEABLE` is the default memory page state on standard kernels, providing no benefit while actively breaking WSL users. The `MADV_DONTFORK` advice is correctly retained for its clear correctness benefits, ensuring `turbo-persistence` now operates reliably across all supported environments.
This commit **fixes a layout segment optimization issue** in **Turbopack's app directory support** by ensuring server-side imports from the `app-page.ts` template are correctly placed in the `next-server-utility` layer. It introduces a new `SharedMultiple` chunk group variant in `turbopack-core` to support multiple shared entries without relying on `SharedMerged`, which previously broke optimization. Additionally, it **refactors** the `app_module_graphs` API for better clarity and removes an unnecessary transition from `fillMetadataSegment`. This **bug fix** and **refactoring** improves the robustness of **server-side import handling** and **layout segment processing** within Turbopack's app directory.
This commit **improves diagnostic reporting** within the **Turbopack CSS parser** by **demoting recoverable CSS parse warnings** to `Warning` severity. Specifically, it modifies `turbopack/crates/turbopack-css/src/process.rs` to **surface all previously ignored parser warnings** instead of silently dropping them. This **diagnostic improvement** and **refactoring** of the warning loop provides developers with more comprehensive feedback on CSS parsing issues. The change enhances the development experience by offering greater visibility into potential problems without causing build failures.
This commit delivers a crucial **bug fix** and **diagnostic improvement** within the **`turbo-persistence` crate**, specifically impacting the **`MetaFile` component**'s memory mapping. It resolves an `mmap` page alignment issue in `MetaFile::open_internal` by mapping the entire file and adjusting data access via a new `amqf_data_start` field, preventing silent failures or panics when header lengths are not page-aligned. Concurrently, it enhances error context across `meta_file.rs` and `mmap_helper.rs` by adding specific messages to `mmap` and file operations. This significantly improves the ability to diagnose production issues by providing actionable error messages for persistence failures.
This commit introduces **`this.importModule()` support** to Turbopack's **webpack loader compatibility layer**, enabling webpack loaders to dynamically import and execute modules during the build process. This **new capability** allows complex loaders, like `@vanilla-extract/webpack-plugin`, to function correctly by leveraging Turbopack's full module resolution, bundling, and in-memory evaluation for imported modules. The implementation involves a sophisticated IPC mechanism between the Node.js loader runner and the Rust compiler, which resolves module requests using Turbopack's asset context and generates Node.js bundles for evaluation. This significantly enhances **webpack loader compatibility** by ensuring that modules imported via `this.importModule()` benefit from Turbopack's advanced features like aliases, custom loader rules, and TypeScript support.