Skip to content

feat(pacquet/config): port preferWorkspacePackages setting#12032

Merged
zkochan merged 1 commit into
mainfrom
prefer-worksp
May 28, 2026
Merged

feat(pacquet/config): port preferWorkspacePackages setting#12032
zkochan merged 1 commit into
mainfrom
prefer-worksp

Conversation

@zkochan

@zkochan zkochan commented May 28, 2026

Copy link
Copy Markdown
Member

Summary

Port the preferWorkspacePackages setting from pnpm. When enabled, a workspace package wins over a newer registry pick during resolution. Default false, matching pnpm.

  • Config plumbing: Config.prefer_workspace_packages, WorkspaceSettings.prefer_workspace_packages, PNPM_CONFIG_PREFER_WORKSPACE_PACKAGES env overlay, and the clear_workspace_only_fields / apply_to wiring.
  • Install pipeline: thread config.prefer_workspace_packages into the ResolveOptions built by install_with_fresh_lockfile. The npm resolver's try_workspace_shadow already consumes this flag, mirroring pnpm's registry-pick + workspace shadow.
  • Optimistic-repeat-install drift: WorkspaceStateSettings.prefer_workspace_packages is now compared by settings_match and written by current_settings. A switch to the setting between installs invalidates the cached-modules fast path.

Closes one of the items on #12009.

Test plan

Ported / extended from upstream pnpm:

  • Extended parses_common_settings_from_yaml to assert preferWorkspacePackages: true round-trips from pnpm-workspace.yaml.
  • returns_skipped_when_prefer_workspace_packages_drift in the optimistic-repeat-install drift suite — mirrors pnpm's per-key checkDepsStatus settings walk and matches the dedupe_peers drift test added in feat(pacquet/deps-resolver): port dedupePeers setting #12022.
  • current_settings test asserts prefer_workspace_packages: Some(false) is now written to WorkspaceStateSettings.
  • returns_up_to_date_when_state_carries_unported_pnpm_settings no longer overrides prefer_workspace_packages — it is now a ported setting and the drift gate must honor it.

Resolver behavior was already covered by prefer_workspace_packages_keeps_workspace_over_newer_registry (ports the upstream npm-resolver test); this PR makes the flag actually reachable from end-user configuration.

Local checks:

  • cargo check --workspace --all-targets, cargo clippy --locked --workspace --all-targets -- --deny warnings, cargo fmt --check, taplo format --check, typos pacquet/ all clean.
  • pacquet-config (230 tests), pacquet-package-manager (341 tests), and the relevant pacquet-resolving-npm-resolver test pass locally.

Written by an agent (Claude Code, claude-opus-4-7).

Summary by CodeRabbit

  • New Features
    • Added support for the prefer_workspace_packages configuration option, allowing users to control whether workspace packages are preferred over registry packages during dependency resolution. This setting can be configured via environment variables, workspace configuration files, or global settings.

Review Change Stack

Port the `preferWorkspacePackages` setting from pnpm. When enabled,
a workspace package wins over a newer registry pick during resolution.
Default `false`, matching pnpm.

- Config plumbing: `Config.prefer_workspace_packages`,
  `WorkspaceSettings.prefer_workspace_packages`,
  `PNPM_CONFIG_PREFER_WORKSPACE_PACKAGES` env overlay, and the
  `clear_workspace_only_fields` / `apply_to` wiring.
- Install pipeline: thread `config.prefer_workspace_packages` into
  the `ResolveOptions` built in `install_with_fresh_lockfile`. The
  npm resolver already consumes this flag in `try_workspace_shadow`.
- Optimistic-repeat-install drift: `WorkspaceStateSettings.prefer_workspace_packages`
  is now compared by `settings_match` and written by `current_settings`.
  A switch to the setting between installs invalidates the cached-modules
  fast path.

Closes one of the items on #12009.
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 778a94ea-83d8-4eb7-8691-24c412a09406

📥 Commits

Reviewing files that changed from the base of the PR and between 7ecaf3d and cecb052.

📒 Files selected for processing (9)
  • pacquet/crates/config/src/env_overlay.rs
  • pacquet/crates/config/src/lib.rs
  • pacquet/crates/config/src/workspace_yaml.rs
  • pacquet/crates/config/src/workspace_yaml/tests.rs
  • pacquet/crates/package-manager/src/install/tests.rs
  • pacquet/crates/package-manager/src/install_package_from_registry/tests.rs
  • pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs
📜 Recent review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Code Coverage
  • GitHub Check: Lint and Test (windows-latest)
  • GitHub Check: Lint and Test (macos-latest)
🧰 Additional context used
📓 Path-based instructions (1)
pacquet/**/*.rs

📄 CodeRabbit inference engine (pacquet/AGENTS.md)

pacquet/**/*.rs: When porting a function that fires pnpm:<channel> events through globalLogger, logger.debug(), or streamParser.write(), mirror the call site, payload, and ordering so the reporter parses pacquet's NDJSON the same way it parses pnpm's.
Declare a newtype wrapper for branded string types. Do not collapse the brand into a plain String or &str.
If upstream always validates before construction, validate in pacquet's wrapper too. The wrapper must construct only via TryFrom<String> and/or FromStr. Do not provide an infallible public constructor.
If upstream never validates, just brand for type-safety. Expose an infallible From<String> (and From<&str> when convenient).
If upstream occasionally constructs without validation, expose from_str_unchecked as an escape hatch alongside the validating constructor.
Match upstream serde behavior for branded types that cross JSON, YAML, or INI boundaries. Use #[serde(try_from = "String")] for deserialization and #[serde(into = "String")] for serialization.
Use #[derive(derive_more::From)] and #[derive(derive_more::Into)] for mechanical conversion impls. Fall back to manual impl only when conversion needs custom logic.
String-literal unions should become enums, not newtype wrappers. Model closed sets of valid string values as enums.
Template literal types should be treated as branded strings with validation discipline from rules 2-5.
Choose owned vs. borrowed parameters to minimize copies. Widen to the most encompassing type (&Path over &PathBuf, &str over &String) when it doesn't force extra copies.
Prefer Arc::clone(&x) / Rc::clone(&x) over x.clone() for reference-counted types, so the cost is visible at the call site.
Follow Rust API Guidelines for naming conventions.
Do not use star imports inside module bodies. Write use super::{Foo, bar} instead of use super::*;. Two forms stay allowed: external-crate preludes like use rayon::prelude::*; and root-of-module re-...

Files:

  • pacquet/crates/config/src/workspace_yaml/tests.rs
  • pacquet/crates/config/src/env_overlay.rs
  • pacquet/crates/package-manager/src/install_package_from_registry/tests.rs
  • pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs
  • pacquet/crates/package-manager/src/install/tests.rs
  • pacquet/crates/config/src/lib.rs
  • pacquet/crates/config/src/workspace_yaml.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install.rs
🧠 Learnings (3)
📚 Learning: 2026-05-20T19:40:55.051Z
Learnt from: zkochan
Repo: pnpm/pnpm PR: 11774
File: pacquet/crates/resolving-deps-resolver/src/resolve_peers.rs:0-0
Timestamp: 2026-05-20T19:40:55.051Z
Learning: In the pacquet Rust code, ensure the semver implementation uses the `node-semver` crate (not `nodejs-semver`). `node-semver`’s public API does not include a `satisfies_with_prerelease`-style method; prerelease-tolerant matching should be implemented inline by first calling `Range::satisfies`, and when it rejects a prerelease version, retry matching against a stripped `MAJOR.MINOR.PATCH` base of the prerelease version.

Applied to files:

  • pacquet/crates/config/src/workspace_yaml/tests.rs
  • pacquet/crates/config/src/env_overlay.rs
  • pacquet/crates/package-manager/src/install_package_from_registry/tests.rs
  • pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs
  • pacquet/crates/package-manager/src/install/tests.rs
  • pacquet/crates/config/src/lib.rs
  • pacquet/crates/config/src/workspace_yaml.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install.rs
📚 Learning: 2026-05-22T00:08:44.646Z
Learnt from: zkochan
Repo: pnpm/pnpm PR: 11837
File: pacquet/crates/resolving-npm-resolver/src/pick_package.rs:33-51
Timestamp: 2026-05-22T00:08:44.646Z
Learning: In the pnpm/pnpm repo’s pacquet Rust crates, do not flag Unicode ellipsis characters (U+2026, `…`) in Rust doc comments (`///` / `/** */`) as a lint violation. The pacquet crate’s `dylint.toml` only enables `perfectionist::derive_ordering`, and the Dylint `unicode-ellipsis` rule is not enabled for this project—so `…` in doc comments is an intentional, repo-consistent style.

Applied to files:

  • pacquet/crates/config/src/workspace_yaml/tests.rs
  • pacquet/crates/config/src/env_overlay.rs
  • pacquet/crates/package-manager/src/install_package_from_registry/tests.rs
  • pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs
  • pacquet/crates/package-manager/src/install/tests.rs
  • pacquet/crates/config/src/lib.rs
  • pacquet/crates/config/src/workspace_yaml.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install.rs
📚 Learning: 2026-05-20T23:07:58.444Z
Learnt from: zkochan
Repo: pnpm/pnpm PR: 11784
File: pacquet/crates/resolving-deps-resolver/src/hoist_peers.rs:120-133
Timestamp: 2026-05-20T23:07:58.444Z
Learning: When reviewing code in this pacquet Rust port, follow the upstream pnpm compatibility rule: only match pnpm’s behavior exactly. Do not propose review changes that intentionally deviate from pnpm’s documented/observed behavior, even if pnpm appears buggy. If you identify a real bug in pnpm behavior, the review should prioritize fixing it upstream in pnpm first, and avoid implementing a pnpm-behavior workaround here unless the same fix has already landed upstream.

Applied to files:

  • pacquet/crates/config/src/workspace_yaml/tests.rs
  • pacquet/crates/config/src/env_overlay.rs
  • pacquet/crates/package-manager/src/install_package_from_registry/tests.rs
  • pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs
  • pacquet/crates/package-manager/src/install/tests.rs
  • pacquet/crates/config/src/lib.rs
  • pacquet/crates/config/src/workspace_yaml.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs
  • pacquet/crates/package-manager/src/optimistic_repeat_install.rs
🔇 Additional comments (9)
pacquet/crates/config/src/lib.rs (1)

581-589: LGTM!

pacquet/crates/config/src/workspace_yaml.rs (1)

158-158: LGTM!

Also applies to: 416-416, 513-513

pacquet/crates/config/src/env_overlay.rs (1)

146-146: LGTM!

pacquet/crates/config/src/workspace_yaml/tests.rs (1)

18-18: LGTM!

Also applies to: 29-29

pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs (1)

581-581: LGTM!

pacquet/crates/package-manager/src/install_package_from_registry/tests.rs (1)

52-52: LGTM!

pacquet/crates/package-manager/src/optimistic_repeat_install.rs (1)

211-211: LGTM!

Also applies to: 277-277

pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs (1)

428-468: LGTM!

pacquet/crates/package-manager/src/install/tests.rs (1)

862-862: LGTM!


📝 Walkthrough

Walkthrough

This PR adds support for the preferWorkspacePackages configuration option throughout the pacquet package manager. The setting is read from pnpm-workspace.yaml and environment variables, applied to the npm resolver during fresh lockfile installs, and incorporated into workspace-state freshness checks to invalidate the optimistic repeat-install cache when this setting drifts.

Changes

preferWorkspacePackages Configuration and Integration

Layer / File(s) Summary
Configuration schema and YAML/environment loading
pacquet/crates/config/src/lib.rs, pacquet/crates/config/src/workspace_yaml.rs, pacquet/crates/config/src/env_overlay.rs, pacquet/crates/config/src/workspace_yaml/tests.rs
Config and WorkspaceSettings gain a new prefer_workspace_packages field, deserialized from pnpm-workspace.yaml and PREFER_WORKSPACE_PACKAGES environment variable, applied during config assembly with proper clearing for global config reads.
Resolver integration for fresh lockfile installation
pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs, pacquet/crates/package-manager/src/install_package_from_registry/tests.rs
The prefer_workspace_packages setting is threaded into per-importer ResolveOptions to influence workspace-package preference behavior during dependency resolution, and test configurations are updated.
Optimistic repeat install workspace-state drift detection
pacquet/crates/package-manager/src/optimistic_repeat_install.rs, pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs, pacquet/crates/package-manager/src/install/tests.rs
The prefer_workspace_packages setting is added to workspace-state freshness checks via current_settings and settings_match, invalidating the optimistic-install cache when this field drifts, with dedicated regression test and state-persistence validation.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

  • pnpm/pnpm#12009: Addresses the core objective of porting pnpm's preferWorkspacePackages configuration setting and integrating it across workspace YAML, environment variables, resolver, and optimistic-install state-caching logic.

Possibly related PRs

  • pnpm/pnpm#12005: Modifies optimistic_repeat_install.rs's workspace-state freshness and settings-matching logic, directly overlapping with the new prefer_workspace_packages drift checks added in this PR.
  • pnpm/pnpm#11943: Implements the optimistic repeat-install fast path that this PR extends with prefer_workspace_packages inclusion in current_settings and settings_match comparisons.
  • pnpm/pnpm#11930: Extends resolver logic to consult preferWorkspacePackages when deciding workspace-package shadowing, complementing this PR's threading of the setting through ResolveOptions.

Poem

🐰 A config field hops through the trees,
From YAML and env to resolver's breeze,
Through fresh-lockfile paths it takes its flight,
Then drift-checks the state to keep it right!
Workspace packages, now preferred so true,
Bouncing between the old and new! 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: porting the preferWorkspacePackages setting into pacquet's configuration system, which aligns with the substantial configuration plumbing, install pipeline, and testing changes throughout the PR.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch prefer-worksp

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@zkochan zkochan marked this pull request as ready for review May 28, 2026 16:44
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Review Summary by Qodo

Port preferWorkspacePackages setting from pnpm

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Port preferWorkspacePackages setting from pnpm configuration
• Thread setting through install pipeline into ResolveOptions
• Add drift detection for optimistic-repeat-install invalidation
• Extend tests to verify setting round-trips and behavior
Diagram
flowchart LR
  A["pnpm-workspace.yaml"] -->|"parse"| B["WorkspaceSettings.prefer_workspace_packages"]
  B -->|"apply_to"| C["Config.prefer_workspace_packages"]
  C -->|"thread"| D["ResolveOptions"]
  D -->|"consume"| E["npm resolver try_workspace_shadow"]
  C -->|"compare"| F["settings_match drift check"]
  C -->|"write"| G["WorkspaceStateSettings"]

Loading

Grey Divider

File Changes

1. pacquet/crates/config/src/env_overlay.rs ⚙️ Configuration changes +1/-0

Add PNPM_CONFIG_PREFER_WORKSPACE_PACKAGES env overlay

pacquet/crates/config/src/env_overlay.rs


2. pacquet/crates/config/src/lib.rs ✨ Enhancement +10/-0

Add prefer_workspace_packages bool field to Config

pacquet/crates/config/src/lib.rs


3. pacquet/crates/config/src/workspace_yaml.rs ✨ Enhancement +3/-0

Add prefer_workspace_packages to WorkspaceSettings struct

pacquet/crates/config/src/workspace_yaml.rs


View more (6)
4. pacquet/crates/config/src/workspace_yaml/tests.rs 🧪 Tests +2/-0

Test preferWorkspacePackages YAML parsing round-trip

pacquet/crates/config/src/workspace_yaml/tests.rs


5. pacquet/crates/package-manager/src/install/tests.rs 🧪 Tests +1/-0

Assert prefer_workspace_packages written to workspace state

pacquet/crates/package-manager/src/install/tests.rs


6. pacquet/crates/package-manager/src/install_package_from_registry/tests.rs 🧪 Tests +1/-0

Initialize prefer_workspace_packages in test config

pacquet/crates/package-manager/src/install_package_from_registry/tests.rs


7. pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs ✨ Enhancement +1/-0

Thread prefer_workspace_packages into ResolveOptions

pacquet/crates/package-manager/src/install_with_fresh_lockfile.rs


8. pacquet/crates/package-manager/src/optimistic_repeat_install.rs ✨ Enhancement +2/-1

Add prefer_workspace_packages to drift detection and state

pacquet/crates/package-manager/src/optimistic_repeat_install.rs


9. pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs 🧪 Tests +42/-1

Test drift detection for prefer_workspace_packages changes

pacquet/crates/package-manager/src/optimistic_repeat_install/tests.rs


Grey Divider

Qodo Logo

@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown

Actionable comments posted: 0

@github-actions

Copy link
Copy Markdown
Contributor

Micro-Benchmark Results

Linux

group                          main                                   pr
-----                          ----                                   --
tarball/download_dependency    1.02      7.8±0.37ms   554.5 KB/sec    1.00      7.7±0.08ms   566.8 KB/sec

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.29%. Comparing base (7ecaf3d) to head (cecb052).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #12032      +/-   ##
==========================================
- Coverage   88.30%   88.29%   -0.01%     
==========================================
  Files         228      228              
  Lines       28961    28966       +5     
==========================================
+ Hits        25573    25575       +2     
- Misses       3388     3391       +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@zkochan zkochan merged commit 7c9a6c2 into main May 28, 2026
28 checks passed
@zkochan zkochan deleted the prefer-worksp branch May 28, 2026 17:21
@github-actions

Copy link
Copy Markdown
Contributor

Integrated-Benchmark Report (Linux)

Scenario: Isolated linker: fresh restore, cold cache + cold store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 2.093 ± 0.066 2.000 2.181 1.00
pacquet@main 2.100 ± 0.065 1.959 2.188 1.00 ± 0.04
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 2.0932339412200003,
      "stddev": 0.06610418260709262,
      "median": 2.0981334820199997,
      "user": 2.76979166,
      "system": 3.2595043999999995,
      "min": 2.00034820152,
      "max": 2.18120268352,
      "times": [
        2.09391898752,
        2.06271720152,
        2.14323255052,
        2.0236524295200002,
        2.01584973452,
        2.18120268352,
        2.13106739352,
        2.1780022535200003,
        2.00034820152,
        2.10234797652
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 2.10010877372,
      "stddev": 0.0653159145630942,
      "median": 2.10637037652,
      "user": 2.74328696,
      "system": 3.2991504,
      "min": 1.9592219265200002,
      "max": 2.18826924352,
      "times": [
        2.10132294852,
        2.02902358452,
        2.11028265852,
        2.13717855152,
        2.10245809452,
        2.08739478852,
        1.9592219265200002,
        2.12880984252,
        2.18826924352,
        2.15712609852
      ]
    }
  ]
}

Scenario: Isolated linker: fresh restore, hot cache + hot store

Command Mean [ms] Min [ms] Max [ms] Relative
pacquet@HEAD 699.3 ± 92.3 657.1 959.0 1.05 ± 0.14
pacquet@main 668.2 ± 15.2 651.7 696.4 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 0.6992721530600001,
      "stddev": 0.0923278566868327,
      "median": 0.6720849375600001,
      "user": 0.3770428999999999,
      "system": 1.3503535,
      "min": 0.6571035270600001,
      "max": 0.9590369100600001,
      "times": [
        0.9590369100600001,
        0.6717865460600001,
        0.6571035270600001,
        0.7025289600600001,
        0.6726144350600001,
        0.65954951106,
        0.6811033510600001,
        0.65848841806,
        0.6723833290600001,
        0.6581265430600001
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 0.66817127056,
      "stddev": 0.015222856461511699,
      "median": 0.6646840870600002,
      "user": 0.3688219,
      "system": 1.3541347,
      "min": 0.6516668550600001,
      "max": 0.69637586506,
      "times": [
        0.6914244250600001,
        0.67379726906,
        0.6516668550600001,
        0.65935273906,
        0.6597337820600001,
        0.6517194630600001,
        0.6638441060600001,
        0.6655240680600001,
        0.66827413306,
        0.69637586506
      ]
    }
  ]
}

Scenario: Isolated linker: fresh install, cold cache + cold store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 2.374 ± 0.034 2.313 2.429 1.00 ± 0.02
pacquet@main 2.367 ± 0.022 2.337 2.404 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 2.3737591018399997,
      "stddev": 0.03444858242296407,
      "median": 2.37101929814,
      "user": 3.9096494,
      "system": 3.0217899999999993,
      "min": 2.31266591814,
      "max": 2.4293964831399997,
      "times": [
        2.37772099114,
        2.3463962611399998,
        2.41183337914,
        2.35331962214,
        2.4046675031399998,
        2.4293964831399997,
        2.3759400241399997,
        2.31266591814,
        2.35955226414,
        2.36609857214
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 2.3672956751400003,
      "stddev": 0.0221311492027324,
      "median": 2.36727800214,
      "user": 3.8815138999999994,
      "system": 3.0362381999999997,
      "min": 2.33693328714,
      "max": 2.40372140314,
      "times": [
        2.37061923414,
        2.38124853314,
        2.33716072014,
        2.39540330414,
        2.40372140314,
        2.3705469461399997,
        2.33693328714,
        2.35862807414,
        2.3640090581399997,
        2.35468619114
      ]
    }
  ]
}

Scenario: Isolated linker: fresh install, hot cache + hot store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 1.571 ± 0.044 1.492 1.622 1.00
pacquet@main 1.596 ± 0.055 1.519 1.678 1.02 ± 0.04
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 1.5713471432600001,
      "stddev": 0.04393511004477553,
      "median": 1.5775113918600001,
      "user": 1.76755016,
      "system": 1.80921624,
      "min": 1.4917516963600002,
      "max": 1.62246608636,
      "times": [
        1.5761560033600002,
        1.6118967133600002,
        1.6173554853600003,
        1.6012322403600001,
        1.62246608636,
        1.52421217036,
        1.4917516963600002,
        1.57886678036,
        1.5394974413600002,
        1.5500368153600002
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 1.5964863171600001,
      "stddev": 0.054817701641631314,
      "median": 1.5955620923600002,
      "user": 1.78031986,
      "system": 1.8122501400000002,
      "min": 1.51927488536,
      "max": 1.6779342353600002,
      "times": [
        1.6120668763600001,
        1.6035485553600002,
        1.55818357636,
        1.6744488773600001,
        1.5756225883600001,
        1.58757562936,
        1.51927488536,
        1.6779342353600002,
        1.5260412773600003,
        1.6301666703600002
      ]
    }
  ]
}

@github-actions

Copy link
Copy Markdown
Contributor

🐰 Bencher Report

Branchpr/12032
Testbedpacquet
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
isolated-linker.fresh-install.cold-cache.cold-store📈 view plot
🚷 view threshold
2,373.76 ms
(+1.94%)Baseline: 2,328.67 ms
2,794.40 ms
(84.95%)
isolated-linker.fresh-install.hot-cache.hot-store📈 view plot
🚷 view threshold
1,571.35 ms
(+7.98%)Baseline: 1,455.27 ms
1,746.33 ms
(89.98%)
isolated-linker.fresh-restore.cold-cache.cold-store📈 view plot
🚷 view threshold
2,093.23 ms
(+1.68%)Baseline: 2,058.58 ms
2,470.30 ms
(84.74%)
isolated-linker.fresh-restore.hot-cache.hot-store📈 view plot
🚷 view threshold
699.27 ms
(+2.93%)Baseline: 679.34 ms
815.21 ms
(85.78%)
🐰 View full continuous benchmarking report in Bencher

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants