Skip to content

Add ICU4X 2.2 support to conformance test dashboard#554

Open
sffc wants to merge 4 commits into
mainfrom
add-icu4x-2.2-dashboard
Open

Add ICU4X 2.2 support to conformance test dashboard#554
sffc wants to merge 4 commits into
mainfrom
add-icu4x-2.2-dashboard

Conversation

@sffc

@sffc sffc commented Jun 25, 2026

Copy link
Copy Markdown
Member

Adds support for ICU4X 2.2 to the conformance test dashboard.

Changes

  • Executor: Created executors/rust/2.2/ with ICU4X 2.2.0 dependencies.
  • Compatibility: Updated shared Rust executor code to handle ICU4X 2.2 API changes (stabilization of CompactDecimalFormatter, relocation of LocaleDisplayNamesFormatter, and #[non_exhaustive] constraint on RelativeTimeFormatterOptions) using backward-compatible version gating.
  • Toolchain: Upgraded Rust toolchain to 1.87 across scripts and CI to support Edition 2024 required by ICU4X 2.2 dependencies.
  • Configuration: Registered rust2.2 in run_config.json and testdriver/datasets.py.
  • Conflict Resolution: Removed older conflicting Rust versions (rust2.1 and rust2.0-beta2) from run_config.json to 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

  • Added ICU4X 2.2 executor.
  • Updated Rust toolchain to 1.87.
  • Removed conflicting older Rust versions from run configuration.

- 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>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread run_config.json
Comment thread testdriver/datasets.py
Comment thread executors/rust/src/relativedatetime_fmt.rs
@sffc sffc marked this pull request as ready for review June 25, 2026 00:39
@sffc sffc requested review from Copilot and sven-oly June 25, 2026 00:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 ICU4X 2.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.

Comment thread executors/rust/common/print_icu4x_version.rs Outdated
Comment thread setup_linux.sh Outdated
Comment thread setup_macos.sh Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@sffc sffc closed this Jun 26, 2026
@sffc sffc reopened this Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants