# Changelog ## icu4x 2.3.x Several crates have had patch releases in the 2.3 stream: - Components - (2.3.1) `icu` - Remove dev-dependency on unpublished crate `icu_host_info` (unicode-org#8404) - (0.6.2) `icu_codepointtrie_buider` - Fix `use_icu4c` build (unicode-org#8541) - (2.3.1) `icu_collator` - Fix panic when a contraction contracts a starter, does not contract a following non-starter, and the non-starter starts another contraction. Occurs in Burmese. (unicode-org#8380) - (2.3.1) `icu_locale` - Remove unnecessary dependencies on icu_pattern when `unstable` feature is not enabled (unicode-org#8397) - Data model and providers - (2.3.1) `icu_provider` - Improve performance of data loading that uses locale fallback (unicode-org#8406) - (2.3.1) `icu_provider_source` - Fix checksum on 32-bit systems (unicode-org#8401) - FFI - General - Upate to Diplomat 0.16.1 (unicode-org#8411) - (2.3.1) `icu_capi` - Add missing docs to properties (unicode-org#8407) - (2.3.2) `icu_capi` - Add missing stability annotations (unicode-org#8462) - (2.3.1) Dart - Add `Error` and `Exception` to classes/enums which are used as errors and exceptions (https://github.com/rust-diplomat/diplomat/pull/1220) (unicode-org#8411) - (2.3.2) Dart - Cache downloaded pre-built binaries (unicode-org#8426) - Add missing stability annotations (unicode-org#8462) - (2.3.1) NPM - Add validation to arguments to assure type correctness (https://github.com/rust-diplomat/diplomat/pull/902) (unicode-org#8411) - (2.3.2) NPM - Add missing stability annotations (unicode-org#8462) - Utils - (0.2.2) `databake-derive` - Update to syn@3 dependency (unicode-org#8293) - (0.8.3) `yoke-derive` - Update to syn@3 dependency (unicode-org#8293) - (0.8.4) `yoke-derive` - Declare MSRV - (0.1.8) `zerofrom-derive` - Update to syn@3 dependency (unicode-org#8293) - (0.11.5, 0.11.6) `zerovec-derive` - (0.11.5) Fix soundness issue around multi element buffer validation in ULE derives (unicode-org#8393) - (0.11.6) Fix when building with `MIRIFLAGS=-Zmiri-tree-borrows` (unicode-org#8391) - (0.11.8) `zerovec` - Fix length check in `impl ULE for [T; N]` (unicode-org#8400) ## icu4x 2.3 - Components - General - Updated data to TZDB 2026c (unicode-org#8200) - `icu_calendar` - Fix extended year calculations in Gregorian-like and Coptic-like calendars (unicode-org#7849) - Add `Julian` to `AnyCalendar` (unicode-org#7224) - New enum variants: `AnyCalendarKind::Julian`, `AnyCalendar::Julian` - Fix safety issue in `Japanese::try_new_with_buffer_provider` (unicode-org#8095) - Add `AnyCalendarKind::try_new` and deprecate `AnyCalendarKind::new`. The new version uses locale data to infer calendars from locales. (unicode-org#8102) - Deprecate `CalendarPreferences::resolve_calendar`. This method did not perform likely-subtags expansion. (unicode-org#8102) - `icu_casemapping` - Fix `TrailingCase::Unchanged` handling for Dutch (unicode-org#7863) - `icu_collator` - Add `CollatorBorrowed::new_root` (unicode-org#7893) - Fix a possible panic when generating a sort key for a collation that uses backward secondary level. (unicode-org#7927) - Fix generation of identical level sort keys containing the codepoint U+A000. (unicode-org#7928) - Fixed an issue where the emoji collation was not loading correctly (unicode-org#7989) - Tune the performance of sort key generation (unicode-org#7930) - Enforce more invariants in the `CollationSpecialPrimariesV1` data struct (unicode-org#7872) - `icu_collections` - Fix a bug in `CodePointInversionList::contains_set` (unicode-org#8121) - New trait implementation: `impl Hash for CodePointInversionList` (unicode-org#8282) - `icu_datetime` - Add unstable range formatter (unicode-org#8149) - New types: `DateRangeFormatter`, `FixedCalendarDateRangeFormatter`, `NoCalendarRangeFormatter`, `FormattedDateRange` - (Scaffolding) New associated type: `TypedDateDataMarkers::RangeSkel` (unicode-org#8173) - Support numbering system overrides for datetime patterns when found in data (unicode-org#7905) - Implement flexible day periods, i.e. the `B` pattern in hour field sets (unicode-org#7971) - Use the correct calendar even if the region is only implied by the language (i.e. `fa`) (unicode-org#8102) - Preserve zero minutes in MinuteOptional format for 24-hour hour cycles (unicode-org#8237) - Correctly implement numeric month fields for calendars with leap months (unicode-org#7986) - Correctly handle CLDR 48.2 data with "c" in the skeletons (unicode-org#7945) - `icu_decimal` - Fix integer overflow in UnsignedDecimal exponent parsing (unicode-org#8289) - `icu_experimental`: `0.5.0 -> 0.6.0` - `icu_experimental::currency` - Significant changes to APIs and data structs - Refactor `CurrencyFormatter` to be generic over `ValueRepresentation`: `pub struct CurrencyFormatter`. (unicode-org#8145) - Migrate the old short and narrow currency formatter to `CurrencyFormatter` with new `try_new_symbol` and `try_new_symbol_narrow` constructors (and their unstable/buffer variants), removing the old non-generic `try_new` constructors. (unicode-org#8145) - Migrated `LongCurrencyFormatter` to `CurrencyFormatter` with a `try_new_name` constructor. (unicode-org#8150) - Compact constructors (`try_new_compact_symbol`, `try_new_compact_symbol_narrow`, `try_new_compact_name`, `try_new_compact_long_symbol`, `try_new_compact_long_symbol_narrow`, `try_new_compact_long_name`) initialize `CurrencyFormatter` with `CompactDecimalFormatter`. (unicode-org#8189) - Added/renamed compact long constructors (). (unicode-org#8211) - Updated FFI / unstable macro wrappers, unit tests, and doctests across all 9 variants. (unicode-org#8211) - Introduce `try_new_code` constructors for explicit ISO code formatting across decimal and compact currency formatters. (unicode-org#8229) - Apply fraction precision and rounding uniformly across all currency formatters. (unicode-org#8169) - Extend `CurrencyFormatterOptions` with `usage: CurrencyUsage` (`Standard` default, `Accounting`). (unicode-org#8187) - Added `CurrencyFormatter::try_new_no_currency` and `try_new_no_currency_unstable` constructors and `CurrencyNoCurrencyPatternsV1` data marker. (unicode-org#8275) - Fixes locales whose negative subpattern places the sign somewhere other than the front, e.g. de-CH (¤ #,##0.00;¤-#,##0.00) now formats -12345.67 CHF as CHF-12'345.67 instead of -CHF 12'345.67. (unicode-org#8265) - `icu_experimental::displaynames` - `single` module moved to `icu_locale::names`; changes are listed there - `icu_experimental::unicodeset` - Moved to `icu_properties`; changes are listed there - `icu_experimental::units` - The `Convertibles` trait was completely overhauled to allow for more accurate calculations (unicode-org#8073) - `Convertibles`s are now passed by value, and for `Ratio` the `Convertible` impl is now on the reference (unicode-org#8073) - Remove `UnitsFormatter`, use `CategorizedUnitsFormatter` (unicode-org#8236) - `icu_locale` - `LocaleExpander::maximize` no longer maximizes `und` to `en-Latn-US` (unicode-org#8110) - Fix an issue in `LocaleDirectionality` for unknown languages (unicode-org#7918) - Fix `LocaleExpander::maximize()` to strip placeholder `Zzzz`/`ZZ` subtags before matching, per UTS #35 (unicode-org#8240) - Fix fallback with language-likely script but region-unlikely script, which fixes data loading and generation behavior for locales including `sr-Cyrl-ME` and `zh-Hans-TW` (unicode-org#7857) - Allow digits as extension singletons as allowed by BCP47, e.g. `-1-foobar` (unicode-org#8019) - `icu_locale::names` - New unstable module `icu_locale::names`, originally part of `icu_experimental::displaynames` (unicode-org#8338) - Add `VariantDisplayName` and `VariantDisplayNameBorrowed` (unicode-org#8085) - Add `LanguageIdentifierDisplayName` and `LanguageIdentifierDisplayNameBorrowed` for formatting language display names. (unicode-org#8082) - Introduce dedicated `LanguageIdentifierDisplayNameOptions` struct (unicode-org#8135) - New types: `LanguageIdentifierDisplayNameOptions` - Implement menu style for `LanguageIdentifierDisplayName` (unicode-org#8216) - Implement long and short lengths (unicode-org#8219) - Refactor single display name constructors into Tiny, Light, and Heavy data tiers (unicode-org#8233) - Constructors on `RegionDisplayNameOwned`, `ScriptDisplayNameOwned`, `VariantDisplayNameOwned`, and `LanguageIdentifierDisplayNameOwned` are overhauled - Functionality for automatic fallback to the BCP-47 code (unicode-org#8132, unicode-org#8345) - New types: `LanguageIdentifierNameFallbackError` - Trait implementations: - `LanguageIdentifierDisplayName` implements `TryWriteable`, `Writeable`, and `Display` directly using `writeable::impl_delegate` macros over an internal `LossyWrap` field. - Removed `Writeable` and `TryWriteable` from `LanguageIdentifierDisplayNameOwned` (use `.as_borrowed()` to format). - Split singular display names into owned and borrowed types with `as_borrowed()` fns (unicode-org#8006) - `icu_locale_core` - Add `AsRef` impls (unicode-org#7923) - New impls: `AsRef for Locale`, `AsRef for LanguageIdentifier` - `preferences` types now implement `databake` (feature-gated) (unicode-org#8102) - Make `DataLocale::try_from_[str|utf8]` const (unicode-org#8305) - Add `data_locale!` macro (unicode-org#8305) - Added `CurrencyType::iso_code()` and `currency!` macro. (unicode-org#8314) - `icu_locale_fallback` - New crate splitting fallback functionality out of `icu_locale`, including: (unicode-org#8245) - Struct `LocaleFallbacker` - Struct `LocaleFallbackerBorrowed` - Struct `LocaleFallbackerWithConfig` - Struct `LocaleFallbackIterator` - New fn `LocaleFallbackerWithConfig::config` (unicode-org#8305) - `icu_pattern`: `0.4.2` -> `0.5.0` - (Breaking, Scaffolding) Remove public associated Error type from sealed trait PatternBackend (unicode-org#8122) - Add `TryWrap` for bubbling through TryWriteable errors (unicode-org#8123, unicode-org#8364) - Add placeholder extraction logic (unnicode-org#8074) - New struct `PlaceholderMatches` - New trait `ExtractionBackend` trait with impls for `SinglePlaceholder` and `DoublePlaceholder` - New method`Pattern::extract_placeholders` - Manually implement `writeable_length_hint` (unicode-org#8193) - `icu_plurals` - Add `PluralElements::get` (unicode-org#8198) - Add generic `ZeroFrom` implementation for `PluralElements` (unicode-org#7999) - New trait implementation: `impl<'a, T, C> ZeroFrom<'a, PluralElements> for PluralElements` - Fix potential overflow in `PluralOperands::from_significand_and_exponent` (unicode-org#8285) - `icu_properties` - Add experimental UTS#35 Unicode set parsing, moved from `icu_experimental` (unicode-org#7935) - Add support for `:EastAsianWidth=:` to unicode set parser (unicode-org#7896) - Deprecate some non-Unicode properties (unicode-org#7973) - Deprecate `to_icu4c_value`/`from_icu4c_value` on enumerated properties (unicode-org#7997) - Expose `CanonicalCombiningClass`' integer field (unicode-org#7997) - Deprecate `HangulSyllableType::LeadingVowelSyllable`, `HangulSyllableType::LeadingVowelTrailingSyllable`, `Script::Ethiopian`, and `Script::Nastaliq` in favor of names matching their official Unicode names (unicode-org#8016) - New associated constants: `HangulSyllableType::LVSyllable`, `HangulSyllableType::LVTSyllable`, `Script::Ethiopic`, `Script::ArabicNastaliq` - Added `Script` constants for some non-Unicode scripts (unicode-org#8017) - Add enumerated property constants for short names and aliases (i.e. `LineBreak::HH`) (unicode-org#8040) - `icu_segmenter` - Add unstable `LineSegmenter::new_17_for_non_complex_scripts`, implementing Unicode 17 (unicode-org#8041) - Add experimental `_neo_` constructors (unicode-org#7962) - Align word segmenter behaviour with ICU4C and UAX#29 (unicode-org#7952) - Use grapheme segmentation for `LineBreakStrictness:Anywhere` (unicode-org#7941) - Fix a bug in loose line breaking (unicode-org#8111) - Fix rewinding behavior in dictionary segmenter (unicode-org#8195) - Add `WordSegmenter[Borrowed]::load_auto[_unstable|_with_buffer_provider]` to load the complex segmentation data that is loaded by `WordSegmenter::new_auto` (unicode-org#8299) - (Experimental) Add `thadaboost` models to the test adaboost code, and add adaboost to the unstable provider module (unicode-org#7805) - Data model and providers - `icu4x-datagen` - Add `--alt-variant` CLI flag to enable alt variants during datagen. (unicode-org#8025) - `icu_provider` - Add type `DataPayloadOr` for more efficient stack representation of data, added as internal in 1.5 (unicode-org#8163, unicode-org#8346) - Allow slashes in DataMarkerAttributes (unicode-org#7890) - `icu_provider_fs` - Add defense-in-depth against path traversal. (unicode-org#7887) - `icu_provider_source` - Compute properties directly from the `unicode` data source, instead of from `icuexport` (unicode-org#7904) - Deprecate the Unihan and UCD data sources and replace with RSCD (unicode-org#7882, unicode-org#8210) - New items: `SourceDataProvider::with_unicode_rscd_for_tag()`, `SourceDataProvider::with_unicode_rscd()`, `SourceDataProvider::TESTED_UNICODE_TAG`, `SourceDataProvider::is_missing_rscd_error()`, (unicode-org#8210) - Deprecated `SourceDataProvider::with_ucd_for_tag()`, `SourceDataProvider::with_unihan_for_tag()`, `SourceDataProvider::with_ucd()`, `SourceDataProvider::with_unihan()`, `SourceDataProvider::TESTED_UCD_TAG`, , `SourceDataProvider::is_missing_ucd_error()` (unicode-org#8210) - Add `with_alt_variants` to `SourceDataProvider` to support alt variants. (unicode-org#8025) - New enum: `AltVariantKind` - New method: `SourceDataProvider::with_alt_variants` - Warn on unknown alt variants in display names (unicode-org#8010) - Added warnings for unknown `alt` variants in `language.rs`, `script.rs`, and `variant.rs`. - Ignored `-alt-variant` and `-alt-chagos` in `region.rs`. - FFI - General - Fix an issue in JS bindings where enums in objects were not parsed correctly (unicode-org#7885) - Add bindings for `icu_locale::names` (unicode-org#8341) - Add bindings for date range formattimg (unicode-org#8318) - Dart, Kotlin: use the `Script` type on `ScriptExtension` APIs (unicode-org#7996) - Dart - Update supported Dart toolchain for `record_use` to `3.13.0-215.0.dev` (unicode-org#8119) - In the build hook, skip building if code assets are disabled. (unicode-org#8183) - Add `libm` as a library input in the Dart linking script for Android. (unicode-org#8199) - Use stable record-use and remove enable-experiment flag. (unicode-org#8371) - Utils - `ixdtf`: `0.6.5 -> 0.6.6` - Reject trailing input after annotations in `YearMonth` and `MonthDay` parsing (unicode-org#8294) - `litemap`: `0.8.2 -> 0.8.3` - Make return types of `LiteMap` iter methods (`iter`, `iter_mut`, `values`, `keys`) concrete: (unicode-org#8072) - New types: `ValuesIter`, `KeysIter`, implements relevant traits, returned by `values` and `keys` respectively. - Changed: The return types of the aforementioned methods go from an `impl DoubleEndedIterator` to concrete types such as `S::KeyValueIter`, `S::KeyValueIterMut` or the aforementioned new types. - `potential_utf`: `0.1.5 -> 0.1.6` - Use `Box::from_raw()` instead of `transmute` for converting unsized transparent boxes. (unicode-org#7871) - `resb`: `0.1.2 -> 0.2.0` - Add defense-in-depth around checked multiplication. (unicode-org#7887) - (Breaking) APIs produce a typed `I32Pair` instead of `(i32, i32)` for maximum layout soundness (unicode-org#8008) - (Breaking) `cast_bytes_to_slice` replaced with type-specific cast functions (unicode-org#8008) - `tinystr`: `0.8.3 -> 0.8.4` - Add `UnvalidatedTinyAsciiStr::DEFAULT` (unicode-org#8225) - `writeable`: `0.6.3 -> 0.6.4` - Add `TryWriteable::try_writeable_borrow` (unicode-org#8192) - New `impl_writeable_delegate!` macro to delegate `Writeable` implementations (unicode-org#8139) - New `impl_try_writeable_delegate!` macro to delegate `TryWriteable` implementations (unicode-org#8139) - New struct `writeable::adapters::Replace` (unicode-org#8238) - New concrete fn LossyWrap::to_string (unicode-org#8140) - Support for `where` clause in `impl_display_with_writeable!` (unicode-org#8139) - Add standard derives and `repr(transparent)` to `LossyWrap` (unicode-org#8132) - `LossyWrap` now derives `Clone`, `Copy`, `PartialEq`, `Eq`, `PartialOrd`, `Ord`, and `Hash`, and is marked `#[repr(transparent)]`, enabling its use inside `Copy` structs and with delegate macros. - Added error mapping fn to `impl_try_writeable_delegate!` - impl TryWriteable on references (unicode-org#8109) - impl TryWriteable on Either (unicode-org#8109) - `zerofrom`: `0.1.7 -> 0.1.8` - Internal changes only (unicode-org#7958) - `zerotrie`: `0.2.4 -> 0.2.5` - new functions `ZeroAsciiIgnoreCaseTrie::get_with_write_fn`, `ZeroTrieZimpleAscii::get_with_write_fn` (unicode-org#8242) - add `ZeroTrieSimpleAsciiCursor::into_suffix_trie()` (unicode-org#8224) - `zerovec`: `0.11.6 -> 0.11.7` - Fix minor soundness issue around unchecked multiplication, add defense in depth against other overflow situations. (unicode-org#7887) - New trait implementations: `impl Hash for ZeroVec, ZeroSlice` (unicode-org#8282) - Relax bounds on PartialEq, Eq, and Hash impls, delegating to the bytes comparison (long required by the ULE impl) (unicode-org#8287) - `zerovec_derive`: `0.11.3 -> 0.11.4` - Support sparse enums in `zerovec::make_ule`. (unicode-org#7940) - Update to syn@3 dependency (unicode-org#8293) ## icu4x 2.2.x Several crates have had patch releases in the 2.2 stream: - Components - (2.2.1) `icu_calendar` - Fix extended year calculations in Gregorian-like and Coptic-like calendars (unicode-org#7849) - (2.2.1) `icu_collator` - Fix panic when using `AlternateHandling::Shifted` with `MaxVariable::Currency` (off-by-one in special primaries validation). (unicode-org#8081) - Utils - (0.8.3) `yoke` - Fix soundness of Send/Sync impls on CartableOptionPointer (unicode-org#8029) - Update to 2024 edition where possible (unicode-org#7878) ## icu4x 2.2 - Components - General - Use HTTPS links in docs (unicode-org#7212) - Update MSRV to 1.86 (unicode-org#7576) - Updated to CLDR 48.2 (unicode-org#7792) - Replace `experimental` features with `unstable` features (unicode-org#7566) - Add categories and keywords to Cargo.toml for all components (unicode-org#7737) - `icu_calendar` - Add `Date::try_new`, which replaces `Date::try_new_from_codes`, and takes typed year/month values. (unicode-org#7773, unicode-org#7764) - New methods: `Date::try_new` (and primarily-internal `Calendar::new_date`) - New types: `InputYear`, `DateNewError` - Handle possible `Overflow` values on individual calendars (unicode-org#7795) - New `Date::try_from_fields` API for fully general date construction from various choices of year and month values (unicode-org#7798) - New methods: `Date::try_from_fields()` - New types: `DateFields`, `DateFromFieldsOptions`, `Overflow`, `MissingFieldsStrategy`, `DateFromFieldsError` - New associated method: `Calendar::from_fields()` - New Date arithmetic APIs for adding and subtracting dates (unicode-org#7798, unicode-org#7355, unicode-org#7257) - New methods: `Date::try_add_with_options`, `Date::try_added_with_options`, `Date::try_until_with_options` - New types: `DateDuration`, `DateAddOptions`, `DateDifferenceOptions`, `DateDurationUnit`, `DateDurationParseError`, `DateAddError`, `MismatchedCalendarError` - New associated items: `Calendar::add`, `Calendar::until`, `Calendar::DateCompatibilityError` - Introduce a new `Month` type, preferred over using month codes (unicode-org#7147, unicode-org#7756) - New type: `Month` - New method: `MonthInfo::to_input()` - Introduce year/date ranges to all APIs, documented on the APIs themselves. `Date` now has a fundamental range (ISO years between ±999,999), and most constructors enforce a stricter range of ±9999 years for input years. (unicode-org#7676, unicode-org#7062, unicode-org#7629, unicode-org#7753, unicode-org#7219, unicode-org#7227) - Add constructors with `Month` for lunisolar calendars (unicode-org#7485) - New methods: `Date::try_new_korean_traditional()`, `Date::try_new_chinese_traditional()`, `Date::try_new_hebrew_v2()` - Expose `LeapStatus` on `MonthInfo` (unicode-org#7667) - New method: `MonthInfo::leap_status()` - New enum: `LeapStatus` - (Unstable) Integrate with `chrono`, `jiff`, and `time` (unicode-org#7617, unicode-org#7711) - New impls: `From`, `From`, `From` for `Date` - Replace `Date::day_of_week` by `Date::weekday` (unicode-org#7288) - New method: `Date::weekday()` - Deprecate `Date::new_from_iso`/`Date::to_iso` (unicode-org#7287) - Deprecate `Date::extended_year()` (use `Date::year().extended_year()`) (unicode-org#7289) - Remove `YearInfo: PartialEq` bound (unicode-org#7743) - Start producing Meiji era only after Meiji 6 (unicode-org#7503) - Correctly produce `ethioaa` calendars from `CalendarAlgorithm` (unicode-org#7321) - Respect `-u-rg` in calendar resolution (unicode-org#7376) - Remove `Hijri` simulation code, retaining hardcoded data, falling back to Tabular for non-modern dates (unicode-org#7301, unicode-org#7342, unicode-org#7455) - Clients wishing to use the Reingold simulation are encouraged to write their own implementation of `hijri::Rules` using code from `calendrical_calculations`. - Replace `JapaneseExtended` with reexport of `Japanese`, since CLDR no longer includes pre-Meiji eras. (unicode-org#7322) - Reject date strings with invalid calendar annotations (unicode-org#7626) - Improve validation in scenarios where you may try comparing dates from different calendars. `PartialEq` and `PartialOrd` on two different `HijriTabular` calendars will now produce `None`. (unicode-org#7734) - Improve efficiency of `until()` by starting year/month calculations at a guaranteed minimum bound (unicode-org#7682) - Speed up `until` year and month field handling by 75% on average by optimizing `surpasses` calculation (unicode-org#7745) - Optimize the stack size of `Date` types (unicode-org#7220) - Optimize Hebrew and Julian calendars (unicode-org#7213) - Optimize day/week diffing to use RDs (unicode-org#7308) - Optimize `until` month and day calculation performance - Optimize `Japanese` data storage, making `Japanese` no longer need to persist loaded data. (unicode-org#7323) - `AnyCalendar` cleanups and docs fixes (unicode-org#7223, unicode-org#7225) - Improve Hijri docs (unicode-org#7330, unicode-org#7332, unicode-org#7333) - `icu_casemap` - General changes only - `icu_collections` - Add `CodePointInversionListAndStringList::contains_utf8` (unicode-org#7363) - `icu_codepointtrie_builder`: `0.5.1 -> 0.6.0` - (Breaking) Actually make `CodePointTrieBuilder` a builder type. This API has changed significantly, please look at the docs for the new API. (unicode-org#7581) - Remove `serde` dep from `icu_codepointtrie_builder` (unicode-org#7298) - Add more ways of specifying code point trie data. (unicode-org#7541) - New variants: `CodePointTrieBuilderData::ByCodePoint`, `CodePointTrieBuilderData::Map` - New trait impl: `Debug for CodePointTrieBuilderData` - Optimize by using `umutablecptrie_setRange` (unicode-org#7584) - `icu_collator` - Document considerations related to lowering the collation strength from the default (unicode-org#6662) - (Optimization) Avoid tagging Hangul syllable in collation data (unicode-org#7540) - Make skipping zeros in the numeric mode bugwards-compatible with ICU4C fixing a panic (unicode-org#7835) - `icu_datetime` - Add AM/PM getters on `FixedCalendarDateTimeNames` (unicode-org#7127) - New methods: `FixedCalendarDateTimeNames::get_am()`, `FixedCalendarDateTimeNames::get_pm()` - (Unstable) Integrate with `chrono`, `jiff`, and `time` (unicode-org#7617) - New impls: Various scaffolding traits on `chrono::NaiveDate`, `jiff::civil::Date`, and `time::Date`, making them formattable. - Support formatting without era field (unicode-org#7606) - New variant: `YearStyle::NoEra` - Allow formatting `Weekday` (unicode-org#7719) - New trait impls: `InSameCalendar` and `ConvertCalendar` on `UtcOffset` and `Weekday` - Use month number instead of ordinal month in formatting (unicode-org#7574) - Don't expose CLDR's Hebrew month numbering during formatting (unicode-org#7728) - Add some support for `U` (cyclic year) datetime symbol (unicode-org#7328) - Add support for `Clock12` and `Clock24` hour cycles (unicode-org#7414) - (Unstable) Add re-export of `ZonedTime` (unicode-org#7842) - New re-export: `input::ZonedTime` - Fix error handling for `FieldSetBuilder` (unicode-org#7245) - Use appropriate date/time/zone glue patterns based on `appendItems` (unicode-org#7416,unicode-org#7755) - Optimize `Japanese` era storage, cutting down era name size by 20kb. (unicode-org#7323) - Use `YearNames::FixedEras` for Japanese (unicode-org#7700) - Reduce data size by storing leap patterns where possible (unicode-org#7666) - Assorted improvements to `icu_datetime` docs (unicode-org#7244) - Remove old datetime data structs (unicode-org#7205) - `icu_decimal` - Move `CompactDecimalFormatter` (experimental) to this crate (unicode-org#7565) - (Experimental) Consider numbering system in compact formatter (unicode-org#7543) - `icu_experimental`: `0.4.0 -> 0.5.0` - `compactdecimal` - Don't hallucinate patterns (unicode-org#7387) - Pack compact decimal data (unicode-org#7388) - Round fractional compact decimals to two significant digits (unicode-org#7389) - `currency` - Add currency fractions provider (unicode-org#7278) - Update comments for currency data structures to enhance clarity (unicode-org#7405) - Don't produce empty compact currency data (unicode-org#7494) - `dimension` - `displaynames` - Adds new data markers for display names using attributes for better slicing (unicode-org#7692) - Add types for loading a single display name - New type: `RegionDisplayName` (unicode-org#7697) - New type: `ScriptDisplayName` (unicode-org#7819) - Split formatting types into `multi` and `single` modules; seeking feedback (unicode-org#7826) - Moved to `displaynames::multi`: `LanguageDisplayNames`, `LocaleDisplayNamesFormatter`, `RegionDisplayNames`, `ScriptDisplayNames`, `VariantDisplayNames` - Introduced in `displaynames::single`: `RegionDisplayName`, `ScriptDisplayName` - `duration` - Export more needed types (unicode-org#7784) - Newly public types: `ValidatedDurationFormatterOptions`, `DurationFormatterOptionsError` - `measure` - `relativetime` - `transliterator` - Fix UB caused in partially-written unwind states by using checked UTF-8 conversion instead of `from_utf8_unchecked` (unicode-org#7781) - `units` - Correct region extraction for categorized display names (#7421) - `icu` - Add example for measuring `Date::try_from_fields` code size (unicode-org#7297) - `icu_list` - General changes only - `icu_locale` - Add docs discouraging direct conversion from `Locale` to `DataLocale` for locale fallback (unicode-org#7348) - `icu_locale_core` - (Macro-breaking) The `struct_keyword!` macro was changed to operate on references for conversions. This API is mostly used internally by ICU4X. (unicode-org#7361) - Fix regional override `-u-rg` (unicode-org#7337) and regional subdivision `-u-sd` (unicode-org#7341) to fix region-priority data loading in other components - Add `From<&Value>` for struct preferences (unicode-org#7361) - New trait impls: `From<&Value>` on all structs under `icu_locale_core::preferences::extensions::unicode` - Add `LocalePreferences::from_locale_strict` (unicode-org#7377) - Add locale variant mutation APIs (unicode-org#7519) - New methods: `Variants::push()`, `Variants::remove()` - Match preferences on full value. This removes fallback behavior from e.g. `u-ca-gregory-foobar` to `-u-ca-gregory`. See [CLDR-19229](https://unicode-org.atlassian.net/browse/CLDR-19229). (unicode-org#7477) - Disallow `true` in multi-level preference values (unicode-org#7471, unicode-org#7476) - Deprecate `LanguagePreferences` field accessors (unicode-org#7401) - Correctly parse `-u-ca-ethiopic-amete-alem` alias (#7413) - Add parsing for `-u-hc-c12` and `-u-hc-c24` (unicode-org#7414) - Fix `LanguageIdentifier::normalize_utf8` example (unicode-org#7372) - Use better types in `LocalePreferences` (unicode-org#7360) - Add better docs on the relationship between `Locale` and `DataLocale` (unicode-org#7382) - `icu_normalizer` - Move `harfbuzz-traits` implementations into component crates (unicode-org#7200) - Expose the UTS 46 virama check using UTS 46 data (unicode-org#7507) - `icu_pattern`: `0.4.1 -> 0.4.2` - Create `SinglePlaceholderPattern::PASS_THROUGH` (unicode-org#7393) - New associated constant: `SinglePlaceholderPattern::PASS_THROUGH` - `icu_plurals` - `FourBitMetadata` should be checked against `0x10` or `0x0F`, not `0x80` (unicode-org#7395) - Fix overflow in `PluralOperands` constructor (#7425) - Handle large-magnitude numbers being converted to `PluralOperands` (unicode-org#7502) - `icu_properties` - Add buffer provider constructors for all property APIs (unicode-org#7384) - New methods: `CodePointMapData::try_new_with_buffer_provider()`, `CodePointSetData::try_new_with_buffer_provider()`, `EmojiSetData::try_new_with_buffer_provider()` - Add enumerated property `Numeric_Type` (unicode-org#7157) - New type: `NumericType` - Add enumerated property `Joining_Group` (unicode-org#7293) - New type: `JoiningGroup` - Add missing convenience API for `Basic_Emoji` and `EmojiSet` (unicode-org#7358) - New methods: `EmojiSet::for_char()`, `::for_str()` - Stabilise `IndicConjunctBreak` (unicode-org#7280) - Constify `PropertyNamesLong`/`PropertyNamesShort`/`PropertyParser` constructors (unicode-orgunicode-org#7294) - Fix script values (unicode-org#7269) - Move `harfbuzz-traits` implementations into component crates (unicode-org#7200) - Add conversions for `unicode_bidi::BidiClass` (unicode-org#7272) - New trait impls: `From for BidiClass` and `From for unicode_bidi::BidiClass` - Add conversions for properties/locale scripts (unicode-org#7270) - New trait impls: `From