chore(rust): bump toolchain stage to rust:1-alpine3.23 (Rust 1.95) for Alpine 3.20 EOL#15807
chore(rust): bump toolchain stage to rust:1-alpine3.23 (Rust 1.95) for Alpine 3.20 EOL#15807davidkonigsberg wants to merge 2 commits into
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
SDK Generation Benchmark ResultsComparing PR branch against median of 5 nightly run(s) on Full benchmark table (click to expand)
main (generator): generator-only time via --skip-scripts (includes Docker image build, container startup, IR parsing, and code generation — this is the same Docker-based flow customers use via |
|
Doesnt' improve things. |
Description
Linear ticket: N/A (Vanta finding follow-up)
Follow-up to #15804, which carved out the Rust toolchain bump because clearing the
ALPINE_LINUX_3_20Vanta finding requires a Rust minor-version bump (not just a base-image bump). The officialrustimage never published a1.82-alpine3.23variant — verified viadocker manifest inspect rust:1.82-alpine3.23("no such manifest"), so we have to move off the1.82line entirely to get onto an Alpine 3.23 base.Bumps the Rust toolchain stage in both Rust generator Dockerfiles from
rust:1.82-alpine3.20(Alpine 3.20 went EOL 2026-05-01) to the floatingrust:1-alpine3.23tag, which currently resolves to:Floating to
rust:1(rather than pinning a patch) is consistent with how the rest of the Dockerfiles handle minor-version churn on toolchain images, and consistent with what #15804 did for other Rust references.This clears the
ALPINE_LINUX_3_20Vanta finding on therust-sdk-generatorandrust-model-generatorcontainers.Changes Made
generators/rust/sdk/Dockerfile:FROM rust:1.82-alpine3.20 AS rust→FROM rust:1-alpine3.23 AS rust(everything else —node:22.22-alpine3.23final stage, npm patch dance,rustup component add rustfmt, etc. — left untouched).generators/rust/model/Dockerfile: same one-line change in itsrustbuild stage.generators/rust/sdk/changes/unreleased/bump-rust-toolchain-base-image.yml:chorechangelog entry. Perrelease-config.json, therustfolder maps togenerators/rust/sdk/changes, which covers bothrust-sdkandrust-modelfor changelog purposes.Out of scope (intentionally not touched):
node:22.22-alpine3.23final base stage in either Dockerfile.--availableonapk upgradelines — already standardized in chore(deps): bump generator/seed base images to clear repeatable CVEs #15804.Testing
The Rust toolchain isn't just a runtime dep — it's used by the generator to format generated SDKs (
rustup component add rustfmt, then the generator runsrustfmton output). A Rust minor-version bump can changerustfmtoutput, so I ran the full rust-sdk seed suite end-to-end:Result: 130/130 test cases passed, and
git diff seed/rust-sdkshowed no rustfmt-output diffs vs. the committed snapshots. The only diffs were in.fern/metadata.jsonfiles (invokedBy: "ci" → "manual",ciProviderremoved) — that's environmental noise from running locally vs. in CI, not from the toolchain bump. Reverted those metadata-only diffs and did not commit them.So
rustfmtoutput is byte-identical between Rust 1.82 and Rust 1.95 for everything our Rust generator produces today. No seed snapshots were regenerated/committed.pnpm run checkclean (biome, 4541 files, no fixes applied)seed:test --generator rust-sdkrun: 130/130 passed, zero rustfmt-output diffs vs. committed snapshotsdocker pull rust:1-alpine3.23 && docker run --rm rust:1-alpine3.23 rustc --version→rustc 1.95.0 (59807616e 2026-04-14)Reviewer notes / things worth a closer look
rust:1tag: intentional — matches the convention in chore(deps): bump generator/seed base images to clear repeatable CVEs #15804 and how other toolchain images handle minor churn. If you'd rather pin torust:1.95-alpine3.23for reproducibility, happy to change it. (Tradeoff: floating means future Rust minor releases roll in silently on rebuild; the seed suite is the safety net.)rustfmt(samerustup component add rustfmt), and rust-sdk's seed suite exercises that exactrustfmtbinary end-to-end with zero diffs, so a separate rust-model run wouldn't add coverage. Flag if you'd like it run anyway.rust/sdk/changes: perrelease-config.json, that's the canonical location for therustgroup; the changelog summary explicitly mentions both generators so the entry surfaces correctly when either ships.Link to Devin session: https://app.devin.ai/sessions/ffe20a51bdb94632b00a6f51076319db
Requested by: @davidkonigsberg