Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump ICU4X to 1.5 and cleanup Intl #3868

Merged
merged 1 commit into from
May 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,407 changes: 283 additions & 1,124 deletions Cargo.lock

Large diffs are not rendered by default.

46 changes: 23 additions & 23 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ thin-vec = "0.2.13"
time = {version = "0.3.36", default-features = false, features = ["local-offset", "large-dates", "wasm-bindgen", "parsing", "formatting", "macros"]}
tinystr = "0.7.5"
log = "0.4.21"
simple_logger = "4.3.3"
simple_logger = "5.0.0"
cargo_metadata = "0.18.1"
trybuild = "1.0.95"
rayon = "1.10.0"
Expand Down Expand Up @@ -107,15 +107,15 @@ tap = "1.0.1"
thiserror = "1.0.60"
dashmap = "5.5.3"
num_enum = "0.7.2"
itertools = { version = "0.12.1", default-features = false }
itertools = { version = "0.13.0", default-features = false }
portable-atomic = "1.6.0"
bytemuck = { version = "1.15.0", default-features = false }
arrayvec = "0.7.4"
intrusive-collections = "0.9.6"
cfg-if = "1.0.0"
either = "1.12.0"
sys-locale = "0.3.1"
temporal_rs = "0.0.2"
temporal_rs = { git = "https://github.com/boa-dev/temporal.git", rev = "61a05fbb7c72353deda72a3df0e6887d65b840d2" }
web-time = "1.1.0"
criterion = "0.5.1"
float-cmp = "0.9.0"
Expand All @@ -125,26 +125,26 @@ winapi = { version = "0.3.9", default-features = false }

# ICU4X

icu_provider = { version = "~1.4.0", default-features = false }
icu_locid = { version = "~1.4.0", default-features = false }
icu_locid_transform = { version = "~1.4.0", default-features = false }
icu_datetime = { version = "~1.4.0", default-features = false }
icu_calendar = { version = "~1.4.0", default-features = false }
icu_collator = { version = "~1.4.0", default-features = false }
icu_plurals = { version = "~1.4.0", default-features = false }
icu_list = { version = "~1.4.0", default-features = false }
icu_casemap = { version = "~1.4.0", default-features = false }
icu_segmenter = { version = "~1.4.0", default-features = false }
icu_datagen = { version = "~1.4.1", default-features = false }
icu_provider_adapters = { version = "~1.4.0", default-features = false }
icu_provider_blob = { version = "~1.4.0", default-features = false }
icu_properties = { version = "~1.4.1", default-features = true }
icu_normalizer = { version = "~1.4.2", default-features = false }
icu_decimal = { version = "~1.4.0", default-features = false }
writeable = "~0.5.4"
yoke = "~0.7.3"
zerofrom = "~0.1.3"
fixed_decimal = "~0.5.5"
icu_provider = { version = "~1.5.0", default-features = false }
icu_locid = { version = "~1.5.0", default-features = false }
icu_locid_transform = { version = "~1.5.0", default-features = false }
icu_datetime = { version = "~1.5.0", default-features = false }
icu_calendar = { version = "~1.5.0", default-features = false }
icu_collator = { version = "~1.5.0", default-features = false }
icu_plurals = { version = "~1.5.0", default-features = false }
icu_list = { version = "~1.5.0", default-features = false }
icu_casemap = { version = "~1.5.0", default-features = false }
icu_segmenter = { version = "~1.5.0", default-features = false }
icu_datagen = { version = "~1.5.0", default-features = false }
icu_provider_adapters = { version = "~1.5.0", default-features = false }
icu_provider_blob = { version = "~1.5.0", default-features = false }
icu_properties = { version = "~1.5.0", default-features = true }
icu_normalizer = { version = "~1.5.0", default-features = false }
icu_decimal = { version = "~1.5.0", default-features = false }
writeable = "~0.5.5"
yoke = "~0.7.4"
zerofrom = "~0.1.4"
fixed_decimal = "~0.5.6"

[workspace.metadata.workspaces]
allow_branch = "main"
Expand Down
1 change: 1 addition & 0 deletions core/engine/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ cfg-if.workspace = true
time.workspace = true
hashbrown.workspace = true
either = { workspace = true, optional = true }
static_assertions.workspace = true

# intl deps
boa_icu_provider = { workspace = true, features = ["std"], optional = true }
Expand Down
15 changes: 7 additions & 8 deletions core/engine/src/builtins/intl/collator/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ use boa_gc::{custom_trace, Finalize, Trace};
use boa_macros::js_str;
use boa_profiler::Profiler;
use icu_collator::{
provider::CollationMetadataV1Marker, AlternateHandling, CaseFirst, Collator as NativeCollator,
MaxVariable, Numeric,
provider::CollationMetadataV1Marker, AlternateHandling, CaseFirst, MaxVariable, Numeric,
};

use icu_locid::{
Expand Down Expand Up @@ -35,7 +34,7 @@ use crate::{
};

use super::{
locale::{canonicalize_locale_list, resolve_locale, supported_locales, validate_extension},
locale::{canonicalize_locale_list, filter_locales, resolve_locale, validate_extension},
options::{coerce_options_to_object, IntlOptions},
Service,
};
Expand All @@ -53,7 +52,7 @@ pub(crate) struct Collator {
usage: Usage,
sensitivity: Sensitivity,
ignore_punctuation: bool,
collator: NativeCollator,
collator: icu_collator::Collator,
bound_compare: Option<JsFunction>,
}

Expand Down Expand Up @@ -277,7 +276,7 @@ impl BuiltInConstructor for Collator {
// 18. Let relevantExtensionKeys be %Collator%.[[RelevantExtensionKeys]].
// 19. Let r be ResolveLocale(%Collator%.[[AvailableLocales]], requestedLocales, opt, relevantExtensionKeys, localeData).
let mut locale = resolve_locale::<Self>(
&requested_locales,
requested_locales,
&mut intl_options,
context.intl_provider(),
);
Expand Down Expand Up @@ -337,7 +336,7 @@ impl BuiltInConstructor for Collator {
.unzip();

let collator =
NativeCollator::try_new_unstable(context.intl_provider(), &collator_locale, {
icu_collator::Collator::try_new_unstable(context.intl_provider(), &collator_locale, {
let mut options = icu_collator::CollatorOptions::new();
options.strength = strength;
options.case_level = case_level;
Expand Down Expand Up @@ -395,8 +394,8 @@ impl Collator {
// 2. Let requestedLocales be ? CanonicalizeLocaleList(locales).
let requested_locales = canonicalize_locale_list(locales, context)?;

// 3. Return ? SupportedLocales(availableLocales, requestedLocales, options).
supported_locales::<<Self as Service>::LangMarker>(&requested_locales, options, context)
// 3. Return ? FilterLocales(availableLocales, requestedLocales, options).
filter_locales::<<Self as Service>::LangMarker>(requested_locales, options, context)
.map(JsValue::from)
}

Expand Down
8 changes: 4 additions & 4 deletions core/engine/src/builtins/intl/list_format/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use crate::{
};

use super::{
locale::{canonicalize_locale_list, resolve_locale, supported_locales},
locale::{canonicalize_locale_list, filter_locales, resolve_locale},
options::IntlOptions,
Service,
};
Expand Down Expand Up @@ -122,7 +122,7 @@ impl BuiltInConstructor for ListFormat {
// 9. Let r be ResolveLocale(%ListFormat%.[[AvailableLocales]], requestedLocales, opt, %ListFormat%.[[RelevantExtensionKeys]], localeData).
// 10. Set listFormat.[[Locale]] to r.[[locale]].
let locale = resolve_locale::<Self>(
&requested_locales,
requested_locales,
&mut IntlOptions {
matcher,
..Default::default()
Expand Down Expand Up @@ -204,8 +204,8 @@ impl ListFormat {
// 2. Let requestedLocales be ? CanonicalizeLocaleList(locales).
let requested_locales = canonicalize_locale_list(locales, context)?;

// 3. Return ? SupportedLocales(availableLocales, requestedLocales, options).
supported_locales::<<Self as Service>::LangMarker>(&requested_locales, options, context)
// 3. Return ? FilterLocales(availableLocales, requestedLocales, options).
filter_locales::<<Self as Service>::LangMarker>(requested_locales, options, context)
.map(JsValue::from)
}

Expand Down
2 changes: 1 addition & 1 deletion core/engine/src/builtins/intl/locale/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use icu_locid::{
extensions::unicode::Value, extensions_unicode_key as key, extensions_unicode_value as value,
};

#[cfg(test)]
#[cfg(all(test, feature = "intl_bundled"))]
mod tests;

mod utils;
Expand Down
17 changes: 5 additions & 12 deletions core/engine/src/builtins/intl/locale/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use icu_provider::{DataLocale, DataProvider, DataRequest, DataRequestMetadata};

use crate::{
builtins::intl::{
locale::{best_locale_for_provider, default_locale, resolve_locale},
locale::{default_locale, resolve_locale},
options::{IntlOptions, LocaleMatcher},
Service,
},
Expand Down Expand Up @@ -88,7 +88,7 @@ fn locale_resolution() {
hc: Some(HourCycle::H11),
},
};
let locale = resolve_locale::<TestService>(&[], &mut options, &provider);
let locale = resolve_locale::<TestService>([], &mut options, &provider);
assert_eq!(locale, default);

// test best fit
Expand All @@ -99,22 +99,15 @@ fn locale_resolution() {
},
};

let locale = resolve_locale::<TestService>(&[], &mut options, &provider);
let best = best_locale_for_provider::<<TestService as Service>::LangMarker>(
default.id.clone(),
&provider,
)
.unwrap();
let mut best = Locale::from(best);
best.extensions = locale.extensions.clone();
assert_eq!(locale, best);
let locale = resolve_locale::<TestService>([], &mut options, &provider);
assert_eq!(locale, default);

// requested: [es-ES]
let mut options = IntlOptions {
matcher: LocaleMatcher::Lookup,
service_options: TestOptions { hc: None },
};

let locale = resolve_locale::<TestService>(&[locale!("es-AR")], &mut options, &provider);
let locale = resolve_locale::<TestService>([locale!("es-AR")], &mut options, &provider);
assert_eq!(locale, "es-u-hc-h23".parse().unwrap());
}
Loading
Loading