From 1814f85c09d9d7fb5d728b96b568cf4cf6d5dd4a Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Wed, 9 Aug 2023 06:36:15 -0700 Subject: [PATCH] Move casemap out of experimental; final graduation cleanups (#3803) * Move casemap to components * rename dep spec * Remove from experimental in datagen * Remove from experimental in ffi * Remove from experimental in metacrate * Bump casemap version to 1.2.9 * review fixes * depcheck * make * gn * Example -> Examples * add stability doc comment * redirect docs * compiled data in docs * Fix feature flagging * Add example with benchmark_macros * fmt * rm * nit --------- Co-authored-by: Robert Bastian --- CODEOWNERS | 4 +-- Cargo.lock | 4 ++- Cargo.toml | 4 +-- .../casemap/Cargo.toml | 5 ++-- {experimental => components}/casemap/LICENSE | 0 .../casemap/README.md | 2 +- .../casemap/benches/casemap.rs | 0 .../casemap/benches/data/Iliad.txt | 0 .../casemap/data/Cargo.toml | 0 .../casemap/data/LICENSE | 0 .../casemap/data/README.md | 0 .../casemap/data/build.rs | 0 .../casemap/data/config.json | 0 .../casemap/data/data/any.rs | 0 .../casemap/data/data/macros.rs | 0 .../macros/props_casemap_unfold_v1.data.rs | 0 .../data/data/macros/props_casemap_v1.data.rs | 0 .../casemap/data/data/mod.rs | 0 .../casemap/data/src/lib.rs | 0 components/casemap/examples/casemapping.rs | 28 +++++++++++++++++ .../casemap/src/casemapper.rs | 0 .../casemap/src/closer.rs | 3 +- .../casemap/src/greek_to_me/data.rs | 0 .../casemap/src/greek_to_me/mod.rs | 0 .../casemap/src/internals.rs | 0 .../casemap/src/lib.rs | 2 +- .../casemap/src/provider/data.rs | 0 .../casemap/src/provider/exception_helpers.rs | 0 .../casemap/src/provider/exceptions.rs | 0 .../src/provider/exceptions_builder.rs | 0 .../casemap/src/provider/mod.rs | 0 .../casemap/src/provider/unfold.rs | 0 .../casemap/src/set.rs | 0 .../casemap/src/titlecase.rs | 20 ++++++------- .../casemap/tests/conversions.rs | 0 .../casemap/tests/gen_greek_to_me.rs | 0 components/icu/Cargo.toml | 11 ++++--- components/icu/src/lib.rs | 1 - docs/tutorials/testing/patch.toml | 4 +-- ffi/diplomat/Cargo.toml | 4 +-- .../cpp/examples/casemapping/Makefile | 2 +- ffi/gn/Cargo.lock | 16 ++++++++++ ffi/gn/icu4x/BUILD.gn | 30 +++++++++++++++++++ provider/datagen/Cargo.toml | 5 ++-- provider/datagen/src/registry.rs | 3 +- .../datagen/src/transform/icuexport/mod.rs | 1 - provider/testdata/Cargo.toml | 2 +- tools/depcheck/src/allowlist.rs | 4 +-- tools/make/data.toml | 8 ++--- tools/testdata-scripts/Cargo.toml | 2 +- 50 files changed, 118 insertions(+), 47 deletions(-) rename {experimental => components}/casemap/Cargo.toml (96%) rename {experimental => components}/casemap/LICENSE (100%) rename {experimental => components}/casemap/README.md (99%) rename {experimental => components}/casemap/benches/casemap.rs (100%) rename {experimental => components}/casemap/benches/data/Iliad.txt (100%) rename {experimental => components}/casemap/data/Cargo.toml (100%) rename {experimental => components}/casemap/data/LICENSE (100%) rename {experimental => components}/casemap/data/README.md (100%) rename {experimental => components}/casemap/data/build.rs (100%) rename {experimental => components}/casemap/data/config.json (100%) rename {experimental => components}/casemap/data/data/any.rs (100%) rename {experimental => components}/casemap/data/data/macros.rs (100%) rename {experimental => components}/casemap/data/data/macros/props_casemap_unfold_v1.data.rs (100%) rename {experimental => components}/casemap/data/data/macros/props_casemap_v1.data.rs (100%) rename {experimental => components}/casemap/data/data/mod.rs (100%) rename {experimental => components}/casemap/data/src/lib.rs (100%) create mode 100644 components/casemap/examples/casemapping.rs rename {experimental => components}/casemap/src/casemapper.rs (100%) rename {experimental => components}/casemap/src/closer.rs (98%) rename {experimental => components}/casemap/src/greek_to_me/data.rs (100%) rename {experimental => components}/casemap/src/greek_to_me/mod.rs (100%) rename {experimental => components}/casemap/src/internals.rs (100%) rename {experimental => components}/casemap/src/lib.rs (99%) rename {experimental => components}/casemap/src/provider/data.rs (100%) rename {experimental => components}/casemap/src/provider/exception_helpers.rs (100%) rename {experimental => components}/casemap/src/provider/exceptions.rs (100%) rename {experimental => components}/casemap/src/provider/exceptions_builder.rs (100%) rename {experimental => components}/casemap/src/provider/mod.rs (100%) rename {experimental => components}/casemap/src/provider/unfold.rs (100%) rename {experimental => components}/casemap/src/set.rs (100%) rename {experimental => components}/casemap/src/titlecase.rs (96%) rename {experimental => components}/casemap/tests/conversions.rs (100%) rename {experimental => components}/casemap/tests/gen_greek_to_me.rs (100%) diff --git a/CODEOWNERS b/CODEOWNERS index 36b8d7203f9..a89dd8f8ff1 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -8,6 +8,7 @@ # List of components with at least two owners as specified in docs/crate-ownership. components/calendar/ @Manishearth @sffc +components/casemap/ @Manishearth components/collator/ @hsivonen @echeran components/collections/ @echeran components/datetime/ @zbraniecki @gregtatum @nordzilla @@ -20,7 +21,6 @@ components/plurals/ @zbraniecki @sffc components/segmenter/ @aethanyc @makotokato @sffc components/timezone/ @nordzilla experimental/bies/ @sffc -experimental/casemap/ @Manishearth experimental/compactdecimal/ @eggrobin experimental/displaynames/ @sffc @snktd experimental/harfbuzz/ @hsivonen @@ -51,6 +51,7 @@ utils/zerofrom @Manishearth @sffc utils/zerovec/ @Manishearth @sffc components/calendar/data @unicode-org/icu4x-owners +components/casemap/data @unicode-org/icu4x-owners components/collator/data @unicode-org/icu4x-owners components/collections/data @unicode-org/icu4x-owners components/datetime/data @unicode-org/icu4x-owners @@ -61,7 +62,6 @@ components/normalizer/data @unicode-org/icu4x-owners components/plurals/data @unicode-org/icu4x-owners components/segmenter/data @unicode-org/icu4x-owners components/timezone/data @unicode-org/icu4x-owners -experimental/casemap/data @unicode-org/icu4x-owners experimental/compactdecimal/data @unicode-org/icu4x-owners experimental/displaynames/data @unicode-org/icu4x-owners experimental/relativetime/data @unicode-org/icu4x-owners diff --git a/Cargo.lock b/Cargo.lock index f8567f4811d..cacb897725c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1341,11 +1341,13 @@ dependencies = [ [[package]] name = "icu_casemap" -version = "0.7.2" +version = "1.2.0" dependencies = [ "criterion", "databake", "displaydoc", + "icu", + "icu_benchmark_macros", "icu_casemap_data", "icu_codepointtrie_builder", "icu_collections", diff --git a/Cargo.toml b/Cargo.toml index 356feca44f6..993fba748e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,8 @@ resolver = "2" members = [ "components/calendar", "components/calendar/data", + "components/casemap", + "components/casemap/data", "components/collator", "components/collator/data", "components/collections", @@ -32,8 +34,6 @@ members = [ "components/timezone", "components/timezone/data", "experimental/bies", - "experimental/casemap", - "experimental/casemap/data", "experimental/compactdecimal", "experimental/compactdecimal/data", "experimental/displaynames", diff --git a/experimental/casemap/Cargo.toml b/components/casemap/Cargo.toml similarity index 96% rename from experimental/casemap/Cargo.toml rename to components/casemap/Cargo.toml index 3b750827d29..641d7348e9d 100644 --- a/experimental/casemap/Cargo.toml +++ b/components/casemap/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "icu_casemap" description = "Unicode case mapping and folding algorithms" -version = "0.7.2" +version = "1.2.0" rust-version = "1.65.0" authors = ["The ICU4X Project Developers"] edition = "2021" @@ -17,7 +17,6 @@ categories = ["internationalization"] # Keep this in sync with other crates unless there are exceptions include = [ "src/**/*", - "data/*", "examples/**/*", "benches/**/*", "tests/**/*", @@ -58,7 +57,9 @@ skip_optional_dependencies = true denylist = ["bench"] [dev-dependencies] +icu = { path = "../../components/icu" } icu_normalizer = { path = "../../components/normalizer" } +icu_benchmark_macros = { path = "../../tools/benchmark/macros" } icu_collections = { path = "../../components/collections", features = ["databake"] } icu_codepointtrie_builder = { version = "0.3.4", path = "../../components/collections/codepointtrie_builder" } databake = { version = "0.1.3", path = "../../utils/databake", default-features = false} diff --git a/experimental/casemap/LICENSE b/components/casemap/LICENSE similarity index 100% rename from experimental/casemap/LICENSE rename to components/casemap/LICENSE diff --git a/experimental/casemap/README.md b/components/casemap/README.md similarity index 99% rename from experimental/casemap/README.md rename to components/casemap/README.md index 37af067e502..65cb039081f 100644 --- a/experimental/casemap/README.md +++ b/components/casemap/README.md @@ -5,7 +5,7 @@ This module is published as its own crate ([`icu_casemap`](https://docs.rs/icu_casemap/latest/icu_casemap/)) and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project. -## Example +## Examples ```rust use icu_casemap::CaseMapper; diff --git a/experimental/casemap/benches/casemap.rs b/components/casemap/benches/casemap.rs similarity index 100% rename from experimental/casemap/benches/casemap.rs rename to components/casemap/benches/casemap.rs diff --git a/experimental/casemap/benches/data/Iliad.txt b/components/casemap/benches/data/Iliad.txt similarity index 100% rename from experimental/casemap/benches/data/Iliad.txt rename to components/casemap/benches/data/Iliad.txt diff --git a/experimental/casemap/data/Cargo.toml b/components/casemap/data/Cargo.toml similarity index 100% rename from experimental/casemap/data/Cargo.toml rename to components/casemap/data/Cargo.toml diff --git a/experimental/casemap/data/LICENSE b/components/casemap/data/LICENSE similarity index 100% rename from experimental/casemap/data/LICENSE rename to components/casemap/data/LICENSE diff --git a/experimental/casemap/data/README.md b/components/casemap/data/README.md similarity index 100% rename from experimental/casemap/data/README.md rename to components/casemap/data/README.md diff --git a/experimental/casemap/data/build.rs b/components/casemap/data/build.rs similarity index 100% rename from experimental/casemap/data/build.rs rename to components/casemap/data/build.rs diff --git a/experimental/casemap/data/config.json b/components/casemap/data/config.json similarity index 100% rename from experimental/casemap/data/config.json rename to components/casemap/data/config.json diff --git a/experimental/casemap/data/data/any.rs b/components/casemap/data/data/any.rs similarity index 100% rename from experimental/casemap/data/data/any.rs rename to components/casemap/data/data/any.rs diff --git a/experimental/casemap/data/data/macros.rs b/components/casemap/data/data/macros.rs similarity index 100% rename from experimental/casemap/data/data/macros.rs rename to components/casemap/data/data/macros.rs diff --git a/experimental/casemap/data/data/macros/props_casemap_unfold_v1.data.rs b/components/casemap/data/data/macros/props_casemap_unfold_v1.data.rs similarity index 100% rename from experimental/casemap/data/data/macros/props_casemap_unfold_v1.data.rs rename to components/casemap/data/data/macros/props_casemap_unfold_v1.data.rs diff --git a/experimental/casemap/data/data/macros/props_casemap_v1.data.rs b/components/casemap/data/data/macros/props_casemap_v1.data.rs similarity index 100% rename from experimental/casemap/data/data/macros/props_casemap_v1.data.rs rename to components/casemap/data/data/macros/props_casemap_v1.data.rs diff --git a/experimental/casemap/data/data/mod.rs b/components/casemap/data/data/mod.rs similarity index 100% rename from experimental/casemap/data/data/mod.rs rename to components/casemap/data/data/mod.rs diff --git a/experimental/casemap/data/src/lib.rs b/components/casemap/data/src/lib.rs similarity index 100% rename from experimental/casemap/data/src/lib.rs rename to components/casemap/data/src/lib.rs diff --git a/components/casemap/examples/casemapping.rs b/components/casemap/examples/casemapping.rs new file mode 100644 index 00000000000..f96af02aa28 --- /dev/null +++ b/components/casemap/examples/casemapping.rs @@ -0,0 +1,28 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +#![no_main] // https://github.com/unicode-org/icu4x/issues/395 + +icu_benchmark_macros::static_setup!(); + +use icu::casemap::CaseMapper; +use icu_locid::langid; + +#[no_mangle] +fn main(_argc: isize, _argv: *const *const u8) -> isize { + icu_benchmark_macros::main_setup!(); + + let cm = CaseMapper::new(); + + println!( + r#"The uppercase of "hello world" is "{}""#, + cm.uppercase_to_string("hello world", &langid!("und")) + ); + println!( + r#"The lowercase of "Γειά σου Κόσμε" is "{}""#, + cm.lowercase_to_string("Γειά σου Κόσμε", &langid!("und")) + ); + + 0 +} diff --git a/experimental/casemap/src/casemapper.rs b/components/casemap/src/casemapper.rs similarity index 100% rename from experimental/casemap/src/casemapper.rs rename to components/casemap/src/casemapper.rs diff --git a/experimental/casemap/src/closer.rs b/components/casemap/src/closer.rs similarity index 98% rename from experimental/casemap/src/closer.rs rename to components/casemap/src/closer.rs index 0e66ddf34cc..bdee7d02b60 100644 --- a/experimental/casemap/src/closer.rs +++ b/components/casemap/src/closer.rs @@ -49,13 +49,14 @@ pub struct CaseMapCloser { #[cfg(feature = "compiled_data")] impl Default for CaseMapCloser { + /// ✨ *Enabled with the `compiled_data` Cargo feature.* fn default() -> Self { Self::new() } } impl CaseMapCloser { - /// A constructor which creates a [`CaseMapCloser`]. + /// A constructor which creates a [`CaseMapCloser`] using compiled data. /// /// # Examples /// diff --git a/experimental/casemap/src/greek_to_me/data.rs b/components/casemap/src/greek_to_me/data.rs similarity index 100% rename from experimental/casemap/src/greek_to_me/data.rs rename to components/casemap/src/greek_to_me/data.rs diff --git a/experimental/casemap/src/greek_to_me/mod.rs b/components/casemap/src/greek_to_me/mod.rs similarity index 100% rename from experimental/casemap/src/greek_to_me/mod.rs rename to components/casemap/src/greek_to_me/mod.rs diff --git a/experimental/casemap/src/internals.rs b/components/casemap/src/internals.rs similarity index 100% rename from experimental/casemap/src/internals.rs rename to components/casemap/src/internals.rs diff --git a/experimental/casemap/src/lib.rs b/components/casemap/src/lib.rs similarity index 99% rename from experimental/casemap/src/lib.rs rename to components/casemap/src/lib.rs index fdc78353e3d..95034769b1e 100644 --- a/experimental/casemap/src/lib.rs +++ b/components/casemap/src/lib.rs @@ -7,7 +7,7 @@ //! This module is published as its own crate ([`icu_casemap`](https://docs.rs/icu_casemap/latest/icu_casemap/)) //! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project. //! -//! # Example +//! # Examples //! //! ```rust //! use icu_casemap::CaseMapper; diff --git a/experimental/casemap/src/provider/data.rs b/components/casemap/src/provider/data.rs similarity index 100% rename from experimental/casemap/src/provider/data.rs rename to components/casemap/src/provider/data.rs diff --git a/experimental/casemap/src/provider/exception_helpers.rs b/components/casemap/src/provider/exception_helpers.rs similarity index 100% rename from experimental/casemap/src/provider/exception_helpers.rs rename to components/casemap/src/provider/exception_helpers.rs diff --git a/experimental/casemap/src/provider/exceptions.rs b/components/casemap/src/provider/exceptions.rs similarity index 100% rename from experimental/casemap/src/provider/exceptions.rs rename to components/casemap/src/provider/exceptions.rs diff --git a/experimental/casemap/src/provider/exceptions_builder.rs b/components/casemap/src/provider/exceptions_builder.rs similarity index 100% rename from experimental/casemap/src/provider/exceptions_builder.rs rename to components/casemap/src/provider/exceptions_builder.rs diff --git a/experimental/casemap/src/provider/mod.rs b/components/casemap/src/provider/mod.rs similarity index 100% rename from experimental/casemap/src/provider/mod.rs rename to components/casemap/src/provider/mod.rs diff --git a/experimental/casemap/src/provider/unfold.rs b/components/casemap/src/provider/unfold.rs similarity index 100% rename from experimental/casemap/src/provider/unfold.rs rename to components/casemap/src/provider/unfold.rs diff --git a/experimental/casemap/src/set.rs b/components/casemap/src/set.rs similarity index 100% rename from experimental/casemap/src/set.rs rename to components/casemap/src/set.rs diff --git a/experimental/casemap/src/titlecase.rs b/components/casemap/src/titlecase.rs similarity index 96% rename from experimental/casemap/src/titlecase.rs rename to components/casemap/src/titlecase.rs index f586e225ceb..874e9d1ff7a 100644 --- a/experimental/casemap/src/titlecase.rs +++ b/components/casemap/src/titlecase.rs @@ -14,7 +14,7 @@ use icu_provider::prelude::*; use writeable::Writeable; /// How to handle the rest of the string once the head of the -/// string has been titlecased +/// string has been titlecased. See docs of [`TitlecaseMapper`] for examples. #[non_exhaustive] #[derive(Copy, Clone, Default, PartialEq, Eq, Hash, Debug)] pub enum TailCasing { @@ -26,7 +26,7 @@ pub enum TailCasing { } /// Whether to start casing at the beginning of the string or at the first -/// relevant character. +/// relevant character. See docs of [`TitlecaseMapper`] for examples. #[non_exhaustive] #[derive(Copy, Clone, Default, PartialEq, Eq, Hash, Debug)] pub enum HeadAdjustment { @@ -40,6 +40,8 @@ pub enum HeadAdjustment { } /// Various options for controlling titlecasing +/// +/// See docs of [`TitlecaseMapper`] for examples. #[non_exhaustive] #[derive(Copy, Clone, Default, PartialEq, Eq, Hash, Debug)] pub struct TitlecaseOptions { @@ -144,7 +146,7 @@ pub struct TitlecaseMapper { } impl TitlecaseMapper { - /// A constructor which creates a [`TitlecaseMapper`], with the normal (non-legacy) head adjustment behavior. + /// A constructor which creates a [`TitlecaseMapper`] using compiled data, with the normal (non-legacy) head adjustment behavior. /// See struct docs on [`TitlecaseMapper`] for more information on head adjustment behavior and usage examples. /// /// ✨ *Enabled with the `compiled_data` Cargo feature.* @@ -157,7 +159,7 @@ impl TitlecaseMapper { gc: Some(icu_properties::maps::general_category().static_to_owned()), } } - /// A constructor which creates a [`TitlecaseMapper`], with the legacy head adjustment behavior. + /// A constructor which creates a [`TitlecaseMapper`] using compiled data, with the legacy head adjustment behavior. /// See struct docs on [`TitlecaseMapper`] for more information on head adjustment behavior and usage examples. /// /// ✨ *Enabled with the `compiled_data` Cargo feature.* @@ -198,9 +200,7 @@ impl TitlecaseMapper { let cm = CaseMapper::try_new_unstable(provider)?; let gc = Some( icu_properties::maps::load_general_category(provider).map_err(|e| { - let PropertiesError::PropDataLoad(e) = e else { - unreachable!() - }; + let PropertiesError::PropDataLoad(e) = e else { unreachable!() }; e })?, ); @@ -229,7 +229,7 @@ impl> TitlecaseMapper { ]); /// A constructor which creates a [`TitlecaseMapper`] from an existing [`CaseMapper`] - /// (either owned or as a reference), with the normal (non-legacy) head adjustment behavior. + /// (either owned or as a reference) and compiled data, with the normal (non-legacy) head adjustment behavior. /// See struct docs on [`TitlecaseMapper`] for more information on head adjustment behavior. /// /// ✨ *Enabled with the `compiled_data` Cargo feature.* @@ -262,9 +262,7 @@ impl> TitlecaseMapper { { let gc = Some( icu_properties::maps::load_general_category(provider).map_err(|e| { - let PropertiesError::PropDataLoad(e) = e else { - unreachable!() - }; + let PropertiesError::PropDataLoad(e) = e else { unreachable!() }; e })?, ); diff --git a/experimental/casemap/tests/conversions.rs b/components/casemap/tests/conversions.rs similarity index 100% rename from experimental/casemap/tests/conversions.rs rename to components/casemap/tests/conversions.rs diff --git a/experimental/casemap/tests/gen_greek_to_me.rs b/components/casemap/tests/gen_greek_to_me.rs similarity index 100% rename from experimental/casemap/tests/gen_greek_to_me.rs rename to components/casemap/tests/gen_greek_to_me.rs diff --git a/components/icu/Cargo.toml b/components/icu/Cargo.toml index 77a6577d5c0..38922f99d5a 100644 --- a/components/icu/Cargo.toml +++ b/components/icu/Cargo.toml @@ -30,6 +30,7 @@ all-features = true [dependencies] icu_calendar = { version = "1.2.0", path = "../calendar", default-features = false } +icu_casemap = { version = "1.2.0", path = "../../components/casemap", default-features = false } icu_collator = { version = "1.2.0", path = "../collator", default-features = false } icu_collections = { version = "1.2.0", path = "../collections", default-features = false } icu_datetime = { version = "1.2.0", path = "../datetime", default-features = false } @@ -44,7 +45,6 @@ icu_segmenter = { version = "1.2.0", path = "../segmenter", default-features = f icu_timezone = { version = "1.2.0", path = "../timezone", default-features = false } # Experimental components -icu_casemap = { version = "0.7.1", path = "../../experimental/casemap", default-features = false, optional = true } icu_compactdecimal = { version = "0.2.0", path = "../../experimental/compactdecimal", default-features = false, optional = true } icu_displaynames = { version = "0.10.0", path = "../../experimental/displaynames", default-features = false, optional = true } icu_relativetime = { version = "0.1.0", path = "../../experimental/relativetime", default-features = false, optional = true } @@ -61,7 +61,7 @@ writeable = { path = "../../utils/writeable" } [features] default = [ "icu_calendar/default", - "icu_casemap?/default", + "icu_casemap/default", "icu_collator/default", "icu_compactdecimal?/default", "icu_datetime/default", @@ -78,7 +78,7 @@ default = [ ] std = [ "icu_calendar/std", - "icu_casemap?/std", + "icu_casemap/std", "icu_collator/std", "icu_collections/std", "icu_datetime/std", @@ -96,7 +96,7 @@ std = [ ] serde = [ "icu_calendar/serde", - "icu_casemap?/serde", + "icu_casemap/serde", "icu_collator/serde", "icu_collections/serde", "icu_datetime/serde", @@ -114,7 +114,7 @@ serde = [ ] compiled_data = [ "icu_calendar/compiled_data", - "icu_casemap?/compiled_data", + "icu_casemap/compiled_data", "icu_collator/compiled_data", "icu_compactdecimal?/compiled_data", "icu_datetime/compiled_data", @@ -136,7 +136,6 @@ icu_datetime_experimental = [ "icu_datetime/experimental", ] experimental = [ - "icu_casemap", "icu_compactdecimal", "icu_datetime_experimental", "icu_displaynames", diff --git a/components/icu/src/lib.rs b/components/icu/src/lib.rs index 69675148f20..ed9608fa891 100644 --- a/components/icu/src/lib.rs +++ b/components/icu/src/lib.rs @@ -146,7 +146,6 @@ extern crate icu_provider; #[doc(inline)] pub use icu_calendar as calendar; -#[cfg(feature = "icu_casemap")] #[doc(inline)] pub use icu_casemap as casemap; diff --git a/docs/tutorials/testing/patch.toml b/docs/tutorials/testing/patch.toml index ef2b045dfea..d02c8e3fe43 100644 --- a/docs/tutorials/testing/patch.toml +++ b/docs/tutorials/testing/patch.toml @@ -5,6 +5,8 @@ [patch.crates-io] icu_calendar = { path = "../../components/calendar" } icu_calendar_data = { path = "../../components/calendar/data" } +icu_casemap = { path = "../../components/casemap" } +icu_casemap_data = { path = "../../components/casemap/data" } icu_collator = { path = "../../components/collator" } icu_collator_data = { path = "../../components/collator/data" } icu_collections = { path = "../../components/collections" } @@ -30,8 +32,6 @@ icu_segmenter_data = { path = "../../components/segmenter/data" } icu_timezone = { path = "../../components/timezone" } icu_timezone_data = { path = "../../components/timezone/data" } bies = { path = "../../experimental/bies" } -icu_casemap = { path = "../../experimental/casemap" } -icu_casemap_data = { path = "../../experimental/casemap/data" } icu_compactdecimal = { path = "../../experimental/compactdecimal" } icu_compactdecimal_data = { path = "../../experimental/compactdecimal/data" } icu_displaynames = { path = "../../experimental/displaynames" } diff --git a/ffi/diplomat/Cargo.toml b/ffi/diplomat/Cargo.toml index 41460b24bc7..160f6390653 100644 --- a/ffi/diplomat/Cargo.toml +++ b/ffi/diplomat/Cargo.toml @@ -70,7 +70,7 @@ cpp_default = ["logging"] wasm_default = ["logging"] # Components -default_components = ["icu_calendar", "icu_collator", "icu_datetime", "icu_decimal", +default_components = ["icu_calendar", "icu_casemap", "icu_collator", "icu_datetime", "icu_decimal", "icu_list", "icu_locid_transform", "icu_normalizer", "icu_plurals", "icu_properties", "icu_segmenter", "icu_timezone"] @@ -118,7 +118,7 @@ writeable = { version = "0.5.1", path = "../../utils/writeable/" } # Optional ICU4X components and their dependent utils fixed_decimal = { version = "0.5.2", path = "../../utils/fixed_decimal", features = ["ryu"] , optional = true} icu_calendar = { version = "1.2.0", path = "../../components/calendar", default-features = false, optional = true } -icu_casemap = { version = "0.7.2", path = "../../experimental/casemap", default-features = false, optional = true } +icu_casemap = { version = "1.2.0", path = "../../components/casemap", default-features = false, optional = true } icu_collator = { version = "1.2.0", path = "../../components/collator", default-features = false, optional = true } icu_collections = { version = "1.2.0", path = "../../components/collections", default-features = false, optional = true } icu_datetime = { version = "1.2.0", path = "../../components/datetime/", default-features = false, optional = true } diff --git a/ffi/diplomat/cpp/examples/casemapping/Makefile b/ffi/diplomat/cpp/examples/casemapping/Makefile index 57aef49cbaf..57a9c069438 100644 --- a/ffi/diplomat/cpp/examples/casemapping/Makefile +++ b/ffi/diplomat/cpp/examples/casemapping/Makefile @@ -13,7 +13,7 @@ CXX?=g++ $(ALL_HEADERS): ../../../../../target/debug/libicu_capi_staticlib.a: FORCE - cargo build -p icu_capi_staticlib --features icu_capi/icu_casemap + cargo build -p icu_capi_staticlib a.out: ../../../../../target/debug/libicu_capi_staticlib.a $(ALL_HEADERS) test.cpp $(CXX) -std=c++17 test.cpp ../../../../../target/debug/libicu_capi_staticlib.a -ldl -lpthread -lm -g diff --git a/ffi/gn/Cargo.lock b/ffi/gn/Cargo.lock index c4d26acaf5d..953458b0142 100644 --- a/ffi/gn/Cargo.lock +++ b/ffi/gn/Cargo.lock @@ -214,6 +214,7 @@ name = "icu" version = "1.2.0" dependencies = [ "icu_calendar", + "icu_casemap", "icu_collator", "icu_collections", "icu_datetime", @@ -250,6 +251,7 @@ dependencies = [ "diplomat-runtime", "fixed_decimal", "icu_calendar", + "icu_casemap", "icu_collator", "icu_collections", "icu_datetime", @@ -278,6 +280,20 @@ dependencies = [ "icu_provider", ] +[[package]] +name = "icu_casemap" +version = "1.2.0" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid", + "icu_properties", + "icu_provider", + "writeable", + "yoke", + "zerovec", +] + [[package]] name = "icu_collator" version = "1.2.0" diff --git a/ffi/gn/icu4x/BUILD.gn b/ffi/gn/icu4x/BUILD.gn index d0a381fb21b..79dd025cc75 100644 --- a/ffi/gn/icu4x/BUILD.gn +++ b/ffi/gn/icu4x/BUILD.gn @@ -156,6 +156,7 @@ rust_library("icu-v1_2_0") { deps = [] deps += [ ":icu_calendar-v1_2_0" ] + deps += [ ":icu_casemap-v1_2_0" ] deps += [ ":icu_collator-v1_2_0" ] deps += [ ":icu_collections-v1_2_0" ] deps += [ ":icu_datetime-v1_2_1" ] @@ -218,6 +219,7 @@ rust_library("icu_capi-v1_2_2") { deps += [ ":diplomat-runtime-v0_5_2" ] deps += [ ":fixed_decimal-v0_5_3" ] deps += [ ":icu_calendar-v1_2_0" ] + deps += [ ":icu_casemap-v1_2_0" ] deps += [ ":icu_collator-v1_2_0" ] deps += [ ":icu_collections-v1_2_0" ] deps += [ ":icu_datetime-v1_2_1" ] @@ -245,6 +247,7 @@ rust_library("icu_capi-v1_2_2") { "-Cextra-filename=-7fdd0dfbc90c4949", "--cfg=feature=\"default_components\"", "--cfg=feature=\"icu_calendar\"", + "--cfg=feature=\"icu_casemap\"", "--cfg=feature=\"icu_collator\"", "--cfg=feature=\"icu_datetime\"", "--cfg=feature=\"icu_decimal\"", @@ -260,6 +263,33 @@ rust_library("icu_capi-v1_2_2") { visibility = [ ":*" ] } +rust_library("icu_casemap-v1_2_0") { + crate_name = "icu_casemap" + crate_root = "//components/casemap/src/lib.rs" + output_name = "icu_casemap-14fac046168d59e4" + + deps = [] + deps += [ ":displaydoc-v0_2_4($host_toolchain)" ] + deps += [ ":icu_collections-v1_2_0" ] + deps += [ ":icu_locid-v1_2_0" ] + deps += [ ":icu_properties-v1_2_0" ] + deps += [ ":icu_provider-v1_2_0" ] + deps += [ ":writeable-v0_5_2" ] + deps += [ ":yoke-v0_7_1" ] + deps += [ ":zerovec-v0_9_4" ] + + rustenv = [] + + rustflags = [ + "--cap-lints=allow", + "--edition=2021", + "-Cmetadata=14fac046168d59e4", + "-Cextra-filename=-14fac046168d59e4", + ] + + visibility = [ ":*" ] +} + rust_library("icu_collator-v1_2_0") { crate_name = "icu_collator" crate_root = "//components/collator/src/lib.rs" diff --git a/provider/datagen/Cargo.toml b/provider/datagen/Cargo.toml index a0a9742b5d4..ec41ba99f29 100644 --- a/provider/datagen/Cargo.toml +++ b/provider/datagen/Cargo.toml @@ -36,7 +36,7 @@ all-features = true # ICU components icu_calendar = { version = "1.2.0", path = "../../components/calendar", default-features = false, features = ["datagen"] } -icu_casemap = { version = "0.7.1", path = "../../experimental/casemap", default-features = false, features = ["datagen"], optional = true } +icu_casemap = { version = "1.2.0", path = "../../components/casemap", default-features = false, features = ["datagen"] } icu_collator = { version = "1.2.0", path = "../../components/collator", default-features = false, features = ["datagen"] } icu_compactdecimal = { version = "0.2.0", path = "../../experimental/compactdecimal", default-features = false, features = ["datagen"], optional = true } icu_datetime = { version = "1.2.0", path = "../../components/datetime", default-features = false, features = ["datagen"] } @@ -114,7 +114,6 @@ use_icu4c = ["icu_codepointtrie_builder/icu4c"] networking = ["dep:ureq"] # experimental deps -icu_casemap = ["dep:icu_casemap"] icu_compactdecimal = ["dep:icu_compactdecimal"] icu_displaynames = ["dep:icu_displaynames"] icu_relativetime = ["dep:icu_relativetime"] @@ -135,6 +134,6 @@ skip_feature_sets = [["use_icu4c"], ["use_wasm"]] skip_optional_dependencies = true # Always the experimental deps because we want to all-or-nothing them # and the nothing case is already tested in regular check CI -always_include_features = ["icu_casemap", "icu_compactdecimal", "icu_displaynames", "icu_relativetime"] +always_include_features = ["icu_compactdecimal", "icu_displaynames", "icu_relativetime"] # We have a *lot* of features here max_combination_size = 2 diff --git a/provider/datagen/src/registry.rs b/provider/datagen/src/registry.rs index ba4ee47a531..2cd4aa23f6e 100644 --- a/provider/datagen/src/registry.rs +++ b/provider/datagen/src/registry.rs @@ -139,9 +139,8 @@ registry!( icu_calendar::provider::JapaneseErasV1Marker = "calendar/japanese@1", icu_calendar::provider::JapaneseExtendedErasV1Marker = "calendar/japanext@1", icu_calendar::provider::WeekDataV1Marker = "datetime/week_data@1", - #[cfg(feature = "icu_casemap")] + #[cfg(any(all(), feature = "icu_casemap"))] icu_casemap::provider::CaseMapV1Marker = "props/casemap@1", - #[cfg(feature = "icu_casemap")] icu_casemap::provider::CaseMapUnfoldV1Marker = "props/casemap_unfold@1", #[cfg(any(all(), feature = "icu_collator"))] icu_collator::provider::CollationDataV1Marker = "collator/data@1", diff --git a/provider/datagen/src/transform/icuexport/mod.rs b/provider/datagen/src/transform/icuexport/mod.rs index 41d0133a394..13bfdb8e971 100644 --- a/provider/datagen/src/transform/icuexport/mod.rs +++ b/provider/datagen/src/transform/icuexport/mod.rs @@ -7,6 +7,5 @@ pub mod collator; pub mod normalizer; -#[cfg(feature = "icu_casemap")] pub mod ucase; pub mod uprops; diff --git a/provider/testdata/Cargo.toml b/provider/testdata/Cargo.toml index df0e49ab905..0cbe9f58d5a 100644 --- a/provider/testdata/Cargo.toml +++ b/provider/testdata/Cargo.toml @@ -46,7 +46,7 @@ zerovec = { version = "0.9.4", path = "../../utils/zerovec" } # databake options icu_calendar = { version = "1.2.0", path = "../../components/calendar", default-features = false, optional = true } -icu_casemap = { version = "0.7.1", path = "../../experimental/casemap", default-features = false, optional = true } +icu_casemap = { version = "1.2.0", path = "../../components/casemap", default-features = false, optional = true } icu_collator = { version = "1.2.0", path = "../../components/collator", default-features = false, optional = true } icu_compactdecimal = { version = "0.2.0", path = "../../experimental/compactdecimal", default-features = false, optional = true } icu_datetime = { version = "1.2.0", path = "../../components/datetime", default-features = false, optional = true } diff --git a/tools/depcheck/src/allowlist.rs b/tools/depcheck/src/allowlist.rs index 277e95a960e..513a8720ffa 100644 --- a/tools/depcheck/src/allowlist.rs +++ b/tools/depcheck/src/allowlist.rs @@ -10,6 +10,7 @@ pub const BASIC_RUNTIME_DEPS: &[&str] = &[ // ICU4X components "icu_calendar", + "icu_casemap", "icu_collator", "icu_collections", "icu_datetime", @@ -68,6 +69,7 @@ pub const EXTRA_SERDE_DEPS: &[&str] = &["deduplicating_array", "serde", "serde_d /// Dependencies allowed when opting in to compiled data pub const EXTRA_DATA_DEPS: &[&str] = &[ "icu_calendar_data", + "icu_casemap_data", "icu_collator_data", "icu_datetime_data", "icu_decimal_data", @@ -83,7 +85,6 @@ pub const EXTRA_DATA_DEPS: &[&str] = &[ /// Dependencies allowed when opting in to experimental code /// This will likely grow when we add experimental crates pub const EXTRA_EXPERIMENTAL_DEPS: &[&str] = &[ - "icu_casemap", "icu_displaynames", "icu_personnames", "icu_relativetime", @@ -94,7 +95,6 @@ pub const EXTRA_EXPERIMENTAL_DEPS: &[&str] = &[ /// Dependencies allowed when opting in to compiled data /// for experimental crates. pub const EXTRA_EXPERIMENTAL_DATA_DEPS: &[&str] = &[ - "icu_casemap_data", "icu_displaynames_data", "icu_relativetime_data", "icu_compactdecimal_data", diff --git a/tools/make/data.toml b/tools/make/data.toml index 23c2b0487bf..e1943f942d7 100644 --- a/tools/make/data.toml +++ b/tools/make/data.toml @@ -23,7 +23,7 @@ args = [ "test", "-p=icu_datagen", "--no-default-features", - "--features=provider_fs,use_wasm,rayon,icu_casemap,icu_compactdecimal,icu_displaynames,icu_relativetime", + "--features=provider_fs,use_wasm,rayon,icu_compactdecimal,icu_displaynames,icu_relativetime", "generate_json_and_verify_postcard", "--", "--nocapture" @@ -86,11 +86,11 @@ script = ''' exit_on_error true if array_is_empty ${@} - exec --fail-on-error cargo build -p icu_datagen --no-default-features --features rayon,provider_baked,bin,use_wasm,networking,icu_casemap,icu_displaynames,icu_relativetime,icu_compactdecimal --release + exec --fail-on-error cargo build -p icu_datagen --no-default-features --features rayon,provider_baked,bin,use_wasm,networking,icu_displaynames,icu_relativetime,icu_compactdecimal --release bin = set "target/release/icu4x-datagen" - components = array components/calendar components/collator components/datetime components/decimal components/list components/locid_transform components/normalizer components/plurals components/properties components/segmenter components/timezone experimental/casemap experimental/compactdecimal experimental/displaynames experimental/relativetime + components = array components/calendar components/casemap components/collator components/datetime components/decimal components/list components/locid_transform components/normalizer components/plurals components/properties components/segmenter components/timezone experimental/compactdecimal experimental/displaynames experimental/relativetime else - exec --fail-on-error cargo build -p icu_datagen --no-default-features --features rayon,provider_baked,bin,use_wasm,networking,icu_casemap,icu_displaynames,icu_relativetime,icu_compactdecimal + exec --fail-on-error cargo build -p icu_datagen --no-default-features --features rayon,provider_baked,bin,use_wasm,networking,icu_displaynames,icu_relativetime,icu_compactdecimal bin = set "target/debug/icu4x-datagen" components = set ${@} end diff --git a/tools/testdata-scripts/Cargo.toml b/tools/testdata-scripts/Cargo.toml index 623e0db1dc8..2f4017156d3 100644 --- a/tools/testdata-scripts/Cargo.toml +++ b/tools/testdata-scripts/Cargo.toml @@ -11,7 +11,7 @@ edition = "2021" [dependencies] crlify = { path = "../../utils/crlify" } databake = { path = "../../utils/databake" } -icu_datagen = { path = "../../provider/datagen", default-features = false, features = ["legacy_api", "networking", "icu_compactdecimal", "icu_relativetime", "icu_displaynames", "icu_casemap"] } +icu_datagen = { path = "../../provider/datagen", default-features = false, features = ["legacy_api", "networking", "icu_compactdecimal", "icu_relativetime", "icu_displaynames"] } icu_locid = { path = "../../components/locid", features = ["databake"] } icu_provider = { path = "../../provider/core" }