diff --git a/.agents/cloud-setup.sh b/.agents/cloud-setup.sh index fb69ef5..fa0f726 100755 --- a/.agents/cloud-setup.sh +++ b/.agents/cloud-setup.sh @@ -350,12 +350,12 @@ fetch_verified() { export RUSTUP_HOME=/opt/stll-cloud/rustup export CARGO_HOME=/opt/stll-cloud/cargo -export RUSTUP_TOOLCHAIN='1.99.0' +export RUSTUP_TOOLCHAIN='1.99.1' export RUSTUP_AUTO_INSTALL=0 rust_run() { local mode="$1" shift - set -- runuser -u "$OUTPUT_USER" -- env HOME="$OUTPUT_HOME" RUSTUP_HOME="$RUSTUP_HOME" CARGO_HOME="$CARGO_HOME" RUSTUP_AUTO_INSTALL=0 RUSTUP_TOOLCHAIN=1.99.0 RUSTUP_DIST_SERVER=https://static.rust-lang.org RUSTUP_UPDATE_ROOT=https://static.rust-lang.org/rustup PATH="$PATH" "$@" + set -- runuser -u "$OUTPUT_USER" -- env HOME="$OUTPUT_HOME" RUSTUP_HOME="$RUSTUP_HOME" CARGO_HOME="$CARGO_HOME" RUSTUP_AUTO_INSTALL=0 RUSTUP_TOOLCHAIN=1.99.1 RUSTUP_DIST_SERVER=https://static.rust-lang.org RUSTUP_UPDATE_ROOT=https://static.rust-lang.org/rustup PATH="$PATH" "$@" case "$mode" in local) "$@" ;; network) network_run static.rust-lang.org 180 "$@" ;; @@ -369,12 +369,12 @@ primary_rust_ready() { done [[ -x "$CARGO_HOME/bin/rustup" ]] || return 1 [[ "$(rust_run local "$CARGO_HOME/bin/rustup" --version 2>/dev/null)" == 'rustup 1.29.1 '* ]] || return 1 - [[ "$(rust_run local "$CARGO_HOME/bin/rustc" +1.99.0 --version)" == 'rustc 1.99.0 '* ]] || return 1 + [[ "$(rust_run local "$CARGO_HOME/bin/rustc" +1.99.1 --version)" == 'rustc 1.99.1 '* ]] || return 1 local host - host="$(rust_run local "$CARGO_HOME/bin/rustc" +1.99.0 -vV | awk '$1 == "host:" { print $2 }')" || return 1 - rust_run local "$CARGO_HOME/bin/rustup" component list --toolchain '1.99.0' --installed | awk -v name='clippy' -v host="$host" '$1 == name || $1 == name "-" host { found=1 } END { exit !found }' || return 1 - rust_run local "$CARGO_HOME/bin/rustup" component list --toolchain '1.99.0' --installed | awk -v name='rustfmt' -v host="$host" '$1 == name || $1 == name "-" host { found=1 } END { exit !found }' || return 1 - rust_run local "$CARGO_HOME/bin/rustup" target list --toolchain '1.99.0' --installed | awk -v name='wasm32-unknown-unknown' '$1 == name { found=1 } END { exit !found }' || return 1 + host="$(rust_run local "$CARGO_HOME/bin/rustc" +1.99.1 -vV | awk '$1 == "host:" { print $2 }')" || return 1 + rust_run local "$CARGO_HOME/bin/rustup" component list --toolchain '1.99.1' --installed | awk -v name='clippy' -v host="$host" '$1 == name || $1 == name "-" host { found=1 } END { exit !found }' || return 1 + rust_run local "$CARGO_HOME/bin/rustup" component list --toolchain '1.99.1' --installed | awk -v name='rustfmt' -v host="$host" '$1 == name || $1 == name "-" host { found=1 } END { exit !found }' || return 1 + rust_run local "$CARGO_HOME/bin/rustup" target list --toolchain '1.99.1' --installed | awk -v name='wasm32-unknown-unknown' '$1 == name { found=1 } END { exit !found }' || return 1 return 0 } rust_ready() { @@ -412,14 +412,14 @@ esac fi rust_run local "$CARGO_HOME/bin/rustup" set auto-self-update disable if ! primary_rust_ready; then - rust_run network "$CARGO_HOME/bin/rustup" toolchain install 1.99.0 --profile minimal --no-self-update '--component' 'clippy' '--component' 'rustfmt' '--target' 'wasm32-unknown-unknown' + rust_run network "$CARGO_HOME/bin/rustup" toolchain install 1.99.1 --profile minimal --no-self-update '--component' 'clippy' '--component' 'rustfmt' '--target' 'wasm32-unknown-unknown' fi - rust_run local "$CARGO_HOME/bin/rustup" default 1.99.0 + rust_run local "$CARGO_HOME/bin/rustup" default 1.99.1 verify_rust for tool in rustup cargo rustc rustdoc cargo-clippy clippy-driver rustfmt cargo-fmt; do # Launchers persist the system homes in fresh shells without profile sourcing. - printf '%s\n' '#!/bin/sh' 'export RUSTUP_HOME=/opt/stll-cloud/rustup' 'export CARGO_HOME=/opt/stll-cloud/cargo' 'export RUSTUP_AUTO_INSTALL=0' 'export RUSTUP_TOOLCHAIN=1.99.0' "exec /opt/stll-cloud/cargo/bin/$tool \"\$@\"" > "$scratch/$tool" + printf '%s\n' '#!/bin/sh' 'export RUSTUP_HOME=/opt/stll-cloud/rustup' 'export CARGO_HOME=/opt/stll-cloud/cargo' 'export RUSTUP_AUTO_INSTALL=0' 'export RUSTUP_TOOLCHAIN=1.99.1' "exec /opt/stll-cloud/cargo/bin/$tool \"\$@\"" > "$scratch/$tool" if ! cmp -s "$scratch/$tool" "/usr/local/bin/$tool"; then [[ ! -d "/usr/local/bin/$tool" ]] || fail 'Install target is a directory; remove it and rerun install:' "/usr/local/bin/$tool" install -m 755 "$scratch/$tool" "/usr/local/bin/$tool" @@ -465,7 +465,7 @@ export PATH='/opt/stll-cloud/node/26.10.0/bin:/opt/stll-cloud/bun/1.4.4:/usr/loc unset _stll_cloud_remaining _stll_cloud_result _stll_cloud_separator _stll_cloud_part _stll_cloud_more export RUSTUP_HOME=/opt/stll-cloud/rustup export CARGO_HOME=/opt/stll-cloud/cargo -export RUSTUP_TOOLCHAIN='1.99.0' +export RUSTUP_TOOLCHAIN='1.99.1' export RUSTUP_AUTO_INSTALL=0 STLL_CLOUD_PROFILE if ! cmp -s "$temporary" '/etc/profile.d/stll-cloud.sh'; then install -m 644 "$temporary" '/etc/profile.d/stll-cloud.sh'; fi @@ -502,7 +502,7 @@ done ) verify_shell_environment() { [[ -f '/etc/profile.d/stll-cloud.sh' && ! -L '/etc/profile.d/stll-cloud.sh' && "$(stat -c '%h:%u' '/etc/profile.d/stll-cloud.sh')" == 1:0 ]] || fail 'Managed shell environment is unavailable; run install' - [[ "$(sha256sum -- '/etc/profile.d/stll-cloud.sh' | cut -d ' ' -f1)" == '2e96da10364dade2b051fb77195abb3c42a3e848804b86ef26ada7aa6d392858' ]] || fail 'Managed shell environment differs; run install' + [[ "$(sha256sum -- '/etc/profile.d/stll-cloud.sh' | cut -d ' ' -f1)" == '24dfcdbf02036ed628e0fbc62bc76ec11f67e2df81f9e1ae4e3709bab30a0fb1' ]] || fail 'Managed shell environment differs; run install' } diff --git a/.changeset/rust-patch.md b/.changeset/rust-patch.md new file mode 100644 index 0000000..cd4b1d4 --- /dev/null +++ b/.changeset/rust-patch.md @@ -0,0 +1,4 @@ +--- +--- + +Adopt shared Rust 1.99.1 tooling and regenerate development setup. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8b92c2c..7080252 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -266,7 +266,7 @@ jobs: - uses: dtolnay/rust-toolchain@b725eda525362e7cf34af9a7243cac1e3f01a7ec # stable if: needs.check-changes.outputs.code-changed == 'true' with: - toolchain: "1.99.0" + toolchain: "1.99.1" components: clippy, rustfmt targets: wasm32-unknown-unknown - uses: Swatinem/rust-cache@d1527c8f67ef9af357290475d4af4b0fab8f12e0 # v2.9.3 diff --git a/bun.lock b/bun.lock index b0d9610..639f7f1 100644 --- a/bun.lock +++ b/bun.lock @@ -14,7 +14,7 @@ "@changesets/cli": "3.0.3", "@stll/aho-corasick-wasm": "^1.0.4", "@stll/fuzzy-search-wasm": "^1.4.0", - "@stll/oxlint-config": "3.2.0", + "@stll/oxlint-config": "3.2.1", "@stll/oxlint-plugin": "0.7.0", "@stll/regex-set-wasm": "^1.0.9", "@stll/typescript-config": "0.10.0", @@ -254,7 +254,7 @@ "@stll/fuzzy-search-win32-x64-msvc": ["@stll/fuzzy-search-win32-x64-msvc@1.4.0", "", { "os": "win32", "cpu": "x64" }, "sha512-FLsweQ/H/k9BKYVrcroNe7p2R3gk8b2jmEKZJ/FnxhDyfogYlmDHpS6eyzWwz1X/4uGkTHds+M50P4nBJYZYFA=="], - "@stll/oxlint-config": ["@stll/oxlint-config@3.2.0", "", { "dependencies": { "@changesets/assemble-release-plan": "7.0.0", "@changesets/config": "4.0.1", "@changesets/read": "1.0.1", "@manypkg/get-packages": "3.1.0", "acorn": "8.19.0", "esbuild": "0.28.2", "picomatch": "4.0.7", "semver": "7.8.5", "smol-toml": "1.9.1", "tsrs": "0.18.0-ts7.1.0-dev.20260929", "tsx": "4.23.15", "yaml": "2.9.1" }, "peerDependencies": { "oxlint": ">=1.89.0 <2", "oxlint-tsgolint": ">=7.0.2005 <8", "vite": "8.3.5" }, "optionalPeers": ["vite"], "bin": { "stll-dependabot": "dist/dependabot-cli.mjs", "stll-quarantine": "dist/quarantine-cli.mjs", "stll-cloud-setup": "dist/cloud-setup-cli.mjs", "stll-rust-policy": "dist/rust-policy-cli.mjs", "stll-engine-support": "dist/engine-support-cli.mjs", "stll-consumer-compat": "dist/consumer-compat-cli.mjs", "stll-toolchain-check": "dist/toolchain-check-cli.mjs", "stll-typecheck-probe": "dist/typecheck-probe-cli.mjs", "stll-publish-contract": "dist/publish-contract-cli.mjs", "stll-toolchain-changed": "dist/toolchain-changed-cli.mjs", "stll-normalize-wasi-loaders": "dist/wasi-loader-normalizer-cli.mjs" } }, "sha512-vlKNLCgu+248mLTElgtWUZTKFVal1UvUsnTjflUw7DbZglxyOuDXL3Z3HPzTMKhOUDzrsUGLb87bgMhI/VMDog=="], + "@stll/oxlint-config": ["@stll/oxlint-config@3.2.1", "", { "dependencies": { "@changesets/assemble-release-plan": "7.0.0", "@changesets/config": "4.0.1", "@changesets/read": "1.0.1", "@manypkg/get-packages": "3.1.0", "acorn": "8.19.0", "esbuild": "0.28.2", "picomatch": "4.0.7", "semver": "7.8.5", "smol-toml": "1.9.1", "tsrs": "0.18.0-ts7.1.0-dev.20260929", "tsx": "4.23.15", "yaml": "2.9.1" }, "peerDependencies": { "oxlint": ">=1.89.0 <2", "oxlint-tsgolint": ">=7.0.2005 <8", "vite": "8.3.5" }, "optionalPeers": ["vite"], "bin": { "stll-dependabot": "dist/dependabot-cli.mjs", "stll-quarantine": "dist/quarantine-cli.mjs", "stll-cloud-setup": "dist/cloud-setup-cli.mjs", "stll-rust-policy": "dist/rust-policy-cli.mjs", "stll-engine-support": "dist/engine-support-cli.mjs", "stll-consumer-compat": "dist/consumer-compat-cli.mjs", "stll-toolchain-check": "dist/toolchain-check-cli.mjs", "stll-typecheck-probe": "dist/typecheck-probe-cli.mjs", "stll-publish-contract": "dist/publish-contract-cli.mjs", "stll-toolchain-changed": "dist/toolchain-changed-cli.mjs", "stll-normalize-wasi-loaders": "dist/wasi-loader-normalizer-cli.mjs" } }, "sha512-CduJxELEW/DMDEEVZxghT/Rau0yh3umxdb4dC4PFkQK5x4kEixSfTcX71Y26SKvD2mek6hwOR1V4P3daPCfm7w=="], "@stll/oxlint-plugin": ["@stll/oxlint-plugin@0.7.0", "", { "peerDependencies": { "@oxlint/plugins": ">=1.89.0 <2", "oxlint": ">=1.89.0 <2" } }, "sha512-m8eASMb+3KhwhLMxwNmMtt51QF76pimcOWlwaLO0+11rj8sNf5q1bB4KsdVZGBhXgjqaJM/yjSazz3DgniYW4A=="], diff --git a/package.json b/package.json index 37fe14d..d7b5e2b 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@changesets/cli": "3.0.3", "@stll/aho-corasick-wasm": "^1.0.4", "@stll/fuzzy-search-wasm": "^1.4.0", - "@stll/oxlint-config": "3.2.0", + "@stll/oxlint-config": "3.2.1", "@stll/oxlint-plugin": "0.7.0", "@stll/regex-set-wasm": "^1.0.9", "@stll/typescript-config": "0.10.0", diff --git a/scripts/tooling-workflow.test.ts b/scripts/tooling-workflow.test.ts index 1956f0e..a2336a3 100644 --- a/scripts/tooling-workflow.test.ts +++ b/scripts/tooling-workflow.test.ts @@ -1,6 +1,8 @@ import { expect, test } from "bun:test"; import { readFileSync } from "node:fs"; +import toolchainPolicy from "@stll/oxlint-config/toolchain.json" with { type: "json" }; + const read = (path: string) => readFileSync(new URL(`../${path}`, import.meta.url), "utf8"); @@ -39,7 +41,7 @@ test("preserves shared detector changes and domain checks", () => { test("pins ordinary runtimes and bounds the Hawk compiler exception", () => { const workflow = read(".github/workflows/ci.yml"); - expect(workflow).toContain('toolchain: "1.99.0"'); + expect(workflow).toContain(`toolchain: "${toolchainPolicy.rust}"`); expect(workflow).toContain('HAWK_RUST_TOOLCHAIN: "1.97.1"'); expect(read(".node-version").trim()).toBe("26.10.0"); const declaration = JSON.parse(read("stll-toolchain.json")); diff --git a/stll-toolchain.json b/stll-toolchain.json index bd3c289..32c1483 100644 --- a/stll-toolchain.json +++ b/stll-toolchain.json @@ -2,7 +2,7 @@ "cloud": { "install": "bun install --frozen-lockfile", "rust": { - "toolchain": "1.99.0", + "toolchain": "1.99.1", "components": ["clippy", "rustfmt"], "targets": ["wasm32-unknown-unknown"] }