Add ICU4X 2.2 support to conformance test dashboard#554
Conversation
- Created executors/rust/2.2/ with ICU4X 2.2.0 dependencies. - Updated shared Rust executor code to handle ICU4X 2.2 API changes in a backward-compatible manner using version gating: - Gated CompactDecimalFormatter stabilization and relocation. - Gated LocaleDisplayNamesFormatter relocation to multi submodule. - Refactored RelativeTimeFormatterOptions construction to support #[non_exhaustive] constraint. - Updated print_icu4x_version.rs to register "2.1" and "2.2" in rustc-check-cfg. - Registered rust2.2 in run_config.json and testdriver/datasets.py. - Removed older conflicting Rust versions (rust2.1 and rust2.0-beta2) from run_config.json to resolve output overwrite conflict. - Updated Rust toolchain to 1.87 across scripts and CI to support Edition 2024. - Opened issue #553 to track the harness overwrite conflict. Co-authored-by: Gemini <176961590+gemini-code-assist[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Code Review
This pull request introduces support for Rust executor versions 2.1 and 2.2, updates the Rust toolchain version to 1.87 across setup and execution scripts, and adapts the Rust executor source files to handle the new version configurations. Feedback on the changes highlights a potential build conflict where different Rust executor versions overwrite each other's binaries due to a shared target directory in run_config.json and testdriver/datasets.py. Additionally, a performance improvement is suggested in relativedatetime_fmt.rs to avoid unnecessary string allocations by using as_deref().
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Pull request overview
Adds ICU4X 2.2 support to the conformance dashboard by introducing a new Rust executor and updating shared Rust executor compatibility shims/tooling configuration to accommodate ICU4X 2.2 API changes.
Changes:
- Added a new Rust executor package under
executors/rust/2.2/targeting ICU4X2.2.0. - Updated Rust executor source to handle ICU4X API movements/changes via version-gated imports and call sites.
- Updated scripts/CI and configuration to recognize the new version (and avoid conflicting older Rust runs in
run_config.json).
Reviewed changes
Copilot reviewed 16 out of 17 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
testdriver/datasets.py |
Registers ICU4X/Rust 2.1 and 2.2 in dataset/executor version maps. |
setup_macos.sh |
Updates expected Rust toolchain version to 1.87 for macOS setup. |
setup_linux.sh |
Updates expected Rust toolchain version to 1.87 for Linux setup. |
run_config.json |
Removes conflicting older Rust entries and adds rust2.2 run configuration. |
generateDataAndRun.sh |
Bumps RUSTUP_TOOLCHAIN to 1.87. |
genData100.sh |
Bumps RUSTUP_TOOLCHAIN to 1.87. |
executors/rust/src/relativedatetime_fmt.rs |
Updates options construction to accommodate #[non_exhaustive] options in newer ICU4X. |
executors/rust/src/numberfmt.rs |
Version-gates CompactDecimalFormatter import and formatting APIs for ICU4X 2.2. |
executors/rust/src/localenames.rs |
Adjusts display-names imports for newer ICU4X module layout. |
executors/rust/src/displaynames.rs |
Adjusts display-names imports for newer ICU4X module layout. |
executors/rust/common/print_icu4x_version.rs |
Extends cfg(ver=...) list to include 2.1 and 2.2. |
executors/rust/2.2/src/main.rs |
Adds the 2.2 executor entrypoint wiring to shared runner. |
executors/rust/2.2/Cargo.toml |
Defines ICU4X 2.2 executor crate dependencies/features. |
executors/rust/2.2/Cargo.lock |
Locks dependencies for the ICU4X 2.2 executor crate. |
executors/rust/2.2/build.rs |
Wires build-time version/env emission for the 2.2 executor. |
.github/workflows/run-rust.yml |
Extends Rust lint matrix to include 2.1/2.2 and bumps toolchain to 1.87. |
.github/workflows/e2e.yml |
Bumps Rust toolchain to 1.87 for e2e runs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Adds support for ICU4X 2.2 to the conformance test dashboard.
Changes
executors/rust/2.2/with ICU4X2.2.0dependencies.CompactDecimalFormatter, relocation ofLocaleDisplayNamesFormatter, and#[non_exhaustive]constraint onRelativeTimeFormatterOptions) using backward-compatible version gating.1.87across scripts and CI to support Edition 2024 required by ICU4X 2.2 dependencies.rust2.2inrun_config.jsonandtestdriver/datasets.py.rust2.1andrust2.0-beta2) fromrun_config.jsonto resolve the output overwrite conflict (tracked in [Harness Bug] Output overwrite conflict when running multiple versions of the same executor on the same ICU version #553).🤖 This pull request was created by an AI agent working with @sffc.
Changelog