Skip to content

Commit 08fd5f7

Browse files
authored
Merge branch 'next' into copilot/add-badges-to-readme
2 parents e973ed7 + 394559b commit 08fd5f7

666 files changed

Lines changed: 22384 additions & 5303 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/clippy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
- name: Install Rust
2020
uses: dtolnay/rust-toolchain@stable
2121
with:
22-
toolchain: nightly-2026-02-05
22+
toolchain: nightly-2026-02-18
2323
components: clippy
2424
# - name: Cache cargo
2525
# uses: Swatinem/rust-cache@v2

.github/workflows/format.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Install Rust
1818
uses: dtolnay/rust-toolchain@stable
1919
with:
20-
toolchain: nightly-2026-02-05
20+
toolchain: nightly-2026-02-18
2121
components: rustfmt
2222
- name: Check formatting
2323
run: cargo fmt --all -- --check

.github/workflows/pack-ci.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ jobs:
2929
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
3030
test: |
3131
apt-get update &&
32-
rustup install nightly-2026-02-05 &&
33-
rustup default nightly-2026-02-05 &&
32+
rustup install nightly-2026-02-18 &&
33+
rustup default nightly-2026-02-18 &&
3434
rustup target add x86_64-unknown-linux-gnu &&
3535
cargo test -p pack-tests --target x86_64-unknown-linux-gnu
3636
- host: ubuntu-latest
@@ -43,8 +43,8 @@ jobs:
4343
echo "https://dl-cdn.alpinelinux.org/alpine/v3.21/community" >> /etc/apk/repositories &&
4444
apk update &&
4545
apk add --no-cache libc6-compat pkgconfig dav1d libdav1d dav1d-dev clang-static llvm-dev &&
46-
rustup install nightly-2026-02-05 &&
47-
rustup default nightly-2026-02-05 &&
46+
rustup install nightly-2026-02-18 &&
47+
rustup default nightly-2026-02-18 &&
4848
rustup target add x86_64-unknown-linux-musl &&
4949
export RUSTFLAGS='--cfg tokio_unstable -Zshare-generics=y -Zthreads=8 -Csymbol-mangling-version=v0 -Ctarget-feature=-crt-static' &&
5050
cargo test -p pack-tests --target x86_64-unknown-linux-musl
@@ -53,8 +53,8 @@ jobs:
5353
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
5454
test: |
5555
apt-get update && apt-get install -y libc6-dev-arm64-cross libgcc-s1-arm64-cross &&
56-
rustup install nightly-2026-02-05 &&
57-
rustup default nightly-2026-02-05 &&
56+
rustup install nightly-2026-02-18 &&
57+
rustup default nightly-2026-02-18 &&
5858
rustup target add aarch64-unknown-linux-gnu &&
5959
export QEMU_LD_PREFIX=/usr/aarch64-linux-gnu &&
6060
cargo test -p pack-tests --target aarch64-unknown-linux-gnu
@@ -68,8 +68,8 @@ jobs:
6868
echo "https://dl-cdn.alpinelinux.org/alpine/v3.21/community" >> /etc/apk/repositories &&
6969
apk update &&
7070
apk add --no-cache libc6-compat pkgconfig dav1d libdav1d dav1d-dev clang-static llvm-dev &&
71-
rustup install nightly-2026-02-05 &&
72-
rustup default nightly-2026-02-05 &&
71+
rustup install nightly-2026-02-18 &&
72+
rustup default nightly-2026-02-18 &&
7373
rustup target add aarch64-unknown-linux-musl &&
7474
export RUSTFLAGS='--cfg tokio_unstable -Zshare-generics=y -Zthreads=8 -Csymbol-mangling-version=v0' &&
7575
cargo test -p pack-tests --target aarch64-unknown-linux-musl
@@ -114,7 +114,7 @@ jobs:
114114
uses: dtolnay/rust-toolchain@stable
115115
if: ${{ !matrix.settings.docker }}
116116
with:
117-
toolchain: nightly-2026-02-05
117+
toolchain: nightly-2026-02-18
118118
targets: ${{ matrix.settings.target }}
119119
# - name: Cache cargo
120120
# uses: Swatinem/rust-cache@v2

.github/workflows/pack-integration.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
- name: Setup Rust
4747
uses: dtolnay/rust-toolchain@master
4848
with:
49-
toolchain: nightly-2026-02-05
49+
toolchain: nightly-2026-02-18
5050
components: rustfmt, clippy
5151

5252
# - name: Rust Cache

.github/workflows/pack-perf.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
- name: Install Rust
4242
uses: dtolnay/rust-toolchain@stable
4343
with:
44-
toolchain: nightly-2026-02-05
44+
toolchain: nightly-2026-02-18
4545
components: rustfmt, clippy
4646

4747
# - name: Cache cargo

.github/workflows/pack-release.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ jobs:
2323
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
2424
build: |
2525
apt-get update && apt-get install -y libc6-dev-arm64-cross libgcc-s1-arm64-cross &&
26-
rustup install nightly-2026-02-05 &&
27-
rustup default nightly-2026-02-05 &&
26+
rustup install nightly-2026-02-18 &&
27+
rustup default nightly-2026-02-18 &&
2828
rustup target add aarch64-unknown-linux-gnu &&
2929
npm run build:binding --workspace=@utoo/pack -- --target aarch64-unknown-linux-gnu
3030
- host: ubuntu-latest
@@ -38,8 +38,8 @@ jobs:
3838
echo "https://dl-cdn.alpinelinux.org/alpine/v3.21/community" >> /etc/apk/repositories &&
3939
apk update &&
4040
apk add --no-cache libc6-compat pkgconfig dav1d libdav1d dav1d-dev clang-static llvm-dev &&
41-
rustup install nightly-2026-02-05 &&
42-
rustup default nightly-2026-02-05 &&
41+
rustup install nightly-2026-02-18 &&
42+
rustup default nightly-2026-02-18 &&
4343
rustup target add aarch64-unknown-linux-musl &&
4444
export RUSTFLAGS='--cfg tokio_unstable -Zshare-generics=y -Zthreads=8 -Zunstable-options -Csymbol-mangling-version=v0 -Clinker-flavor=gnu-lld-cc -Clink-self-contained=+linker' &&
4545
npm run build:binding --workspace=@utoo/pack -- --target aarch64-unknown-linux-musl
@@ -48,8 +48,8 @@ jobs:
4848
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
4949
build: |
5050
apt-get update &&
51-
rustup install nightly-2026-02-05 &&
52-
rustup default nightly-2026-02-05 &&
51+
rustup install nightly-2026-02-18 &&
52+
rustup default nightly-2026-02-18 &&
5353
rustup target add x86_64-unknown-linux-gnu &&
5454
npm run build:binding --workspace=@utoo/pack -- --target x86_64-unknown-linux-gnu
5555
- host: ubuntu-latest
@@ -63,8 +63,8 @@ jobs:
6363
echo "https://dl-cdn.alpinelinux.org/alpine/v3.21/community" >> /etc/apk/repositories &&
6464
apk update &&
6565
apk add --no-cache libc6-compat pkgconfig dav1d libdav1d dav1d-dev clang-static llvm-dev &&
66-
rustup install nightly-2026-02-05 &&
67-
rustup default nightly-2026-02-05 &&
66+
rustup install nightly-2026-02-18 &&
67+
rustup default nightly-2026-02-18 &&
6868
rustup target add x86_64-unknown-linux-musl &&
6969
export RUSTFLAGS='--cfg tokio_unstable -Zshare-generics=y -Zthreads=8 -Csymbol-mangling-version=v0' &&
7070
npm run build:binding --workspace=@utoo/pack -- --target x86_64-unknown-linux-musl
@@ -109,7 +109,7 @@ jobs:
109109
uses: dtolnay/rust-toolchain@stable
110110
if: ${{ !matrix.settings.docker }}
111111
with:
112-
toolchain: nightly-2026-02-05
112+
toolchain: nightly-2026-02-18
113113
targets: ${{ matrix.settings.target }}
114114
# - name: Cache cargo
115115
# uses: Swatinem/rust-cache@v2

.github/workflows/pm-bench.yml

Lines changed: 90 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,35 @@ on:
1212
- both
1313
- npmjs
1414
- npmmirror
15+
pm_list:
16+
description: 'Package managers to benchmark'
17+
required: true
18+
default: 'utoo,bun'
19+
type: choice
20+
options:
21+
- utoo,bun
22+
- utoo,pnpm,bun
23+
- all
24+
baseline:
25+
description: 'Compare with published utoo from npm'
26+
required: false
27+
default: true
28+
type: boolean
29+
build_next:
30+
description: 'Compare with utoo built from next branch'
31+
required: false
32+
default: false
33+
type: boolean
34+
cold_runs:
35+
description: 'Number of cold install runs'
36+
required: false
37+
default: '3'
38+
type: string
39+
warm_runs:
40+
description: 'Number of warm install runs'
41+
required: false
42+
default: '3'
43+
type: string
1544
pull_request:
1645
types: [labeled]
1746

@@ -40,12 +69,37 @@ jobs:
4069
- name: Install Rust
4170
uses: dtolnay/rust-toolchain@stable
4271
with:
43-
toolchain: nightly-2026-02-05
72+
toolchain: nightly-2026-02-18
73+
74+
- name: Cache cargo
75+
uses: Swatinem/rust-cache@v2
76+
with:
77+
shared-key: pm-bench-${{ matrix.os }}
78+
79+
- name: Install baseline utoo from npm
80+
if: github.event.inputs.baseline != 'false'
81+
run: |
82+
npm install -g utoo
83+
BASELINE_PATH=$(which utoo)
84+
cp "$BASELINE_PATH" /tmp/utoo-npm
85+
chmod +x /tmp/utoo-npm
86+
echo "Baseline utoo (npm) version: $(/tmp/utoo-npm --version)"
87+
echo "UTOO_NPM_BIN=/tmp/utoo-npm" >> $GITHUB_ENV
4488
45-
# - name: Cache cargo
46-
# uses: Swatinem/rust-cache@v2
47-
# with:
48-
# shared-key: pm-bench-${{ matrix.os }}
89+
- name: Build baseline utoo from next branch
90+
if: github.event.inputs.build_next == 'true'
91+
run: |
92+
CURRENT_SHA=$(git rev-parse HEAD)
93+
git fetch origin next --depth=1
94+
git checkout origin/next
95+
git submodule update --init --recursive --depth 1
96+
cargo build --release --bin utoo -p utoo-pm
97+
cp target/release/utoo /tmp/utoo-next
98+
chmod +x /tmp/utoo-next
99+
echo "Baseline utoo (next) version: $(/tmp/utoo-next --version)"
100+
echo "UTOO_NEXT_BIN=/tmp/utoo-next" >> $GITHUB_ENV
101+
git checkout "$CURRENT_SHA"
102+
git submodule update --init --recursive --depth 1
49103
50104
- name: Build utoo-pm
51105
run: cargo build --release --bin utoo -p utoo-pm
@@ -56,27 +110,50 @@ jobs:
56110
- name: Create ut symlink
57111
run: ln -sf utoo $(dirname $(which utoo))/ut
58112

59-
- name: Install yarn
60-
run: npm install -g yarn
113+
- name: Resolve pm_list
114+
id: pm
115+
run: |
116+
PM_LIST="${{ github.event.inputs.pm_list || 'utoo,bun' }}"
117+
if [ "$PM_LIST" = "all" ]; then
118+
PM_LIST="utoo,pnpm,yarn,bun"
119+
fi
120+
echo "list=$PM_LIST" >> $GITHUB_OUTPUT
61121
62122
- name: Install pnpm
123+
if: contains(steps.pm.outputs.list, 'pnpm')
63124
uses: pnpm/action-setup@v4
64125
with:
65126
version: latest
66127

128+
- name: Install yarn
129+
if: contains(steps.pm.outputs.list, 'yarn')
130+
run: npm install -g yarn
131+
67132
- name: Install bun
133+
if: contains(steps.pm.outputs.list, 'bun')
68134
uses: oven-sh/setup-bun@v2
69135
with:
70136
bun-version: latest
71137

72-
- name: Verify package managers
138+
- name: Install hyperfine and GNU time
139+
run: |
140+
if [ "$RUNNER_OS" = "Linux" ]; then
141+
sudo apt-get update && sudo apt-get install -y hyperfine time
142+
elif [ "$RUNNER_OS" = "macOS" ]; then
143+
brew install hyperfine
144+
fi
145+
146+
- name: Verify tools
73147
run: |
74-
echo "utoo: $(utoo --version)"
75-
echo "yarn: $(yarn --version)"
76-
echo "pnpm: $(pnpm --version)"
77-
echo "bun: $(bun --version)"
148+
echo "hyperfine: $(hyperfine --version)"
149+
IFS=',' read -ra PMS <<< "${{ steps.pm.outputs.list }}"
150+
for pm in "${PMS[@]}"; do
151+
echo "$pm: $($pm --version 2>&1 || echo 'not installed')"
152+
done
78153
79154
- name: Run benchmark
80155
run: |
81156
chmod +x e2e/pm-bench.sh
82-
bash e2e/pm-bench.sh ${{ github.event.inputs.registry || 'both' }}
157+
BENCH_COLD_RUNS=${{ github.event.inputs.cold_runs || '3' }} \
158+
BENCH_WARM_RUNS=${{ github.event.inputs.warm_runs || '3' }} \
159+
bash e2e/pm-bench.sh ${{ github.event.inputs.registry || 'both' }} ${{ steps.pm.outputs.list }}

.github/workflows/pm-ci.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ jobs:
4747

4848
- name: Init git submodules
4949
run: git submodule update --init --recursive --depth 1
50+
51+
# Disable Windows Defender real-time scanning to speed up I/O-heavy builds (~30-50% faster)
52+
- name: Disable Windows Defender
53+
if: runner.os == 'Windows'
54+
shell: powershell
55+
run: Set-MpPreference -DisableRealtimeMonitoring $true
5056

5157
# Add: Configure Git longpaths on Windows
5258
- name: Configure Git (Windows)
@@ -81,7 +87,7 @@ jobs:
8187
uses: dtolnay/rust-toolchain@stable
8288
if: ${{ !matrix.settings.docker }}
8389
with:
84-
toolchain: nightly-2026-02-05
90+
toolchain: nightly-2026-02-18
8591
targets: ${{ matrix.settings.target }}
8692

8793
# - name: Cache cargo
@@ -127,4 +133,4 @@ jobs:
127133
exit 1
128134
else
129135
echo "Tests passed or were skipped"
130-
fi
136+
fi

.github/workflows/pm-e2e.yml

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ jobs:
3333
- name: Init git submodules
3434
run: git submodule update --init --recursive --depth 1
3535

36+
# Disable Windows Defender real-time scanning to speed up I/O-heavy builds (~30-50% faster)
37+
- name: Disable Windows Defender
38+
if: runner.os == 'Windows'
39+
shell: powershell
40+
run: Set-MpPreference -DisableRealtimeMonitoring $true
41+
3642
- name: Install x86_64 Node.js via nvm
3743
if: matrix.settings.target == 'x86_64-apple-darwin'
3844
run: |
@@ -59,7 +65,7 @@ jobs:
5965
- name: Setup Rust toolchain
6066
uses: dtolnay/rust-toolchain@stable
6167
with:
62-
toolchain: nightly-2026-02-05
68+
toolchain: nightly-2026-02-18
6369
targets: ${{ matrix.settings.target }}
6470

6571
# - name: Cache cargo
@@ -128,9 +134,9 @@ jobs:
128134
utoo --version
129135
ut --version
130136
131-
- name: Make script executable
137+
- name: Make scripts executable
132138
if: matrix.settings.host != 'windows-latest'
133-
run: chmod +x e2e/utoo-pm.sh
139+
run: chmod +x e2e/utoo-pm.sh e2e/pm-arborist.sh
134140

135141
- name: Run e2e tests (Unix)
136142
if: matrix.settings.host != 'windows-latest'
@@ -147,19 +153,34 @@ jobs:
147153
fi
148154
shell: bash
149155

156+
- name: Run arborist e2e tests (Unix)
157+
if: matrix.settings.host != 'windows-latest'
158+
run: |
159+
if [ "${{ matrix.settings.target }}" = "x86_64-apple-darwin" ]; then
160+
arch -x86_64 bash -c '
161+
export NVM_DIR="$HOME/.nvm"
162+
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
163+
nvm use 22
164+
bash e2e/pm-arborist.sh
165+
'
166+
else
167+
bash e2e/pm-arborist.sh
168+
fi
169+
shell: bash
170+
150171
- name: Run e2e tests (Windows)
151172
if: matrix.settings.host == 'windows-latest'
152173
shell: pwsh
153174
run: |
154175
git config --system core.longpaths true
155-
176+
156177
# Ensure binaries are in PATH
157178
$binPath = "${{ github.workspace }}\target\${{ matrix.settings.target }}\release"
158179
$env:PATH = "$binPath;$env:PATH"
159-
180+
160181
Write-Host "Running e2e tests..."
161182
Write-Host "Working directory: $(Get-Location)"
162-
183+
163184
pwsh -File e2e/utoo-pm.ps1 --verbose
164185
165186
- name: Upload e2e artifacts on failure (Unix)
@@ -192,4 +213,4 @@ jobs:
192213
exit 1
193214
else
194215
echo "Tests passed or were skipped"
195-
fi
216+
fi

.github/workflows/pm-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ jobs:
9494
- name: Install Rust
9595
uses: dtolnay/rust-toolchain@stable
9696
with:
97-
toolchain: nightly-2026-02-05
97+
toolchain: nightly-2026-02-18
9898
targets: ${{ matrix.target }}
9999

100100
# - name: Cache cargo

0 commit comments

Comments
 (0)