Skip to content

Commit

Permalink
Bump ICU4X to 1.5 and cleanup Intl
Browse files Browse the repository at this point in the history
  • Loading branch information
jedel1043 committed May 29, 2024
1 parent fd1a348 commit b7bd7a1
Show file tree
Hide file tree
Showing 19 changed files with 634 additions and 1,593 deletions.
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

0 comments on commit b7bd7a1

Please sign in to comment.