BuildRiot
Sign in

Article · AI

Ubuntu devpacks: A checklist for recording Rust and Spring build inputs

Canonical’s Ubuntu 26.10 announcement lists Rust 1.97.1 and announces Spring AI availability on Ubuntu Desktop through the Spring devpack. This checklist covers compiler selection, Rust dependency locking and proposed records for planning a Spring build environment for continuous integration.

A miniature wooden case holds metal tools, clamped blank dependency records, and a lavender build-planning kit with a laptop and paper sprout beneath a warm desk lamp.
Illustration: BuildRiot (AI-generated)

Key takeaway

A devpack installation alone does not fully specify a development environment. Teams should preserve project versions, generated files and build inputs, then compare repeated builds against explicit acceptance criteria.

What Canonical announced for Ubuntu 26.10

Canonical announced Ubuntu 26.10, Stonking Stingray, on October 15, 2026. It listed Rust 1.97.1 and announced Spring AI availability on Ubuntu Desktop through the Spring devpack. Canonical says the release coincides with the Rust devpack. Spring support predates this release; Canonical’s new announcement concerns Spring AI availability. Sources: Canonical

Canonical describes the Rust devpack as an interactive installer with choices for Rust channels, editors and utilities. The Rust examples below use documented mechanisms. The Spring and continuous integration, or CI, recommendations are a proposed planning checklist, not a verified image-preservation workflow. Sources: Canonical on GitHub

Create a Rust project with an explicit compiler

Record the chosen utilities and their versions in the project’s setup instructions. Ubuntu also documents archive packages and a Rustup snap as separate installation routes. Check the active compiler instead of assuming its version. Sources: Ubuntu

The first example below creates a small command-line project using the Cargo workflow in Ubuntu’s introductory tutorial. The release announcement lists Rust 1.97.1, but does not establish its availability through Rustup. Install the chosen version and components through Rustup before creating the toolchain file or building. If 1.97.1 fails to install, use a verified available version. Use that version consistently in the installation command, toolchain file and CI commands. Sources: Canonical, Ubuntu

Rustup supports repository toolchain files with version, profile and component selections. Keep this file with the source so compiler changes become part of code review. Sources: The Rust Project

rustup toolchain install 1.97.1 --profile minimal \
  --component rustfmt --component clippy

Continue only after that installation succeeds, substituting the verified version below if necessary.

cargo new workstation-check
cd workstation-check
# rust-toolchain.toml
[toolchain]
channel = "1.97.1"
profile = "minimal"
components = ["rustfmt", "clippy"]

Verify compiler selection and lock dependencies

After successful installation, inspect the active toolchain before building. Rustup allows command-line selections and an environment variable to override a repository file. Directory overrides also affect selection. The proposed sequence below prints the effective compiler and Cargo versions. It generates the initial dependency lockfile before building and testing. Sources: The Rust Project

rustup show
rustc -Vv
cargo -V
cargo generate-lockfile
cargo build --locked
cargo test --locked

Commit rust-toolchain.toml, Cargo.toml and Cargo.lock together. Cargo normally preserves locked resolutions where possible, but changed requirements can cause it to update the lockfile. Locked builds fail when dependency resolution would require a change. Sources: The Rust Project

The proposed CI commands below explicitly select the compiler and enforce the dependency lock. Use the same verified available version recorded in rust-toolchain.toml. Keep lockfile updates in a reviewed dependency-update workflow. Sources: The Rust Project

cargo +1.97.1 build --locked
cargo +1.97.1 test --locked

Capture native build inputs separately. Ubuntu’s setup guide notes that native dependencies can require the build-essential package. Record the linker, native libraries, operating-system packages, target architecture and external generators. Compiler selection and dependency locking address different parts of that inventory. The table below pairs documented mechanisms with recommended records for comparing environments. Sources: Ubuntu

Table

Build controls and the records to preserve

LayerDocumented mechanismRecommended record
Rust compilerRepository toolchain file and overridesExact release, components and active selection
Rust dependenciesCargo lockfile and locked buildsCommitted lockfile
Native toolsSeparate native build dependenciesPackage versions, linker and architecture
The recommended records complement documented selection mechanisms and make environments easier to compare.Sources: Ubuntu, The Rust Project

Record Spring AI application inputs

Record the installed development tools and their versions. Plan how to preserve the build inputs separately from recording their versions.

Commit the generated application instead of regenerating it during each CI run. Record the exact resolved Spring AI version and Java Development Kit, or JDK, build alongside it.

Treat a successful response as an application check rather than a reproducibility measurement. If inference behavior is an acceptance criterion, record the model artifact, quantization, inference engine, configuration and hardware. Assess application behavior and generated answers separately.

Plan build-image preservation for CI

For a proposed CI workflow, plan how to create, retain and reuse a build image. Include registry retention and recording the published image digest in that plan. Preserve the generated project, build configuration and dependency records alongside that image reference.

Test repeated builds and schedule updates

For an acceptance test, start with two clean machines using the same specifications. Record build-tool versions. Then build from the committed project files and preserved image. Compare dependency graphs and artifact hashes separately. Matching dependencies alone does not prove byte-identical binaries. For Spring AI, separate application tests using a controlled service substitute from tests of actual inference.

Plan updates alongside preservation. Ubuntu lists support for 26.10 through July 2027, giving teams a migration deadline. Schedule image rebuilds and dependency updates as reviewed changes, then repeat the acceptance checks. Before wider adoption, ask Canonical how to preserve exact build inputs. Also ask whether Rust selections can be exported and replayed without interaction. Sources: Canonical

Attribution

Sources

  1. 1CanonicalCanonical releases Ubuntu 26.10 Stonking StingraySource published (UTC)
  2. 2Canonical on GitHubdevpack-for-rust
  3. 3UbuntuDevpack for Rust: Zero to Rust in secondsSource published (UTC)
  4. 4UbuntuHow to set up a development environment for Rust on Ubuntu
  5. 5The Rust ProjectOverrides - The rustup book
  6. 6The Rust ProjectDependency Resolution - The Cargo Book
  7. 7UbuntuDevelop with Rust on Ubuntu
  8. 8UbuntuDeveloping an LLM chat-client with Spring AI
  9. 9Canonical on GitHubdevpack-for-spring README
  10. 10Ubuntu DiscourseCreate a self-contained build environment with devpack-for-spring and Rockcraft

Read the original source for full details and context.

Report a problem

Links, dates or what you expected. Do not include passwords or private data.

More on AI

All AI stories

Review · AI

Firefox DevTools MCP 0.10.6 adds PDF output and fixes tab targeting

Mozilla’s Firefox DevTools MCP connects agents to Firefox for browser inspection; its documentation says the developer preset adds debugging, network, console and profiler tools. The locally run server uses WebDriver BiDi via Selenium. Mozilla lists Node 20.19.0+, Firefox 100+ and clients including Claude Code, Claude Desktop, Cursor and Cline. The proposed evaluation configuration is npx -y @mozilla/firefox-devtools-mcp@0.10.6 --tool-preset developer --viewport 1280x720 --start-url http://localhost:3000. Mozilla announced 0.10.6 on October 16, 2026, documenting PDF output through print_page and profile reuse changes. According to Mozilla, select_page and close_page now target the tab identified in the last tab listing, even if tabs have since opened or closed.

Mozilla