icu4x 2.1.0-dev.1
icu4x: ^2.1.0-dev.1 copied to clipboard
Dart bindings for the Rust `icu` internationalization crate.
Changelog #
Unreleased #
- Components
icu_properties- Fix some property constants (unicode-org#7269, unicode-org#7281, unicode-org#7284)
- Add conversions for
unicode_bidi::BidiClass(unicode-org#7272) - Add
IndicConjunctBreak(unicode-org#7280) - Add conversion between
icu::properties::props::Scriptandicu::locale::subtags:Script(unicode-org#7270) - Add conversion between
icu::properties::props::BidiClassandunicode_bidi::BidiClass(unicode-org#7272) - Constify
PropertyNamesLong/PropertNamesShort/PropertyParserconstructors (unicode-org#7294)
- Utils
- Retire the
icu_harfbuzzcrate. Theicu_propertiesandicu_normalizertypes now directly implement theharfbuzz-traits
- Retire the
icu4x 2.1 #
- Components
- General
- Update MSRV to 1.83 (unicode-org#7066)
- Remove unused dependencies (unicode-org#6978)
icu_calendar- Collapse
DangiandChineseintoEastAsianTraditional, expose (unstable) customization trait (unicode-org#6938, unicode-org#7159) - Collapse Hijri calendar types, expose (unstable)
Rulestrait for customization (unicode-org#6935) - Add Easter holiday to
GregorianandJulian(unicode-org#6899) - Implement
PartialOrdforDateunconditionally (unicode-org#7090) - Switch Chinese and Korean calendars to no longer being data-driven, hardcoding their data (unicode-org#6934, unicode-org#7008)
- (unstable) Add
Date::try_from_fieldsfor flexibly building Temporal dates (unicode-org#6910, unicode-org#7116, unicode-org#7163) - (unstable) Implement date arithmetic according to Temporal specification (unicode-org#6992, unicode-org#7012)
- Make
extended_yearhave consistent behavior across calendars, matching specced behavior in CLDR and Temporal (unicode-org#6800, unicode-org#6937) - Remove era aliases for Persian (unicode-org#7124)
- Fix
und-SA-u-ca-islamic(unicode-org#6736) - Fix calendar preference resolution (unicode-org#7158)
- Deprecate convenience constructors of lunisolar calendars (unicode-org#7143)
- Avoid panics for large past/future dates in astronomical calendars (unicode-org#6876)
- Improve some Gregorian calendar code (unicode-org#6870)
- Optimise
day_of_provided_year,date_from_provided_year_dayfor ISO/Gregorian (unicode-org#6883) - Add a lot more documentation on individual calendars (unicode-org#7016, unicode-org#7033, unicode-org#7036, unicode-org#7037, unicode-org#7047, unicode-org#7082, unicode-org#7151)
- Compare Chinese calendar against Hong Kong observatory (unicode-org#6944)
- Test Korean calendar against KASI (unicode-org#7041)
- Collapse
icu_casemap- General changes only
icu_collator- Add
CollatorBorrowed::write_sort_key_to; to support generating sort keys (unicode-org#6537, unicode-org#6656, unicode-org#6708, unicode-org#7186) - Make merge separator compare less than U+0000 on the identical strength (unicode-org#6814, unicode-org#6823)
- Add Latin1 comparisons to the collator (unicode-org#6674)
- Avoid double-validating
chars (unicode-org#6924)
- Add
icu_collections- Fix building without the
alloccrate (unicode-org#6997) - Optimize
CodePointTrieby hoisting fast path bound checks to constructor (unicode-org#6863) - Make trivial constructors for Char16Trie / Char16TrieIterator inline-eligible (unicode-org#6864)
- Fix building without the
icu_datetime- Add
Preferences::from_locale_strict(unicode-org#6737) - Change short localized offset format to use +0 (unicode-org#6729)
- Fix
und-SA-u-ca-islamic(unicode-org#6736) - Use atTime patterns where available (unicode-org#7106)
- Disambiguate inconsistent metazones (unicode-org#6755, unicode-org#7160)
- Implement
uandgfields (unicode-org#6930) - Use accurate
ZoneNameTimestamps(unicode-org#6942) - Improve formatting for Etc/GMT+X zones (unicode-org#7055)
- Add
icu_decimal- General changes only
icu_experimental:0.3.0 -> 0.4.0units- Refactor measure unit parser by using fixed unit ids (unicode-org#6683)
measure- End-to-End Categorized Units Formatter with sliced data (Core / Extended / Outlier) (unicode-org#6830)
- Add short representation generator for MeasureUnit (unicode-org#6685)
- Add
CategorizedFormatterfor unit formatting (unicode-org#6710) - Introduce
durationcategory for measure units (unicode-org#6676) - Add category module for measure units with associated traits and implementations (unicode-org#6535)
- Add UnitsIdsV1 to support the fundamental units' indices (unicode-org#6598)
relativetime- Fix relativetime preferences to observe numbering system (unicode-org#6928)
dimension- Migrate PercentEssentials to VarZeroCow; add test for #4662 (unicode-org#6716)
- Refactor currency provider structure (unicode-org#6732)
icu- Move examples into metacrate (unicode-org#6591)
icu_list- General changes only
icu_locale- Add
extendto Unicode Extensions (unicode-org#7112)
- Add
icu_locale_core- Fix building without the
alloccrate (unicode-org#6997) - Implement Serialize and Deserialize for Locale (unicode-org#6829)
- Add
Preferences::from_locale_strict(unicode-org#6737)
- Fix building without the
icu_normalizer- Permit enabling optimizations when the data is known at compile time to always be a fast trie (unicode-org#6906)
- Performance work counteracting a compiler regression (unicode-org#6825)
- Jump forward throwing away work instead of panic in release builds (unicode-org#6816)
icu_pattern:0.4.0 -> 0.4.1- General changes only
icu_plurals- Change debug output of PluralElementsPackedULE (unicode-org#6841)
icu_properties- Fix building without the
alloccrate (unicode-org#6997) - Optimize property map lookups (unicode-org#6886)
- Add support for missing binary properties:
- ID_Compat_Math_Continue
- ID_Compat_Math_Start
- IDS_Unary_Operator
- Modifier_Combining_Mark
- Fix building without the
icu_segmenter- General changes only
icu_time- Deprecate
VariantOffsetCalculator(unicode-org#6905) - Deprecate time zone variant APIs (unicode-org#6754)
- Move
TimeZoneVariantto provider module (unicode-org#6822) - Treat
Etc/GMT+xas a raw offset, improve formatting (unicode-org#7055) - Store
ZoneNameTimestampas UTC (unicode-org#6746) - Use accurate
ZoneNameTimestamps(unicode-org#6942) - Optimize DST offsets using a lookup table (unicode-org#6765)
- Deprecate
- General
- Data model and providers
icu_provider_baked- Expose const structs in baked data (unicode-org#6652)
icu_provider- Fix building without the
alloccrate (unicode-org#6997)
- Fix building without the
icu4x-datagen- Don't require sources to be set in
icu4x-datagen(unicode-org#6892)
- Don't require sources to be set in
icu_provider_source- Update to CLDR 48 (unicode-org#6793, unicode-org#6989, unicode-org#7046, unicode-org#7167)
- Don't complain about not covering
Factorytimezone in datagen (unicode-org#6768) - Detect rearguard TZDB differences (unicode-org#6943, unicode-org#6749)
- Include metazone periods before the horizon if the metazone is included anyway (unicode-org#6747)
- Handle locales without
territories.json, locales with inconsistent patterns (unicode-org#6709)
- FFI
icu_capi- All C++ enums now default to a valid value; which is the
Defaultimpl where there is one, and some semi-logical value otherwise. This has changed defaults in some cases and may cause a behavioral change for people relying on C++ default constructors. (unicode-org#6692) - Wasm code now uses the stable standard
wasm-c-abi=spec(unicode-org#6679) - Enable experimental code in NPM (unicode-org#6743)
- Allow consumers to determine bindings directories (unicode-org#6887)
- Document deprecated APIs (unicode-org#6890)
- FFI for most new APIs
ListFormatter::formatnow takes adiplomat::span<const diplomat::string_view_for_slice>instead of adiplomat::span<std::string_view>to handle soundness issues on some platforms (unicode-org#6974)
- All C++ enums now default to a valid value; which is the
- Dart version
2.1.0-dev.0,2.1.0-dev.1 - NPM version
2.1.0
- Utils
- General
- Util MSRV is decoupled from ICU4X MSRV; uniformly set to 1.82 for now (unicode-org#7125)
bies:0.2.4 -> 0.2.5- Minor internal changes
calendrical_calculations:0.2.2 -> 0.2.3- Add RataDie::in_well_behaved_astronomical_range(), use to avoid panics (unicode-org#6876)
crlify: No changedatabake: No changedatabake_derive:0.2.0 -> 0.2.1- Require public fields for
Bakederive (unicode-org#6586)
- Require public fields for
fixed_decimal:0.7.0 -> 0.7.1- Minor internal changes
ixdtf:0.6.3 -> 0.6.4- Add to_static_string for IXDTF errors (unicode-org#6917)
litemap:0.8.0 -> 0.8.1- Use
serde_core(unicode-org#6991)
- Use
potential_utf:0.1.3 -> 0.1.4- Use
serde_core(unicode-org#6991)
- Use
resb:0.1.0 -> 0.1.1- Use
serde_core(unicode-org#6991)
- Use
tinystr:0.8.1 -> 0.8.2- Add TinyAsciiStr::new_unsigned_decimal (unicode-org#6912)
- Use
serde_core(unicode-org#6991)
tzif:0.4.0 -> 0.4.1- Minor internal changes
writeable:0.6.1 -> 0.6.2- Fix building without the
alloccrate (unicode-org#6985)
- Fix building without the
yoke,yoke_derive:0.8.0 -> 0.8.1- Add four
map_with_cartmethods toyoke::Yoke, similar toYoke::map_projectbut additionally providing a reference to the cart. (unicode-org#6781) - Add
Yoke::with_mut_return, similar toYoke::with_mutbut with a callback that may return any'statictype. (unicode-org#6827) - Allow clippy::mem_forget in yoke_derive (unicode-org#6891)
- Add four
zerofrom,zerofrom_derive: No changezerotrie:0.2.2 -> 0.2.3- Use
serde_core(unicode-org#6991) - Internal docs and lints (unicode-org#6740)
- Fix test failures in zerotrie on 32-bit platforms (unicode-org#6697)
- Use
zerovec:0.11.4 -> 0.11.5- Write a proper safety comment for ZeroVec::truncate (unicode-org#6809)
- Use
serde_core(unicode-org#6991)
zerovec_derive:0.11.1 -> 0.11.2- Minor internal changes
zoneinfo64:0.2.0 -> 0.2.1- Minor internal changes
- General
icu4x 2.0.x #
Several crates have had patch releases in the 2.0 stream:
icu_calendar- (2.0.1) Fix chinese day-of-year (unicode-org#6567)
- (2.0.2) Respect
-u-fwkeyword inWeekInformation(unicode-org#6615) - (2.0.3) Fix extended year for Roc/Ethiopic (unicode-org#6721)
- (2.0.3) Fix treatment of None era code for Gregorian (unicode-org#6794)
- (2.0.4) Fix a sign error in
RataDie::until, addRataDie::since(unicode-org#6861) - (2.0.5) Fix calendrical-calculations dependency (unicode-org#6919)
icu_properties,icu_properties_data- (2.0.1) Fix a visibility bug in compiled data (unicode-org#6580)
icu_provider_baked- (2.0.1) Fix an issue where a single-locale data generation would skip fallback (unicode-org#6582)
icu_capi- (2.0.1) Rename string-methods on
DecomposingNormalizerto match those onComposingNormalizer(unicode-org#6594) - (2.0.1) Add
DataProviderconstructors in JS and Dart (unicode-org#6596) - (2.0.1) Fix
TimeZoneVariantconstructor (unicode-org#6610) - (2.0.2) Add
Locale::set_unicode_extension(unicode-org#6636)
- (2.0.1) Rename string-methods on
icu_datetime_data,icu_time_data,icu_provider_source- (2.0.1) Update to tzdb 2025b
calendrical_calculations- (0.2.1) Fix a sign error in
RataDie::until, addRataDie::since(unicode-org#6861) - (0.2.2) Make
iso_year_from_fixed,day_before_yearpublic (unicode-org#6871) - (0.2.2) Optimise some calculations for
iso(unicode-org#6883) - (0.2.2) Add Easter holiday to
isoandjulian(unicode-org#6899)
- (0.2.1) Fix a sign error in
ixdtf- (0.6.0) Add UTF16 handling (unicode-org#6577)
- (0.6.0) Add TimeZoneParser::parse_identifier for TimeZoneRecord (unicode-org#6584)
- (0.6.0) Reject empty durations when parsing ISO8601 durations (unicode-org#6718)
- (0.6.0) Handle ambiguous time parsing with MonthDay and YearMonth in
ixdtf(unicode-org#6717) - (0.6.1) Fix is_valid_month_day argument ordering bug (unicode-org#6756)
- (0.6.2) Offset must have a sign (unicode-org#6763)
- (0.6.2) Correctly handle ambiguous annotations (unicode-org#6776)
potential_utf- (0.1.3) Add
.chars()toPotentialUtf16(unicode-org#6726)
- (0.1.3) Add
zerovec:- (0.11.3) Make
VZV::Defaultwork with non-default index (unicode-org#6661) - (0.11.3) Make ZeroVec.iter().collect() faster (unicode-org#6764)
- (0.11.3) Implement
ZeroMapKVforVarTupleULE(unicode-org#6750) - (0.11.3) Add
ZeroVec::truncated()(unicode-org#6604) - (0.11.4) Fix safety issue in
ZeroVec::truncated()(unicode-org#6805)
- (0.11.3) Make
zoneinfo64- (0.1.0) New crate
- (0.2.0) Remove
icu_timedependency (unicode-org#6914) - (0.2.0) Add gap offset data to
PossibleOffset::Noneto help resolve forward transitions (unicode-org#6913)
icu4x 2.0 #
ICU4X 2.0 is ICU4X's new major release. Many things have changed, we recommend going through the full changelog for 2.0, 2.0-beta1, and 2.0-beta2 to understand the changes fully.
This changelog entry only covers changes from ICU4X 2.0.0-beta2 to ICU4X 2.0.
Some major changes worth highlighting:
-
Most locale-dependent APIs now take type-safe "preferences" objects instead of locales.
- Preference bags are often built from a locale, but they can also be built manually or merged from other sources.
- Preference bags are taken by value, so most call sites will need to change from
&locale.into()tolocale.into()or(&locale).into()
-
The datetime formatting APIs have been completely redesigned for better data usage and performance. We recommend looking at the new API and using it from the ground up, rather than replacing API calls one at a time.
-
Components
- General
- 1.82 MSRV (unicode-org#6413)
- Fix reexport documentation to be clearer when things are reexports (unicode-org##6372)
- Put
MaybeEncodeAsVarULEimpls behind the"export"feature (unicode-org#6221)
icu_calendar- Rename
Islamiccalendars toHijri(unicode-org#6214) - Collapse
IslamicCivilintoIslamicTabular(unicode-org#6384) - Rename
IslamicObservationaltoIslamicSimulated(unicode-org#6387) - Rename
wrap_calendar_in_*APIs toas_borrowed,into_ref_counted,into_atomic_ref_counted(unicode-org#6392) - Make
amera have index 0 and removebdera from Coptic calendar (unicode-org#6458) - Update era codes to match CLDR/Temporal (unicode-org#6405, unicode-org#6525, unicode-org#6246)
- Change cyclic calendar constructors to use ISO years (unicode-org##6431)
- Fix Meiji start date (unicode-org##6432)
- Mark
CalendarUnstableSealed(unicode-org##6483) - Simplify
EraYear(unicode-org##6443) - Allow different calendars to return different year-info types (unicode-org##6439)
- Remove Umm-al-Qura data struct (unicode-org##6404)
- Remove
prev_yearinfo (unicode-org#6382) - Use regions, not languages, for calendar algorithm defaults (unicode-org#6325)
- Hide week-of-month, non-iso week-of-year (unicode-org#6319)
- Expose
Dateto/fromRataDie(unicode-org#6369)
- Rename
icu_casemap- Add borrowed types (
CaseMapperBorrowed, etc) to icu_casemap (unicode-org#6353)
- Add borrowed types (
icu_collator- Identical prefix optimization for the collator (unicode-org#6496)
- Remove backward second level from the API (unicode-org#6291)
icu_collections- Remove some panics from
CodePointTrie, which should no longer pull in panic machinery even with arithmetic panics enabled for lookup (unicode-org#6204)
- Remove some panics from
icu_datetime- A lot of things have changed, it is preferable to reacquaint oneself with this crate from the ground up.
- Make
.hm()a constructor instead of a method (unicode-org#6423, unicode-org#6448) - Add
.time_hm[s]on date fieldsets (unicode-org#6448) - Rename
.with_lengthto.for_length(unicode-org#6448) - Length no longer has explicit
repr(u8)discriminants (unicode-org#6423) - Fix incorrect datetime skeletons being used in datetime formatting (unicode-org#6428)
- Split
DateTimeWriteErrorand improve docs (unicode-org#6528) DateTimefield set API improvements (unicode-org#6448)- Bound
CldrCalendaronUnstableSealednotprivate::Sealed(unicode-org#6475) - Remove
SubsecondErrorand replace with Option API (unicode-org#6500) - Rename
ZonedDateTime::try_from_str to try_full_from_str(unicode-org#6506) - Remove dead type DateTimeSkeletons and its data marker (unicode-org#6499)
- Change ConflictingField error to contain the previously loaded field (unicode-org#6480)
- Various refactors for comprehensibility (unicode-org#6423)
icu_decimal- No changes beyond cross-cutting changes
icu_experimentalunits- Update unit conversion to accept unit constant denominator (unicode-org#6199)
- Refactor
MeasureUnitParserand update related components (unicode-org#6328)
transliterator- Add
Any-LowerandAny-Uppertransliterators (unicode-org#6260)
- Add
icu_list- No changes beyond cross-cutting changes
icu_locale_core- No changes beyond cross-cutting changes
icu_locale- Add
UNKNOWNconstants to locale types (unicode-org#6526) - Rename
is_default()tois_unknown()(unicode-org#6507) - Remove
HourCycle::H24(unicode-org#6426) - Remove
Language/LanguageIdentifier/LocaleDefaultimpls (unicode-org#6529) - Remove BCP-47 APIs from
AnyCalendarKind, useCalendarAlgorithminstead (unicode-org#6228)
- Add
icu_pattern- No update, still at
0.4.0
- No update, still at
icu_plurals- Make
PluralElements::maptakeFnMut; addtry_map()(unicode-org#6478) - Add
PluralElements[try_]for_each(),[try_]for_each_mut()(unicode-org#6479)
- Make
icu_properties- Add
Vertical_Orientation(unicode-org#6290)
- Add
icu_segmenter- Reduce trait complexity (unicode-org#6417)
- Reorganize module structure (unicode-org#6409, unicode-org#6441)
- Add borrowed versions of segmenter types (unicode-org#6395)
- Update UAX#29 text segmenter data rules to 16.0. (unicode-org#6367)
icu_time- A lot of things have changed, it is preferable to reacquaint oneself with this crate from the ground up.
- Various refactors for comprehensibility (unicode-org#6460)
- Rename
ZonedDateTime::try_from_strtotry_full_from_str(unicode-org#6506) - Add type
ZoneNameTimestampfor time zone display names (unicode-org#6513) from_epoch_milliseconds_and_utc_offsetand follow-ups (unicode-org#6515)- Add
Time::noon()(unicode-org#6536) - Make
DateTime,ZonedDateTimeCloneandCopy(unicode-org#6527)
- General
-
Data model and providers
- General
- Remove explicit icu_locale/icu_provider_baked deps from baked data (unicode-org#6340)
- Add
#[non_exhaustive]to most marker types (unicode-org#6401) - A lot of data markers have been renamed (unicode-org#6229, unicode-org#6508, unicode-org#6449)
icu_provider- Put
MaybeEncodeAsVarULEbehind the"export"feature (unicode-org#6221) - Move baked_provider scaffolding to
icu_provider. Baked crates no longer need to depend directly onicu_provider_baked. (unicode-org#6351) - Clean up
icu_providerdocs (unicode-org#6226)
- Put
icu_provider_adapters- No changes aside from general changes
icu_provider_baked- Move baked_provider scaffolding to
icu_provider. Baked crates no longer need to depend directly onicu_provider_baked. (unicode-org#6351)
- Move baked_provider scaffolding to
icu_provider_fsAbstractSerializeris now a sealed trait (unicode-org#6263)- Use marker path variant for
FsProvider(unicode-org#6467)
icu4x-datagen- Improve ergonomics of icu4x-datagen (unicode-org#6476)
CollationHanDatabase->CollationRootHan(unicode-org#6375)
icu_provider_registry- A lot of data markers have been renamed (unicode-org#6229, unicode-org#6508, unicode-org#6449)
icu_provider_sourceCollationHanDatabase->CollationRootHan(unicode-org#6375)- Fix kanji date formatting (by using dateSkeletons instead of dateFormats) (unicode-org#6428)
- Validate calendar code against CLDR Era data (unicode-org#6252)
- Generate
Any-LowerandAny-Uppertransliterators (unicode-org#6260) - Simplify calendars in datagen (unicode-org#6331)
- Update icuexportdata (unicode-org#6522)
- General
-
FFI
icu_capi- This crate's API has been updated to continue reflecting ICU4X's API. ICU4X 2.0 breaking changes will likely be a breaking change here as well.
- All
ICU4XFootypes have now been unprefixed intoFoo; backends like C++ use namespacing now.
- Dart version
2.0.0-dev.0 - NPM version
2.0.0
-
Utils
- General
- Update most dependencies to latest major version (unicode-org#6266)
- 1.82 MSRV (unicode-org#6413)
bies:0.2.3 -> 0.2.4- Update some dependencies (unicode-org#6266)
calendrical_calculations:0.1.3 -> 0.2.0- Add a
RataDiepublic API for dealing with R.D. dates (unicode-org#6440) - Parametrise the
HijriSimulatedcalendar by location (unicode-org#6332) - Use ISO dates for Chinese/Dangi epoch (unicode-org#6465)
- Fix Saturday week wraparound logic at the 7-18-0 ḥalakim boundary (unicode-org#6267, unicode-org#6270)
- Add a
crlify:- No update, still at
1.0.4
- No update, still at
databake,databake-derive- No update, still at
0.2.0
- No update, still at
deduplicating_array- No update, still at
0.1.8
- No update, still at
fixed_decimal:0.7.0 -> 0.7.1- Fix reexport documentation to be clearer when things are reexports (unicode-org#6372)
ixdtf:0.4.0 -> 0.5.0- Add TimeZoneParser and adjustments to
UtcOffsetRecord(unicode-org#6283) - Fix for offset parsing leap seconds (unicode-org#6213)
- Remove support for U+2212 (unicode-org#6207)
- Add TimeZoneParser and adjustments to
litemap:0.7.5 -> 0.8.0- Impl
ExtendforLiteMapand avoid quadratic behavior in from_iter and deserialize. This is breaking: it splitsStoreMutintoStoreMutandStoreBulkMut. (unicode-org#6132) - Fix test panics/segfaults in litemap on big-endian hosts (unicode-org#6293)
- Impl
potential_utf:- No update, still at
0.1.2
- No update, still at
tinystr:- No update, still at
0.8.1
- No update, still at
writeable:- No update, still at
0.6.1
- No update, still at
yoke,yoke-derive:- No update, still at
0.8.0
- No update, still at
zerofrom,zerofrom-derive:- No update, still at
0.1.6
- No update, still at
zerovec:0.11.1 -> 0.11.2- Use
constblocks (unicode-orgc#6300) - No update to
zerovec-derive, still at0.1.6
- Use
zerotrie:0.2.1 -> 0.2.2- Fix
icu_locale_coredep (unicode-org#6266)
- Fix
- General
icu4x 2.0-beta2 #
- Components
- General
- Update data to CLDR 47 Beta 1, ICU 77 RC, TZDB 2025a
- Some crates have been given the ability to be built without
alloc(unicode-org#6077, unicode-org#6078, unicode-org#6166) - Consistently wrap all options in None in Rust and FFI (unicode-org#6084)
- Options now consistently live in
optionsmodules (unicode-org#6138) - Remove
compiled_dataDefaultconstructors from types which are prone to change sufficiently often (unicode-org#5958) - Move types over to uniform
::new()constructor convention (unicode-org#6141) - Implement display on all error types (unicode-org#5969)
- Use
core::error, remove unusedstdfeatures (unicode-org#5973) - Remove bench features (unicode-org#5986)
icu_calendar- Rename
IsoWeekdaytoWeekday(unicode-org#6140) - Add
Date::wrap_calendar_in_ref(unicode-org#6016) TimeandDateTimemoved toicu_timecomponent (unicode-org#5961)- Audit exhaustiveness of
icu_calendar::types(unicode-org#5978) - Add calendar argument to IXDTF parsing, making it available without
compiled_datafeature (unicode-org#5982) - Use correct day of year for
Japanese(unicode-org#5992)
- Rename
icu_casemap- Add borrowed variants to casemapper types (unicode-org#6088)
- Add missing keys to
CollatorPreferences(unicode-org#5950)
icu_collections- Remove some panics (unicode-org#6052)
icu_datetime- Improvements to all-new semantic skeleta.
- Add new datetime field set builder (unicode-org#5944)
- Add
with_fsetfns to datetime types (unicode-org#5942) - Rename zone field sets (unicode-org#6096)
- Rename
YearStyle::AlwaystoYearStyle::WithEra(unicode-org#6012) - Rename
format_any_calendar()toformat()(unicode-org#6020) - Add conversions between
FormatterandNames(unicode-org#6110) - Renames:
FixedCalendarDateTimeNames,cast_into_fset(unicode-org#6117) - Rename
FractionalSecondDigitstoSubsecondDigits(unicode-org#6139) - Rename
TimeFormattertoNoCalendarFormatter(unicode-org#6175) - Remove ISO parsing specialisations (unicode-org#5998)
- Make
fieldmodule be unstable and add stable enums forDateTimeNames(unicode-org#5959) - Add exemplar cities format (
VVV) (unicode-org#6018)
icu_decimal- Rename to
DecimalFormatter(unicode-org#6075) - Add
numbering_systemgetter toDecimalFormatter(unicode-org#5904) - Allow overriding the numbering system during decimal format (unicode-org#5914)
- Rename to
icu_experimental:0.2.0 -> 0.3.0- Implement Long/Short/Narrow Compact Currency Formatter (unicode-org#5456, unicode-org#5450)
- More transliterator fixes; drop CLDR 46.0 support (unicode-org#6005)
- Refactor MeasureUnit to use
single_unitsinstead ofcontained_units(unicode-org#6159)
icu_list- No changes other than general cross-crate changes
icu_localeLocaleExpander,LocaleDirectionality, andLocaleCanonicalizerdistinguish betweennew_common()andnew_extended()constructors (unicode-org#5958)
icu_locale_core- Stop accepting underscores as subtag separators (unicode-org#5943)
- Make
LocalePreferencesinternally-private, moveDataLocaletoicu_locale_core, other refactors (unicode-org#5988) - Fix
cmn-hans-cn-t-ca-u-ca-x_t-u(unicode-org#6001)
icu_normalizer- Use longer lifetime when returning normalize iter (unicode-org#6060)
- Introduce
split_normalizedand makeis_normalized_up_toprivate in Rust (unicode-org#5932) - Make
utf16_iter/utf8_iterdeps optional (unicode-org#5927) - Return
Cowinstead ofString/Vec(unicode-org#5906) - Change icuexportdata trie format to improve normalizer performance (unicode-org#5813)
icu_pattern:0.3.0 -> 0.4.0- Change
PlaceholderValueProviderand parts behavior (unicode-org#5908)
- Change
icu_plurals- Move experimental plural ranges code into
provider(unicode-org#6103)
- Move experimental plural ranges code into
icu_properties- Add to/from ICU4C APIs to enumerated properties (unicode-org#6091)
GeneralCategoryGroup::containsnow acceptsselfby value (unicode-org#5952)- Fix minor unsafety internal to names API (unicode-org#6059)
- Add convenience APIs that allow direct querying of properties (unicode-org#6066)
icu_segmenter- Segmenters that can take a content locale now specify
_root()on their default localeless constructors (unicode-org#5958)
- Segmenters that can take a content locale now specify
icu_time- Renamed from
icu_timezone, with renames and restructures (unicode-org#6123, unicode-org#6152) TimeandDateTimemoved toicu_timecomponent (unicode-org#5961)- Replace
IxdtfParserby methods onZonedDateTime(unicode-org#5985) - Rename
CustomZonedDateTimetoZonedDateTime(unicode-org#5983) - Human readable time zone transition dates (unicode-org#6124)
- Allow iterating over all IANA IDs (unicode-org#6155)
- Remove ISO parsing specialisations (unicode-org#5998)
- Restrict
Timeto ISO-8601 range, remove arithmetic (unicode-org#6002)
- Renamed from
- General
- Data model and providers
- General
- Many improvements to internal data model for specific data keys (unicode-org#5994, unicode-org#6043, unicode-org#5813)
icu_provider- There is now a
data_marker!macro (unicode-org#6072) - Remove
AnyProvider(unicode-org#6086) - Remove YokeTraitHack from icu (unicode-org#6126)
- Add a checksum field to
DataResponseMetadata(unicode-org#6046) - Remove data marker paths from release binaries (unicode-org#5981)
- Add
MaybeAsVarULEandMaybeEncodeAsVarULEwith plumbing intoDataProvider::<ExportMarker>::tokenize_encoded_seq(unicode-org#6133)
- There is now a
icu_provider_macros- Removed
icu_provider_baked- Change
DataStoreto returnDataPayload(unicode-org#6135)
- Change
icu_provider_export- Don't use the file system to pass export results (unicode-org#6087)
icu_provider_source- Download retries for
SourceDataProvider(unicode-org#6092) - Improvements to timezone datagen (unicode-org#6023, unicode-org#6125, unicode-org#6105, unicode-org#6112, unicode-org#5966, unicode-org#6115)
- Download retries for
- General
- Utils
- Cross cutting changes:
- Use
core::error(unicode-org#5973) - Remove bench feature. This is technically breaking, but not considered breaking since this is an internal feature. (unicode-org#5986)
- Use
bies:- No update, still at
0.2.3
- No update, still at
calendrical_calculations:0.1.2 -> 0.1.3- No changes other than general cross-crate changes
crlify- No update, still at
1.0.4
- No update, still at
databake,databake_derive- No update, still at
0.2.0
- No update, still at
deduplicating_array:0.1.7 -> 0.1.8- No changes other than general cross-crate changes
fixed_decimal:0.6.0 -> 0.7.0- Rename
FixedDecimaltoDecimal, introduceUnsignedDecimal(unicode-org#5667, unicode-org#6143, unicode-org#6146) - Add
trim_end_if_integer(unicode-org#5903)
- Rename
ixdtf:0.3.0 -> 0.4.0- Handle unbound fraction length (unicode-org#6036)
- Bug fix for subsecond part (unicode-org#6004)
- Expand size of duration records to support ECMA402 (unicode-org#5996)
litemap:0.7.4 -> 0.7.5- Implement
Entryapis forLiteMap(unicode-org#6131) - Add
BTreeMap-like apis toLiteMap(unicode-org#5894) - Make
litemapno-alloc (unicode-org#6077)
- Implement
potential_utf:0.1.1 -> 0.1.2- Add
PartialEq(etc) impls forPotentialUtftypes (unicode-org#5994)
- Add
tinystr:0.8.0 -> 0.8.1- Add explicit features list to Cargo.toml (unicode-org#6040)
- Implement Borrow for
TinyAsciiStr(unicode-org#6179)
tzif:0.3.0 -> 0.4.0- Preserve stucture of timezone designation list (unicode-org#5581)
writeable:0.6.0 -> 0.6.1- No changes other than general cross-crate changes
yoke,yoke_derive:0.7.5 -> 0.8.0- Relax trait bound for
EitherCartinYokecrate (unicode-org#5876) - Remove
YokeTraitHack(unicode-org#6126)
- Relax trait bound for
zerofrom:0.1.5 -> 0.1.6- No changes other than general cross-crate changes
zerotrie:0.2.0 -> 0.2.1- Improved unsafe code (unicode-org#6054)
zerovec,zerovec_derive:0.11.0 -> 0.11.1- derive: Reduce number of panicky calls introduced by derive (unicode-org#6052)
- Add
VarZeroSliceIter,ZeroSliceIter(unicode-org#5924) - Add manual eyepatch to
VarZeroCow(unicode-org#6189)
- Cross cutting changes:
icu4x 2.0-beta1 #
- Components
- General
- Constructors updated to take type-safe "preferences" objects instead of locales.
- Preference bags are often built from a locale, but they can also be built manually or merged from other sources.
- Preference bags are taken by value, so most call sites will need to change from
&locale.into()tolocale.into()or(&locale).into()
- Compiled data updated to CLDR 45 and ICU 75 (unicode-org#4782)
- Compiled data updated to CLDR 46 (unicode-org#5479, unicode-org#5598)
- Fine-tuning error enums; removal of obsolete variants (unicode-org#4959, unicode-org#4638, unicode-org#5019, unicode-org#5041, unicode-org#5146)
- Refactored FromStr and try_from_str functions (unicode-org#4934, unicode-org#5085)
- Deleted various deprecated functions
- Shadow
defaultinstead of making new functionconst_default(unicode-org#5354) - Rename marker types (unicode-org#4999)
- Fix take/into function names and conventions (unicode-org#5723)
- Constructors updated to take type-safe "preferences" objects instead of locales.
icu- Adding
datagenfeature to meta crate (unicode-org#5047)
- Adding
icu_calendar- Restructure icu_calendar public API to put all calendars under
cal(unicode-org#5701) - Consistently name calendar-specific
Date/DateTimefunctions that have a calendar argument (unicode-org#5692) - Move all calendar types to
calmodule (unicode-org#5701) - Shorten integer types returned by
day_of_month(),week_of_month(), andweek_of_year()tou8(unicode-org#5702) - IntoAnyCalendar: new kind() method (unicode-org#4975)
- Fixed various broken assertions (unicode-org#4986)
- Fix Japanese calendar year 0 (unicode-org#5006)
- Add Date, Time, and DateTime from str impls via IXDTF (unicode-org#5260)
- Fix bug by consistently 1-indexing months and days (unicode-org#5726)
- Refactor YearInfo to separate cyclic/Temporal/Formatting eras (unicode-org#5509)
- FormattableMonth -> MonthInfo, and split standard from formatting month codes (unicode-org#5536)
- Remove unix epoch APIs (unicode-org#5748)
- Shorten integer type of day_of_month, week_of_month, week_of_year (unicode-org#5702)
- Restructure icu_calendar public API to put all calendars under
icu_collator- Introduce a borrowed version of the collator (unicode-org#5513)
- Adapt the collator to Unicode 16 normalization changes (unicode-org#4878)
- Use script fallback in collator (unicode-org#5743)
icu_collectionsicu_normalizer- Introduce borrowed variants of normalizer structs (unicode-org#5413)
- Make the normalizer work with new Unicode 16 normalization behaviors (unicode-org#4860)
icu_datetime- All-new semantic skeletons. (unicode-org#1317, unicode-org#4945)
- This is a re-write of
DateTimeFormatterand most of theicu_datetimecrate. It adds the ability to format specific subsets of fields, conforming with LDML version 46. All call sites of ICU4X 1.xDateTimeFormatterwill need to be updated. It is recommended to start fresh with the new crate documentation.
- This is a re-write of
- Optimize YearNames storage (unicode-org#5721)
- Drop support for week-of-year, to likely be re-added in a future version or upon request (unicode-org#5569)
- Remove VVV time zone format, to possibly be added back later (unicode-org#5659)
- Fix generic location format for single-tz countries (unicode-org#5657)
- Support localized offsets with seconds (unicode-org#5674)
- Audit datetime format function (unicode-org#5789)
- All-new semantic skeletons. (unicode-org#1317, unicode-org#4945)
icu_decimal- Reduce stack size of DecimalSymbolsV1 (unicode-org#5804)
- Split numbering systems out of decimal data (unicode-org#5822, unicode-org#5830)
icu_experimental:0.1.0 -> 0.2.0- New experimental DurationFormatter component (unicode-org#801)
- Implement
UnitsFormatter(unicode-org#5000) - Implement Short Compact Currency Formatter Provider and Populate Associated Data (unicode-org#5361)
- Implement
LongCurrencyFormatterfor Long Currency Formatting (unicode-org#5351) - Improvements to transliteration (unicode-org#5469, unicode-org#5489, unicode-org#5712)
- Expose
CompactDecimalFormatterOptionsin the compactdecimal module (unicode-org#5770) - Add constant denominator support to MeasureUnit (unicode-org#6193)
icu_locale- New crate (with parts of
icu_locidandicu_locid_transform) - Add preferences module (unicode-org#4996, unicode-org#5729)
- Remove
AliasesV1,LikelySubtagsV1(unicode-org#5337) - Remove
_manual_sliceconstructors (unicode-org#5312) - Use
is_defaultinstead ofis_emptyoris_undfor locale-ish types (unicode-org#5359) - Add script fallback priority; improve language/region fallback priority (unicode-org#5344)
- Allow
LocaleDirectionalityto wrap aLocaleExpanderwith user-controlled storage (unicode-org#5704) - Allow
LocaleCanonicalizerto wrap aLocaleExpanderwith user-controlled storage (unicode-org#5718) - Split
canonicalize()onLocaleandLanguageIdentifierintocanonicalize()andcanonicalize_utf8(), and have it return aCow(unicode-org#5727) - Remove Ord impl from extensions::unicode::Unicode (unicode-org#5617)
- Locale
canonicalize->normalize(unicode-org#5766) - Use
AsRefinLocaleDirectionality's type parameter (unicode-org#5704) - Add Expander argument to LocaleCanonicalizer (unicode-org#5718)
- New crate (with parts of
icu_locale_core- New crate, renamed from
icu_locid - Removed
OrdandPartialOrdimpl fromextensions::unicode::Unicode(unicode-org#5617) - Move generic Subtag to subtags; use it in Value (unicode-org#4932, unicode-org#4941)
- Remove AsRef and instead introduce Cow-returning canonicalize methods on locale/langid (unicode-org#5727)
- New crate, renamed from
icu_pattern:0.2.0 -> 0.3.0- Changes to bytes constructors (unicode-org#5034, unicode-org#5072)
- Bake, zerovec integration (unicode-org#5030)
icu_plurals- Add PluralElements for algorithmic plural selection (unicode-org#5622)
icu_properties- New properties API (unicode-org#5548)
- Move exemplar chars with new API (unicode-org#5434)
- Split
PropertyNames(unicode-org#5575) - Model
BidiAuxiliaryPropertiesas anEnumeratedProperty(unicode-org#5597) - Change
Scriptproperty API (unicode-org#5628) - Rename
UnicodeSetDatatoEmojiSetData(unicode-org#5627)
icu_segmenter- Support Unicode 15.1 for line segmenter (unicode-org#5218)
- Use data marker attributes for model selection (unicode-org#4985)
- Fixes to segmentation algorithm (unicode-org#5001)
- Add LocaleData parameter for word/sentence segmenter (unicode-org#5318)
- Add content_locale member to LineBreakOptions (unicode-org#5565)
icu_timezone- Implement
ixdtfforCustomTimeZoneandCustomZonedDateTime(unicode-org#5349) - GMT -> UTC (unicode-org#5512)
- Clean up Windows mapper API (unicode-org#5735)
- Support inference of time zone variants (unicode-org#5540)
- Add
WindowsTimeZoneMapperandWindowsZonesToBcp47Mapprovider (unicode-org#5524) - Handle
Zcorrectly in IXDTF (unicode-org#5742) - Make an
IxdtfParsertype (unicode-org#5736) - Fewer overlapping constructors for
TimeZoneInfo(unicode-org#5747) - Private fields for
TimeZoneInfo(unicode-org#5747) - Return type for
ZoneOffsetCalculator - Remove generic metazone values that match location values (unicode-org#5751)
- Special-case
Z,Z[Etc/UTC]andZ[Etc/GMT]in IXDTF parser (unicode-org#5757) - Deduplicate tz locations against root (unicode-org#5759)
- Make
ZoneVarianta closed, non-exhaustive enum (unicode-org#5760) - Replace
CustomTimeZonewithTimeZoneInfo(unicode-org#5691)
- Implement
- General
- Data model and providers
icu_provider_adapters- Reworking filter provider (unicode-org#5148)
- Rename AnyPayloadProvider to FixedProvider, make it generic (unicode-org#5502)
- impl ExportableProvider for ForkByErrorProvider and add tutorial (unicode-org#5503)
icu_provider_baked- New crate, split from
icu_datagen(unicode-org#5009) - Reexport baked data dependencies in data crates (unicode-org#5033)
- Changing baked data to use zerotrie (unicode-org#5064)
- New crate, split from
icu_provider_blob- Remove Blob schema v1, v2, add v3 (unicode-org#5608)
icu_provider- Replace
AnyPayloadProviderwithFixedProvider<M> - Added DataMarkerAttributes, new framework for data request specificity (unicode-org#4981)
- Remove BufferProvider trait in favor of DynamicDataProvider (unicode-org#4992)
- Rename data key to data marker [info] (unicode-org#5003)
- Make
DataRequest.payloadnon-optional (unicode-org#5037) - Remove
IterableDataProvider::supports_requestand renamesupported_requeststoiter_requests(unicode-org#5089) - Better modularisation in
icu_provider(unicode-org#5088) - Refactor request architecture with DataIdentifier (unicode-org#5103, unicode-org#5293)
- Create
DryDataProviderfor dry-run loading of data (unicode-org#5141) - Add DataPayload::dynamic_cast with example (unicode-org#5467)
- Add
icu_provider::marker::ErasedMarker(unicode-org#5590)
- Replace
icu_provider_export- New crate, split from
icu_datagen(unicode-org#5172) - Removed legacy datagen API (unicode-org#4962, unicode-org#5059)
- Improved datagen APIs (unicode-org#5114, unicode-org#5629)
- Move internal fallback option to baked exporter options (unicode-org#5036)
- Allow using marker names in datagen (unicode-org#5060)
- New crate, split from
icu_provider_fsicu4x-datagen- New crate, split from
icu_datagen(unicode-org#5011)
- New crate, split from
icu_provider_registry- New crate, split from
icu_datagen(unicode-org#5010, unicode-org#5177)
- New crate, split from
icu_provider_source- New crate, split from
icu_datagen(unicode-org#5016, unicode-org#5173)
- New crate, split from
icu_testdata- Deleted obsolete crate (unicode-org#4960)
- FFI:
- All languages
- Complete revamp. "ICU4X" prefixes replaced with namespaces. Add version to ABI.
- Remove
icu_prefix fromicu_capifeatures (unicode-org#5365) - Replace WASM-demo with Diplomat demo_gen output (unicode-org#5418)
- JS
- C++
icu_harfbuzz
- All languages
- Utilities
bies:0.2.2 -> 0.2.3- Minor cleanups
calendrical_calculations:0.1.2 -> 0.1.3- Minor cleanups
crlify: No change (1.0.4)databake,databake_derive:0.1.8 -> 0.2.0- Breaking: Introduce
BakeSize, allowing for the calculation of the size of baked. (unicode-org#5169)- This is automatically required by
#[derive(Bake)], making it a breaking change
- This is automatically required by
- Fix
test_bake!(unicode-org#5092, unicode-org#5559)
- Breaking: Introduce
deduplicating_array:0.1.6 -> 0.1.7- Minor cleanups
env_preferences: New crate0.1.0- Add
env_preferencescrate (unicode-org#5081) - This crate does not itself get used by ICU4X, but can potentially be used with ICU4X.
- Add
fixed_decimal:0.5.6 -> 0.6.0FloatPrecision::Floatingrenamed toFloatPrecision::RoundTrip(unicode-org#5616)FixedDecimal::concatenated_end()now returns bothselfandotherin the error case. (unicode-org#5623)- Simplify FixedDecimal's rounding APIs (unicode-org#5028)
- fix:
pad_endfunction does not accept the 0 position (unicode-org#5319) - Return
Err((self, other))in FixedDecimal::concatenated_end (unicode-org#5623) - Rename FloatPrecision::Floating to FloatPrecision::RoundTrip (unicode-org#5616)
ixdtf:0.2.0 -> 0.3.0- Changed to
&[u8]parsing (unicode-org#4918)
- Changed to
litemap:0.7.3 -> 0.7.4- Fix integer overflow for
LiteMapby using correctStoretrait method (unicode-org#5113)
- Fix integer overflow for
potential_utf: New crate0.1.0- New crate with unvalidated types split from
zerovec(unicode-org#5364)
- New crate with unvalidated types split from
tzif: New crate0.2.3 -> 0.3.0- Various breaking changes to APIs from "General" section above
tinystr:0.7.6 -> 0.8.0- Add UTF-16 constructors
- Rename
TinyStrErrortoParseError(unicode-org#5405) - Add TinyAsciiStr::concat (unicode-org#5772)
- Various breaking changes to APIs from "General" section above
yoke,yoke_derive:0.7.4 -> 0.7.5- Unsafe review feedback (unicode-org#5046, unicode-org#5104)
zerofrom,zerofrom_derive:0.1.4 -> 0.1.5`- Minor cleanups
zerotrie:0.1.3 -> 0.2.0- Minor improvement to zerotrie hash function (unicode-org#5106)
- New bytes representation, downstream of
zerovec's new optimizations' - Various breaking changes to APIs from "General" section above
zerovec,zerovec_derive:0.10.4, 0.10.3 -> 0.11.0- This release has multiple changes that affect the bit representation of various types. Do not update to this release if you wish to retain stable data formats.
- Change the
VarZeroVecFormatvalues shipped by default to use the same index and length width. This breaks data layout for allVarZeroVecs. (unicode-org#5594) - Change the
VarZeroVecformat to not store a superfluous 0 index at the beginning of the index array. This breaks data layout for allVarZeroVecs (unicode-org#5601) - Optimize
MultiFieldsULEto not store a length anymore. This breaks data layout for any#[make_varule]-using struct with multiple variable-sized fields. (unicode-org#5522, unicode-org#5593)
- Change the
- Enforce C,packed, not just packed (unicode-org#5049, unicode-org#5143)
- Remove
FlexZeroVec(unicode-org#5604) - Add VarTuple and VarTupleULE (unicode-org#5511)
- Add TupleNVarULE (unicode-org#5777)
- Add VarZeroCow (unicode-org#5809)
- Add ZeroVec::as_slice (unicode-org#5621)
- Serde impls for VarULE types (Var tuple types, and make_var) (unicode-org#5802)
- Add VarZeroVecFormat support to VarTuple and make_var (unicode-org#5808)
- Consistently use
bytesnotbyte_slice(unicode-org#5816) - Implement
Bakefor VZV types of different formats (unicode-org#5719)
- This release has multiple changes that affect the bit representation of various types. Do not update to this release if you wish to retain stable data formats.
writeable:0.5.5->0.6.0- Make
Writeable::writeable_cmp_bytesa free functionwriteable::cmp_bytes(unicode-org#5737) - Add
writeable::to_string_or_borrowfor writing with reference bytes (unicode-org#5738) - Add Writeable WithPart helper (unicode-org#5328)
- Make writeable_cmp_bytes a free function (unicode-org#5737)
- Add writeable::write_or_ref (unicode-org#5738)
- Generate to_string concrete fn in impl_display_with_writeable (unicode-org#5827)
- Make
icu4x 1.5.x #
icu_calendar- (1.5.1) Fix Japanese calendar Gregorian era year 0 (https://github.com/unicode-org/icu4x/issues/4968)
- (1.5.2) Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
repr(Rust)(https://github.com/unicode-org/icu4x/pull/5049)
icu_datetime- (1.5.1) Fix incorrect assertion in week-of-year formatting (https://github.com/unicode-org/icu4x/issues/4977)
icu_casemap- (1.5.1) Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
repr(Rust)(https://github.com/unicode-org/icu4x/pull/5049)
- (1.5.1) Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
icu_capi- (1.5.1) Fix situations in which
libc_allocis specified as a dependency (https://github.com/unicode-org/icu4x/pull/5119)
- (1.5.1) Fix situations in which
icu_properties- (1.5.1) Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
repr(Rust)(https://github.com/unicode-org/icu4x/pull/5049)
- (1.5.1) Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
zerovec- (0.10.3) Fix size regression by making
twox-hashdepno_std(https://github.com/unicode-org/icu4x/pull/5007) - (0.10.3) Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
repr(Rust)(https://github.com/unicode-org/icu4x/pull/5049) - (0.10.4) Enforce C,packed on OptionVarULE (https://github.com/unicode-org/icu4x/pull/5143)
- (0.10.3) Fix size regression by making
zerovec_derive- (0.10.3) Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
repr(Rust)(https://github.com/unicode-org/icu4x/pull/5049)icu_*_data - (1.5.1) Add build.rs to workspace includes (unicode-org#6356)
- (0.10.3) Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
icu4x 1.5 (May 28, 2024) #
- Components
- General
- Compiled data updated to CLDR 45 and ICU 75 (unicode-org#4782)
icu_calendar- Fix duration offsetting and negative-year bugs in several calendars including Chinese, Islamic, Coptic, Ethiopian, and Hebrew (unicode-org#4904)
- Improved approximation for Persian calendrical calculations (https://github.com/unicode-org/icu4x/issues/4713)
- Fix weekday calculations in negative ISO years (https://github.com/unicode-org/icu4x/pull/4894)
- New
DateTime::local_unix_epoch()convenience constructor (https://github.com/unicode-org/icu4x/pull/4479) - Add caching for all islamic calendars (https://github.com/unicode-org/icu4x/pull/4785)
- Add caching for chinese based calendars (https://github.com/unicode-org/icu4x/pull/4411, https://github.com/unicode-org/icu4x/pull/4468)
- Switch Hebrew to faster keviyah/Four Gates calculations (https://github.com/unicode-org/icu4x/pull/4504)
- Replace 2820-year with 33-year cycle in Persian calendar, with override table (https://github.com/unicode-org/icu4x/pull/4770, https://github.com/unicode-org/icu4x/pull/4775, https://github.com/unicode-org/icu4x/pull/4796)
- Fix bugs in several calendars with new continuity test (https://github.com/unicode-org/icu4x/pull/4904)
- Fix year 2319 in the Chinese calendar (https://github.com/unicode-org/icu4x/pull/4929)
- Fix ISO weekday calculations in negative years (https://github.com/unicode-org/icu4x/pull/4894)
icu_collections- Switch from
wasmertowasmiinicu_codepointtrie_builder(https://github.com/unicode-org/icu4x/pull/4621)
- Switch from
icu_normalizer- Make UTS 46 normalization non-experimental (unicode-org#4712)
icu_datetime- Experimental "neo" datetime formatter with support for semantic skeleta and fine-grained data slicing (https://github.com/unicode-org/icu4x/issues/1317, https://github.com/unicode-org/icu4x/issues/3347)
WriteableandDisplayimplementations now don't returnfmt::Errors that don't originate from thefmt::Writeanymore (unicode-org#4732, unicode-org#4851, unicode-org#4863)- Make
CldrCalendartrait sealed except with experimental feature (https://github.com/unicode-org/icu4x/pull/4392) FormattedDateTimeandFormattedZonedDateTimenow implementCloneandCopy(https://github.com/unicode-org/icu4x/pull/4476)
icu_experimental- New home for all experimental components. This supersedes the published
icu_compactdecimal,icu_displaynames,icu_relativetime,icu_transliterate, andicu_unicodeset_parsecrates (unicode-org#4564) - New experimental component
personnames(unicode-org#4050) - New experimental component
dimension- Added
CurrencyFormatter, which can format any currency based on the locale and the width (short and narrow are supported for now).
- Added
- New experimental component
units(unicode-org#4605)- Added
UnitsConverter, which can convert any single or compound units (such asmeterandsquare-meter-per-second) to any compatible single or compound units.
- Added
- New home for all experimental components. This supersedes the published
icu_locid- Added
total_cmpfunctions toLocaleand other types to make them easier to use inBTreeSet(https://github.com/unicode-org/icu4x/pull/4608)
- Added
icu_locid_transform- Add
LocaleExpander::minimize_favor_script(https://github.com/unicode-org/icu4x/pull/4752)
- Add
icu_plurals- Added support for
CompactDecimal(https://github.com/unicode-org/icu4x/pull/4828)
- Added support for
icu_properties- Add
Aranscript code (https://github.com/unicode-org/icu4x/pull/4426) - Mark additional constructors as
const(https://github.com/unicode-org/icu4x/pull/4584, https://github.com/unicode-org/icu4x/pull/4574) - Implement Joining_Type property (https://github.com/unicode-org/icu4x/pull/4599)
- Implement Hangul_Syllable_Type property (https://github.com/unicode-org/icu4x/pull/4885)
- Add
icu_segmenter- Fixed line segmenter, using Unicode 15.0 (https://github.com/unicode-org/icu4x/pull/4389)
- Fixed grapheme cluster segmenter and updated it to Unicode 15.1 (https://github.com/unicode-org/icu4x/pull/4536)
- Updated sentence segmenter rules to Unicode 15.1 (https://github.com/unicode-org/icu4x/pull/4625)
- Updated word segmenter rules to Unicode 15.1 (https://github.com/unicode-org/icu4x/pull/4625)
- Fixed
word_type()andis_word_like()onWordBreakIteratorfor the last segment in complex script (https://github.com/unicode-org/icu4x/pull/4903)
icu_timezone- Added
TimeZoneIdMapperto replaceIanaToBcp47Mapper(https://github.com/unicode-org/icu4x/pull/4774)
- Added
- General
- Data model and providers
icu_datagen- Add new API structure to
DatagenDriverto better express the different aspects ofFallbackMode(https://github.com/unicode-org/icu4x/issues/4629) - Datagen shows elapsed time for keys that are slow to generate (https://github.com/unicode-org/icu4x/pull/4469)
- Datagen performance improvement by caching supported locales (https://github.com/unicode-org/icu4x/pull/4470)
- Never use fallback for baked segmentation data (https://github.com/unicode-org/icu4x/pull/4510)
- Propagate extension keywords and auxiliary keys to explicit locales (https://github.com/unicode-org/icu4x/pull/4533)
- Add baked data macros to generate
IterableDataProvider(unicode-org#4800, unicode-org#4868) - Add an option to generate data from an existing
DataProvider, instead of from sources (unicode-org#4814) - Implement
DeduplicationStrategy::RetainBaseLanguages(https://github.com/unicode-org/icu4x/pull/4836)
- Add new API structure to
icu_provider- (Small breakage)
DataPayload::new_owned()is no longerconst, this was a mistake (https://github.com/unicode-org/icu4x/pull/4456) - Add
NeverMarkerto allow for DataProvider bounds that never return data (https://github.com/unicode-org/icu4x/issues/4186) - Add
BoundProviderto allow temporal separation between key and request (https://github.com/unicode-org/icu4x/pull/4877) - Add
DataPayloadOrfor more efficient memory layout to reduce stack size (https://github.com/unicode-org/icu4x/pull/4463)
- (Small breakage)
icu_provider_blob- Blob v2 no longer allocates (https://github.com/unicode-org/icu4x/pull/4383)
- FFI:
- All languages
- Correctly handle invalid UTF8 (https://github.com/unicode-org/icu4x/pull/4353)
- Correctly handle chars (https://github.com/unicode-org/icu4x/pull/4349)
- Add
day_of_yeargetter (https://github.com/unicode-org/icu4x/issues/4891) - Adding panic-handler and allocator features to icu_capi (unicode-org#4516)
- JS
- Fixed a bug where slice length is computed incorrectly (https://github.com/rust-diplomat/diplomat/pull/372)
- Changed file extensions for better compatibility with nodejs modules (https://github.com/rust-diplomat/diplomat/pull/387)
- C++
- Fixed a bug where a result header defines a struct that shadows the class' name (https://github.com/rust-diplomat/diplomat/pull/394)
- Add
explicitkeyword to internal constructors (https://github.com/rust-diplomat/diplomat/pull/386) - Small breakage: some functions that used to return
diplomat::Result<T, std::monostate>now returnstd::optional<T>(unicode-org#4635)
icu_harfbuzz- Switch to harfbuzz funcs (unicode-org#4794)
- All languages
- Utilities
calendrical_calculations:- Add Keviyah/Four Gates based optimized calculations module for the Hebrew calendar. (https://github.com/unicode-org/icu4x/pull/4504)
- Expose
Hebrewas a unit struct, addDate::try_new_hebrew_date(),DateTime::try_new_hebrew_datetime(). (https://github.com/unicode-org/icu4x/pulls/4532) - Deprecate
Hebrew::new_always_precomputing(),Date::try_new_hebrew_date_with_calendar(),DateTime::try_new_hebrew_datetime_with_calendar(). The new implementation of the Hebrew calendar is faster and we do not need APIs for precomputation. (https://github.com/unicode-org/icu4x/pulls/4532)
databake- Add
impl Bake for PhantomData<T>(https://github.com/unicode-org/icu4x/pull/4663)
- Add
fixed_decimal- Changed type of compact exponent from
i16tou8(https://github.com/unicode-org/icu4x/pull/4828) - Stabilize rounding to increment methods for
FixedDecimal(https://github.com/unicode-org/icu4x/pull/4578)
- Changed type of compact exponent from
icu_pattern- Complete re-write of crate with support for multiple backends and better integration with ZeroVec and Writeable (https://github.com/unicode-org/icu4x/pull/4610)
litemap- Add
impl IntoIterator for LiteMapby splittingStoreIterableMuttrait (https://github.com/unicode-org/icu4x/pull/4359)
- Add
yoke- Remove
StableDerefbound fromYoke<Y, Option<C>>methods (https://github.com/unicode-org/icu4x/pull/4457) - Added
CartableOptionPointerand function to convert fromYoke<Y, Option<C>>(https://github.com/unicode-org/icu4x/pull/4449)\
- Remove
zerofrom- Support
?Sizedtype parameters which must beSizedto implementZeroFrom(https://github.com/unicode-org/icu4x/pull/4657)
- Support
zerotrie- Add
as_borrowed_sliceandAsRefimpl (https://github.com/unicode-org/icu4x/pull/4381) - Add
ZeroTrieSimpleAsciiCursorfor manual iteration (https://github.com/unicode-org/icu4x/pull/4383, https://github.com/unicode-org/icu4x/pull/4725) - Increase bound of
pto solve more perfect hash functions; might break serialized ZeroTriePerfectHash from previous versions (https://github.com/unicode-org/icu4x/pull/4888)
- Add
zerovec- Change
ZeroHashMapto usetwox-hash(https://github.com/unicode-org/icu4x/pull/4592) - Add a niche to
ZeroVecto reduce memory usage (https://github.com/unicode-org/icu4x/pull/4491) - Add
ZeroVec::take_lastand::take_first(https://github.com/unicode-org/icu4x/pull/4651)
- Change
writeable- Add
TryWriteablefor fallibility (https://github.com/unicode-org/icu4x/pull/4787) - Add
writeable_cmp_bytesfor more efficient comparison (https://github.com/unicode-org/icu4x/pull/4402)
- Add
icu4x 1.4.x #
- Remove icu_datagen's dep on
fractionalicu_datagen@1.4.1
- Fix normalization of character whose decomposition contains more than one starter and ends with a non-starter followed by a non-starter
with a lower Canonical Combining Class than the last character of the decomposition. (https://github.com/unicode-org/icu4x/pull/4530)
icu_normalizer@1.4.1
- Stricter version dependency on data crates
icu_properties@1.4.2,icu_normalizer@1.4.3,icu_properties_data@1.4.1
- Enforce C,packed, not just packed, on ULE types, fixing for incoming changes to
repr(Rust)(https://github.com/unicode-org/icu4x/pull/5049)icu_casemap@1.4.1,icu_properties@1.4.3- A full fix also needs
zerovec@0.10.3,zerovec_derive@0.10.3
icu4x 1.4 (Nov 16, 2023) #
-
General
- MSRV is now 1.67
-
Components
- Compiled data updated to CLDR 44 and ICU 74 (https://github.com/unicode-org/icu4x/pull/4245)
icu_calendar- Expose if a date is in a leap year (https://github.com/unicode-org/icu4x/pull/4273)
icu_locid- Canonicalize transform extensions to lowercase (https://github.com/unicode-org/icu4x/pull/4134)
icu_plurals- Experimental
PluralRulesWithRangesfor selecting the plural category for ranges (https://github.com/unicode-org/icu4x/issues/3012)
- Experimental
icu_properties- Support Indic_Syllabic_Category in icu_properties. (https://github.com/unicode-org/icu4x/pull/4176)
- Add enum constants for new Unicode 15.1 Line_Break properties. (https://github.com/unicode-org/icu4x/issues/4132)
icu_segmenter- Fix Unicode 15.0 sentence segmentation (https://github.com/unicode-org/icu4x/pull/4213)
icu_unicodeset_parse- Add support to parse UAX#29 properties (https://github.com/unicode-org/icu4x/pull/4175)
-
Data model and providers
icu_provider- Implement Any/BufferProvider for some smart pointers (https://github.com/unicode-org/icu4x/pull/4255)
icu_provider_blob- New V2 serialization schema (https://github.com/unicode-org/icu4x/pull/4207)
icu_datagen- New CLI option
--format=blob2(https://github.com/unicode-org/icu4x/pull/4207) - CLDR 44 compatibility fixes (https://github.com/unicode-org/icu4x/pull/4134, https://github.com/unicode-org/icu4x/pull/4156, https://github.com/unicode-org/icu4x/pull/4158)
- Fix
supported_localesfor collator keys (https://github.com/unicode-org/icu4x/pull/4169) - CLI: Fix behavior of
--segmenter-lstm-rootsuch that it does not overrideicuexportdata-root(https://github.com/unicode-org/icu4x/pull/4277) - Make datagen work without
CARGO_PKG_RUST_VERSIONenvironment variable (https://github.com/unicode-org/icu4x/pull/4292)
- New CLI option
-
Utilities
databake- Add implementations for
HashSet,HashMap,BTreeSet,BTreeMap(https://github.com/unicode-org/icu4x/pull/4268, https://github.com/unicode-org/icu4x/pull/4274, https://github.com/unicode-org/icu4x/pull/4295) - Improvements to
databake::test_bake!()(https://github.com/unicode-org/icu4x/pull/4182)
- Add implementations for
fixed_decimal- Experimental rounding increment support (https://github.com/unicode-org/icu4x/pull/4219, https://github.com/unicode-org/icu4x/pull/4246)
litemap- Implement
databake::BakeonLiteMap(https://github.com/unicode-org/icu4x/pull/4275)
- Implement
tinystr- Better Debug impl for UnvalidatedTinyAsciiStr (https://github.com/unicode-org/icu4x/pull/4189)
zerovec- Fix indexing bug in
ZeroMap2d::insert(https://github.com/unicode-org/icu4x/pull/4160)
- Fix indexing bug in
icu4x 1.3.x #
Some crates received additional 1.3.x patch releases:
- Fix #4165, locale "vi" not working in Collator:
icu_collator@1.3.3icu_collator_data@1.3.3
- Fix #4232, some locale data being improperly deduplicated:
icu_compactdecimal_data@1.3.4icu_datagen@1.3.3icu_datetime_data@1.3.4icu_decimal_data@1.3.4icu_displaynames_data@1.3.4icu_properties_data@1.3.4
icu4x 1.3.2 (Oct 4, 2023) #
1.3.2 was released to clean up the range dependency on zerovec deliberately introduced in 1.3.0. It includes all previous 1.3.x changes
icu4x 1.3.1 #
A subset of crates received a 1.3.1 patch release, to incorporate documentation fixes (https://github.com/unicode-org/icu4x/pull/4096, https://github.com/unicode-org/icu4x/pull/4097, https://github.com/unicode-org/icu4x/pull/4099, https://github.com/unicode-org/icu4x/pull/4101). These crates were: icu_calendar, icu_casemap, icu_datetime, icu_locid_transform, icu_provider.
icu4x 1.3 (Sep 25, 2023) #
- General
- All updated crates:
- License updated to the new Unicode license
- MSRV is now 1.66
- Components now have the option to use
compiled_data, an efficient default set of data baked in to the component. This is now recommended over using a data provider unless you have specific needs driving it.
- All updated crates:
- Data model and providers
icu_provider:- Make
DataPayloadconstructible from&'static M::Yokeable(https://github.com/unicode-org/icu4x/pull/3467) - Add
ExportableDataPayload::eq_dyn(https://github.com/unicode-org/icu4x/pull/3639) - Better docs (https://github.com/unicode-org/icu4x/pull/3740, https://github.com/unicode-org/icu4x/pull/3742)
- Moving fallback options into
icu_provider(https://github.com/unicode-org/icu4x/pull/3651) - Add
DataPayload::dynamic_cast_mut(https://github.com/unicode-org/icu4x/pull/3952) - (experimental) Add
AuxiliaryKeytoDataLocale(https://github.com/unicode-org/icu4x/pull/3872)
- Make
icu_datagen:- Completely revamped API (https://github.com/unicode-org/icu4x/pull/3705, https://github.com/unicode-org/icu4x/pull/3861, https://github.com/unicode-org/icu4x/pull/3951, https://github.com/unicode-org/icu4x/pull/4008, https://github.com/unicode-org/icu4x/pull/4041, https://github.com/unicode-org/icu4x/pull/3669)
- The old API is still available behind the
legacy_apidefault Cargo feature
- The old API is still available behind the
- Updated baked data output to be usable by
compiled_data(https://github.com/unicode-org/icu4x/pull/3449, https://github.com/unicode-org/icu4x/pull/3493, https://github.com/unicode-org/icu4x/pull/3549, https://github.com/unicode-org/icu4x/pull/3500, https://github.com/unicode-org/icu4x/pull/3847) - Add recommended locale set and expand regions in datagen (https://github.com/unicode-org/icu4x/pull/3586)
- Make datagen faster by caching more things (https://github.com/unicode-org/icu4x/pull/3625)
- Consume CLDR-JSON resources keyed with default script (https://github.com/unicode-org/icu4x/pull/3772, https://github.com/unicode-org/icu4x/pull/3786)
- (cli) Warn for
--locales all(https://github.com/unicode-org/icu4x/pull/3691)
- Completely revamped API (https://github.com/unicode-org/icu4x/pull/3705, https://github.com/unicode-org/icu4x/pull/3861, https://github.com/unicode-org/icu4x/pull/3951, https://github.com/unicode-org/icu4x/pull/4008, https://github.com/unicode-org/icu4x/pull/4041, https://github.com/unicode-org/icu4x/pull/3669)
icu_provider_adapters:- Deprecated
LocaleFallbacker, use throughicu_locid_transform
- Deprecated
icu_provider_blob:- Returning
ExtraneousLocaleinBlobDataProvider(https://github.com/unicode-org/icu4x/pull/3562) - Fix empty keys in
BlobDataProvider(https://github.com/unicode-org/icu4x/pull/3551)
- Returning
icu_provider_fs:- Correct error types for
icu_provider_fs(https://github.com/unicode-org/icu4x/pull/3682)
- Correct error types for
icu_testdata:- This crate has been superseded by
compiled_dataand is now deprecated. - Data for new components will not be added, and it will not be updated for ICU4X 2.0.
- This crate has been superseded by
- Components:
- Cross component:
- All component crates now have a default
compiled_datafeature that enables constructors that do not require data providers, instead using data compiled into the library
- All component crates now have a default
icu_calendar- Support for new non-Gregorian calendars: Persian (Solar Hijri), ROC, Hebrew, Chinese, Korean (Dangi), and Islamic (civil, observational, tabular, and Umm al-Qura). Lunar calendars are not yet fully optimized.
- Add
OrdandPartialOrdtoicu_calendartypes (https://github.com/unicode-org/icu4x/pull/3468) - Add cyclic year to
FormattableYear(https://github.com/unicode-org/icu4x/pull/3581)
icu_casemap- Newly stabilized crate
icu_collator- No additional changes
icu_collections- Fixed JSON serialization of unpaired surrogates (https://github.com/unicode-org/icu4x/pull/3892)
icu_datetime- Formatting for the new calendars added in
icu_calendar- Includes preview formatting for Chinese and Korean with cyclic years and leap months
- Hardening of edge cases surrounding the
Calendartrait TimeZoneFormatter::load_*_formatfunctions:- Those with a provider argument gain an equivalent
TimeZoneFormatter::load_*_formatgated bycompiled_data - Those without a provider argument renamed to
TimeZoneFormatter::include_*_formatwith deprecation warning
- Those with a provider argument gain an equivalent
- Formatting for the new calendars added in
icu_decimal- No additional changes
icu_list- No additional changes
icu_locid- Declarative macros are now re-exported from their own modules; old exports are deprecated; for example,
use icu::locid::extensions::unicode::valuenow works, instead ofuse icu::locid::extensions_unicode_value
- Declarative macros are now re-exported from their own modules; old exports are deprecated; for example,
icu_locid_transform- New home of
LocaleFallbackerandfallbackmodule previously found inicu_provider_adapters - New
LocaleDirectionalityto access the right-to-left status of locales
- New home of
icu_normalizer- No additional changes
icu_plurals- No additional changes
icu_properties- Compiled data functions added to
setsandmapswithoutload_prefix:icu::properties::sets::basic_emoji()
- Compiled data functions added to
icu_segmenter- Algorithmic bug fixes such as https://github.com/unicode-org/icu4x/pull/3392
icu_timezone- New
IanaToBcp47Mapperfor converting between IANA time zone names and BCP-47 time zone names (https://github.com/unicode-org/icu4x/pull/2909)
- New
- Cross component:
- Utils:
calendrical_calculations: New crate: 0.1.0crlify: 1.0.2 -> 1.0.3databakeanddatabake_derive: 1.0.5 -> 1.0.6::paths changed (https://github.com/unicode-org/icu4x/pull/3450)
deduplicating_array: 0.1.4 -> 0.1.5fixed_decimal: 0.5.3 -> 0.5.4- Fix rounding bug (https://github.com/unicode-org/icu4x/pull/3644)
- Reexport some types to be more consistent with ICU4X naming (https://github.com/unicode-org/icu4x/pull/3945)
litemap: 0.7.0 -> 0.7.1- Add const litemap getter functions for common types (https://github.com/unicode-org/icu4x/pull/3416)
icu_pattern: 0.1.4 -> 0.1.5tinystr: 0.7.1 -> 0.7.2- Add
UnvalidatedTinyAsciiStr(https://github.com/unicode-org/icu4x/pull/3406) - Make compatible with
T: BakeonZeroVec(https://github.com/unicode-org/icu4x/pull/3451)
- Add
tzif: 0.2.1 -> 0.2.2writeable: 0.5.2 -> 0.5.3yokeandyoke_derive: 0.7.1 -> 0.7.2- Make
impl<...> Debug for Yoke<...>implementation sound (https://github.com/unicode-org/icu4x/pull/3686) - Add
KindaSortaDanglinginternal type to make Yoke safe under strong protection (https://github.com/unicode-org/icu4x/pull/3735)
- Make
zerofromandzerofrom_derive: 0.1.2 -> 0.1.3- Expand
ZeroFromto cover cases where attrs can borrow (https://github.com/unicode-org/icu4x/pull/3770) - Expand
ZeroFromimpl on unsized &T (https://github.com/unicode-org/icu4x/pull/3467)
- Expand
zerovecandzerovec_derive: 0.9.4 -> (0.9.6)- Add
ZeroTrie, an efficient string-to-int collection (https://github.com/unicode-org/icu4x/pull/2722) - Handle incorrect
VarZeroVecbytes representation (https://github.com/unicode-org/icu4x/pull/3883) - Better soundness under stacked borrows (https://github.com/unicode-org/icu4x/pull/3513, https://github.com/unicode-org/icu4x/pull/3524, https://github.com/unicode-org/icu4x/pull/3515, https://github.com/unicode-org/icu4x/pull/3509)
- Deserialization for
VarZeroVec<VarZeroSlice>, take 2 (https://github.com/unicode-org/icu4x/pull/3649) - Fix
MultiFieldsULE(https://github.com/unicode-org/icu4x/pull/3642) - Add initial
zeroslice!andzerovec!macros https://github.com/unicode-org/icu4x/pull/3453, Updatezerovec!/zeroslice!macro syntax to nested arrays (https://github.com/unicode-org/icu4x/pull/3611) - Add support for custom varule fields in #[make_varule] (https://github.com/unicode-org/icu4x/pull/3580)
- Add
UnvalidatedChar(https://github.com/unicode-org/icu4x/pull/3444) get_copied_byAPI (https://github.com/unicode-org/icu4x/pull/3351)
- Add
zerovecandzerovec_derive: 0.9.6 -> 0.10.0:- Adding
T: Bakebound onZeroVec'sBake(https://github.com/unicode-org/icu4x/pull/3451)
- Adding
- FFI:
- Feature support
- Case mapping exports:
ICU4XCaseMapperICU4XCaseMapCloserICU4XTitlecaseMapperICU4XTrailingCase
- Other new exports:
ICU4XCodePointSetBuilderICU4XLocaleDirectionICU4XLocaleDirectionalityICU4XLocaleFallbackSupplementICU4XIanaToBcp47Mapper
- Enum variants added for calendar types and errors
- Case mapping exports:
- C++
- Don't use
std::movefor inline arguments (https://github.com/rust-diplomat/diplomat/pull/336)
- Don't use
- Feature support
- Experimental:
bies- No additional changes
icu_compactdecimal- Convenience functions for formatting
f64andFixedDecimal(https://github.com/unicode-org/icu4x/pull/3699)
- Convenience functions for formatting
displaynames- New
VariantDisplayNamesfor accessing display names of locale variant subtags (https://github.com/unicode-org/icu4x/pull/3461) LocaleDisplayNamesFormatternow supports full UTS 35 language identifier formatting (https://github.com/unicode-org/icu4x/pull/3587)
- New
harfbuzz- No additional changes
ixdtf- No additional changes
relativetime- No additional changes
transliterate: New crate: 0.1.0unicodeset_parse: New crate: 0.1.0zerotrie: New crate: 0.1.0
icu4x 1.2.x (Apr 17, 2023) #
Note: A subset of crates received patch releases in the 1.2 stream.
-
databake: 0.1.5- Fixed #3356, adding
allowfor clippy false-positives
- Fixed #3356, adding
-
icu_capi1.2.1- Fixed #3344,
buffer_providerfeature accidentally pulling in extra crates
- Fixed #3344,
-
icu_capi1.2.2- Use
intptr_tinstead ofssize_tfor portability (diplomat #326)
- Use
-
icu_datagen1.2.1- Fixed #3339, incorrect Cargo features
-
icu_datagen1.2.3 -
icu_datagen1.2.4- Remove dependency on
clap's"cargo"feature to better support non-Cargo users (unicode-org#3388)
- Remove dependency on
-
icu_datagen1.2.5- Remove runtime dependency on segmenter data pulled from the cargo cache (unicode-org#3391)
-
icu_locid_transform1.2.1- Fixed #3332, missing
+?Sizedbound
- Fixed #3332, missing
-
icu_segmenter1.2.1- Fixed #3341, incorrect results on some strings with mixed scripts
-
icu_provider1.2.1- Do not autoenable
postcard/use-std(#3376)
- Do not autoenable
-
icu_datetime1.2.1- Remove superfluous
JapaneseEraV1provider bounds onTypedZonedDateTimeFormatter#3379
- Remove superfluous
icu4x 1.2 (Apr 13, 2023) #
- General
- All updated crates:
- Add missing
Debugimpls (unicode-org#3206) - Update Rust edition to 2021 (unicode-org#3075)
- Internal clippy fixes
- Unless otherwise specified, all crate updates are to version 1.2.
- Out-of-cycle releases do not get their own changelog entries, so some entries may span multiple patch or pre-1.0 minor versions.
- Add missing
- All updated crates:
- Data model and providers
icu_provider:- Add support for silencing expected
DataErrors (unicode-org#3262) - Removing
dhatdependency (unicode-org#3138) - Make trait
DataMarker: 'static(unicode-org#3137)
- Add support for silencing expected
icu_datagen: (includes patch updates 1.1.1 and 1.1.2)- (lib) Add
Out::BakedandBakedOptions; deprecateOut::Module(unicode-org#3130) - (cli) Bump clap to 4.0, move to using derive (unicode-org#3149)
- Pare down datagen deps (unicode-org#3160)
- Support changes from CLDR 43 (unicode-org#3182, unicode-org#3201, unicode-org#3204, unicode-org#3205)
- Add support for complemented range iterators (unicode-org#3198)
- Using byte string literals in databake (unicode-org#3040)\
- Datagen support for all new component features
- (performance) Less
ZeroMapmutation in datagen (unicode-org#3098)
- (lib) Add
icu_provider_adapters: No other changesicu_provider_blob: No other changesicu_provider_fs:- Remove sha2 dep (unicode-org#3160)
icu_provider_macros: No other changes
- Components:
- Cross component: No additional cross-component changes
icu_calendar- Document the bounds of
IsoSecond,MinuteandHour(unicode-org#3156)
- Document the bounds of
icu_collator: No other changesicu_collections:- Add
to_u32for TrieValue (unicode-org#3222) - Add
CPT::try_alloc_map_value(unicode-org#3207) - Add support for coalescing range iterators (unicode-org#3198)
- Allow inversion lists to be built from ranges that include
char::MAX(unicode-org#3203)
- Add
icu_datetime: No other changesicu_decimal- Add
From<GroupingStrategy>forFixedDecimalFormatterOptions(unicode-org#3045)
- Add
icu_listListJoinerPattern::from_parts_unchecked()is nowfrom_parts()and panics when necessary (unicode-org#3052)
icu_locid- Reduce size of internal
ShortVecabstraction (unicode-org#3200) - Use
Boxin place ofVecinShortVec(unicode-org#3220)
- Reduce size of internal
icu_locid_transform- The default set of likely subtags is now only the subset of languages that have a basic or greater CLDR coverage level; the full set is much larger in CLDR 43 and can be accessed via new constructors (unicode-org#3148, unicode-org#3158, unicode-org#3197)
icu_normalizer: No other changesicu_plurals: No other changesicu_properties- Add ability to obtain enumerated property value names from enum values (unicode-org#3222, unicode-org#3276)
- Add ability to obtain enumerated property values from their names (unicode-org#3103, unicode-org#3152)
- Add support for runtime-selected property lookup (unicode-org#3169)
- Add support for complemented range iterators (unicode-org#3198)
- Support data for Bidi properties with combined data structure (unicode-org#3026, unicode-org#3258)
icu_segmenter- Graduated from experimental
- Add "auto" feature, enable "lstm" feature, establish new data key structure, improve error handling, and revise word and line segmenter constructors (unicode-org#3010, unicode-org#3267, unicode-org#3270)
- Rename
icu_segmenterenums (unicode-org#3285) - Allow access to rule status via word_type in WordSegmenter and over FFI (unicode-org#3139, unicode-org#3275)
- Upgrade segmenter to Unicode 15.0.0 (unicode-org#3273)
- Return a line break at index 0 (unicode-org#3289)
- Improve the LSTM code and data model to be zero copy, improve error handling, be future-proof, and vectorize more operations (unicode-org#3210, unicode-org#3217, unicode-org#3233, unicode-org#3250, unicode-org#3254, unicode-org#3264, unicode-org#3291)
- Remove ndarray dependency (unicode-org#3192)
- Silencing expected
DataErrors (unicode-org#3262) - Fix SB10 rule (unicode-org#3126)
- Polished docs and examples
icu_timezone: No other changes
- Utils:
crlify: No change (still at 1.0.1)databake: 1.1.3 -> 1.1.4- Using byte string literals in databake (unicode-org#3040)
deduplicating_array: 0.1.3 -> 0.1.4fixed_decimal: 0.5.2 -> 0.5.3litemap: 0.6.1 -> 0.7.0- Move FromIterator impl to new
StoreFromIterabletrait, allowing constructingLiteMaps with different backing stores (unicode-org#3220)
- Move FromIterator impl to new
pattern: 0.1.3 -> 0.1.4tinystr: No change (still at 0.7.1)tzif: No change (still at 0.2.1)writeable: 0.5.1 -> 0.5.2yoke: 0.7.0 -> 0.7.1yoke-derive: 0.7.0 -> 0.7.1zerofrom: 0.1.1 -> 0.1.2zerofrom-derive: 0.1.1 -> 0.1.2zerovec: 0.9.2 -> 0.9.4- Add initial ZeroHashMap (unicode-org#2579)
- Add
ZeroSlice::get_as_array()(unicode-org#3192) - Add range dep of yoke to zerovec (unicode-org#3089)
zerovec-derive: 0.9.2 -> 0.9.4- Add
#[zerovec::derive(Hash)](unicode-org#2579) - Avoid using derive on autogenerated packed types (unicode-org#3069)
- Add
- FFI:
- Feature support
- Property value-to-name mappings (unicode-org#3196)
UnicodeSets(including exemplar chars) (unicode-org#3177)- Runtime-selected property lookup (unicode-org#3169)
- Property lookup ranges and GeneralCategoryGroup (unicode-org#3230)
- LocaleExpander: Add extended and non-extended constructors (unicode-org#3197)
- Fill in
BreakIteratorAPI (unicode-org#3275) - Bidi reorder_visual (unicode-org#3183)
- (experimental) Strongly typed display names API (unicode-org#3190, unicode-org#3188)
- Add feature slicing to
icu_capi(unicode-org#3216) - Better FFI provider ownership (unicode-org#3140)
- Feature support
- Experimental:
bies: 0.2.0 -> 0.2.1icu_casemap: 0.7.1 -> 0.7.2icu_compactdecimal: 0.1.0 -> 0.2.0- Support configurable grouping separators in CompactDecimalFormatter (unicode-org#3045)
icu_displaynames: 0.8.0 -> 0.10.0- Add ScriptDisplayNames (unicode-org#3317)
- Add LanguageDisplayNames with support for variants (unicode-org#3058, unicode-org#3113)
- Add stronger typing (unicode-org#3190)
icu_harfbuzz: New experimental port: Harfbuzz integration for ICU4X (v0.1.0)icu_relativetime: 0.1.0 -> 0.1.1
icu4x 1.1 (Jan 26, 2023) #
-
icu_calendar- Fix bug in
simple_week_of()around unit size (unicode-org#2951) - Fix math in calendar (unicode-org#2714)
- Add
div_rem_euclidand use it in icu_calendar (unicode-org#2704) - Fix Time::from_minute_with_remainder_days to handle negatives (unicode-org#2643, unicode-org#2702)
- doc improvements
- Fix bug in
-
icu_casemap- doc improvements
-
icu_collator- doc improvements
-
icu_collections- Add APIs for returning exemplar characters data (unicode-org#2812)
- Readable JSON inversion lists (unicode-org#2855)
- Add
UnicodeSetthat supports strings (unicode-org#2796) - Add documentation on
CodePointTriedetails and perf considerations (unicode-org#2717)
-
icu_codepointtrie_builder- internal improvements
-
icu_datetime- internal and doc improvements
-
icu_decimal- internal and doc improvements
-
icu_displaynames- DisplayNames fixes (unicode-org#2918)
- Rename
Territory->Regionfor display names component (unicode-org#2895) - Transformer code for
Languagedisplay names (unicode-org#2871) - Adding a function to get display name for a region. (unicode-org#2816)
- Transformer code for display names component. (unicode-org#2635)
- doc improvements
-
icu_list- Untangling list provider from logic and fixing big endian safety bug (unicode-org#2994)
- Not allocating
Writeables for regex evaluation (unicode-org#2991) - doc improvements
-
icu_locid- Reject duplicated extensions (unicode-org#2893)
- More borrowing in locid's
write_to_string(unicode-org#2693) - doc improvements
-
icu_locid_transform- Clean up dependency specifications so
serdeisn't pulled in by default (unicode-org#2696) - doc improvements
- Clean up dependency specifications so
-
icu_normalizer- internal and doc improvements
-
icu_plurals- doc improvements
-
icu_properties- Add APIs for returning exemplar characters data (unicode-org#2812)
- Add API and testdata for
Basic_Emojiproperty (unicode-org#2802) - Add
UnicodeSetthat supports strings (unicode-org#2796) - Update
Scriptproperty value enums (unicode-org#2787) - doc improvements
-
icu_segmenter- Make metacrate features more specific (unicode-org#2932)
- Remove
serdedependency from segmenter withlstmfeature. (unicode-org#2904) - Simplify construction of grapheme cluster break iterators (unicode-org#2870)
- Store grapheme cluster payload instead of grapheme cluster segmenter. (unicode-org#2864)
#[no_std]for LSTM segmenter (unicode-org#2845)- icu_segmenter: enforce
clippy::indexing_slicing. (unicode-org#2325) - Use
GraphemeClusterSegmenterinDictionarySegmenterandLstmSegmenter(unicode-org#2716) - Rename
*BreakSegmenterto*Segmenter(unicode-org#2707) - Remove unnecessary language check for East Asian language (SA property) (unicode-org#2705)
- internal and doc improvements
-
icu_timezone- Adds a bytes parsing API for
GMTOffsetforCustomTimeZoneand FFI (unicode-org#2943, unicode-org#2955) - doc improvements
- Adds a bytes parsing API for
-
icu_provider_adapters- Add more
inner_mutfunctions inicu_provider_adapters(unicode-org#2987) - Fix error propagation in
MultiForkByErrorProvider(unicode-org#2986) - Add mutation methods to
MultiForkByErrorProvider(unicode-org#2972)
- Add more
-
icu_provider_blob- internal and doc improvements
-
icu_provider- Setting correct
DataErrorfor.as_deserializing(),.as_downcasting()(unicode-org#2993) - doc improvements
- Setting correct
-
icu_datagen- Removing experimental feature from datagen (unicode-org#3005)
- Fixing Spanish list regex (unicode-org#2989)
- Datagen CLI improvements (unicode-org#2950)
- Some reexports for datagen (unicode-org#2958)
- Databake improvements (unicode-org#2906)
- Exclude certain collations by default and add option to include them (unicode-org#2789)
- Allowing no keys in datagen CLI (unicode-org#2731)
- Fixing baked datagen for no keys and keys with no data (unicode-org#2698)
- Internal and doc improvements
-
icu_provider_fs- internal and doc improvements
-
icu_testdata- stabilized metadata
- doc improvements
- CLDR 42 and ICU 72 data
-
bies- Bumped
writeableversion
- Bumped
-
databake- Doc improvements
-
fixed_decimal- Treat strings starting with a decimal point as valid in
FixedDecimal::from_str()(unicode-org#2937) - The actual formatting part of compact decimal formatting (unicode-org#2898)
- Allow noncompact
CompactDecimal(unicode-org#2889) CompactDecimalandScientificDecimal(unicode-org#2847)- doc improvements
- Treat strings starting with a decimal point as valid in
-
icu_pattern- internal improvements
-
litemap- internal and doc improvements
-
tinystr- Add
stdfeature andErrorimpl forTinyStrError(unicode-org#3009) - internal and doc improvements
- Add
-
tzif- internal and doc improvements
-
writeable- Using
coreinteger log when available (unicode-org#3015) usizeandisizeimplementation- internal and doc improvements
- Using
-
yoke- Add
prove_covariance_manuallyguard forCoerceUnsized(unicode-org#2936) - Allow
clippy::forget_copyinderive(Yokeable)impl (unicode-org#2775) - Fix soundness issue in
Yoke::attach_to_cart()around implied bounds #2949
- Add
-
zerovecZeroMap2dcursors
Bug fixes in 1.0.x #
icu_collator 1.0.1 #
- Made case level setting actually take effect (unicode-org#2892)
icu4x 1.0 (Sept 27, 2022) #
- General
- Update license to Unicode-DFS-2016 (unicode-org#2303)
- Major improvements to documentation, bechmarks, and examples
- Various performance and codesize improvements
- FFI for all non-experimental components
- Data model and providers
- Polished baked data provider (unicode-org#2098, unicode-org#2126, unicode-org#2147)
- Data key extraction from binary (unicode-org#1950)
- Add
LocaleFallbackerwith locale fallback algorithm (unicode-org#2036, unicode-org#2115, unicode-org#2186, unicode-org#2567) - Making
DataProvider: Sync + Send(unicode-org#1853) - Update to Postcard 1.0 (unicode-org#2037, unicode-org#2091, unicode-org#2438)
- De-duplication in
BlobDataProvider(unicode-org#2062) - Move
map_projectto closures (unicode-org#2185) - Renaming of many traits and functions in
icu_provider(unicode-org#2207, unicode-org#2222, unicode-org#2223) - Passing
DataLocaleby reference (unicode-org#2224) - Fix feature specification in provider/fs (unicode-org#2527)
- Rename
DataKeymethods and returnDataKeyPath(unicode-org#2565) - Add some useful data provider impls; refactor
AnyPayloadProvider(unicode-org#2564) - Removing
StaticDataProvider(unicode-org#2582) - Removing
InvariantDataProvider(unicode-org#2159) - Renaming load_payload, load_resource (unicode-org#2222)
- Renaming
DataOptionstoDataLocale(unicode-org#2223) - Use an abstract predicate function in
ForkByKeyProvider(unicode-org#2249) - Add
UnvalidatedStrand use it inLocaleFallbackParentsV1(unicode-org#2502) - Add some useful data provider impls; refactor
AnyPayloadProvider(unicode-org#2564)
- Components:
- Cross component:
FormattoFormatterrename (unicode-org#2184)- Uniform constructor style across all components, see #2573 (unicode-org#2293, unicode-org#2305, unicode-org#2309, unicode-org#2316, unicode-org#2318, unicode-org#2326, unicode-org#2327, unicode-org#2329, unicode-org#2330, unicode-org#2332, unicode-org#2333, unicode-org#2334)
- Remove
format_to_writes (unicode-org#2528) - Make error enums more consistent (unicode-org#2649)
- More Copy arguments (unicode-org#2654)
calendar- Emit month codes from calendars (unicode-org#2053)
- Add
Date::new_from_codes(); fix up per-calendar constructor functions (unicode-org#2255) - Fix iso-to-fixed conversion (unicode-org#1898)
- Ethiopic calendars (unicode-org#1831, unicode-org#1902)
- Replace hour/minute/second constructors
new_unchecked()with getternumber()(unicode-org#1922) - Improve and rename
types::Year/types::Month(unicode-org#2157) - Add
japanextcalendar (unicode-org#2181) - Replace unbounded arithmetic for calendar numeric types with bounded arithmetic. (unicode-org#2273)
- Make
Japanextits own calendar type (unicode-org#2311) - Pick default calendar based off of locale in
AnyCalendar - Make
offset_datehandle wraparounds for months (unicode-org#2373) - Hide duration stuff, rename
IncludedInAnyCalendar(unicode-org#2426) week_ofrefactoring (unicode-org#2462)- Fix arithmetic in Indian calendar (unicode-org#2479)
- Infallible
from_minutes_since_local_unix_epoch()(unicode-org#2646)
collator- New component (unicode-org#1706)
- Validate the length of last_primaries (unicode-org#1916)
- Use a higher numeric value for
Strength::Identical(unicode-org#1942) - Move and unescape collator and normalizer tests (unicode-org#1943)
- Tweak CollationMetadataV1 documentation and dead code (unicode-org#1914)
- GIGO fix-ups for the normalizer and the collator (unicode-org#1931)
- split_first_u16/split_first_u24 -> split_first (unicode-org#2459)
- Create options bag for CollatorOptions (unicode-org#2475)
- Clean up FFFD magic numbers in Collator with REPLACEMENT_CHAR (unicode-org#2496)
- Add traditional spanish and plumbing to make it work (unicode-org#2497)
collections- New component (unicode-org#2294, unicode-org#2323, unicode-org#2328, unicode-org#2336)
- Rename
CodePointSettoCodePointInversionList(unicode-org#2230) - Allow
CodePointTrieto determineerror_valueat runtime from data (unicode-org#2301) - Use GIGO with debug assertion in Char16Trie (unicode-org#2537)
datetime- Formatting for
AnyCalendars (unicode-org#1987, unicode-org#2146) - Renaming
DateTimeFormatter(etc) toTypedDateTimeFormatterandAnyDateTimeFormattertoDateTimeFormatter(unicode-org#2298) - DateFormatter cleanups (unicode-org#2304)
- Remove Calendar type parameter from
TimeFormat(unicode-org#2282) - Class Hierarchy for
DateTimeFormat(split intoDateFormat,TimeFormat, etc) (unicode-org#2133) - Making
time_granularitypublic (unicode-org#1867) - Add fractional seconds support to components bag (unicode-org#1873)
- Use
FixedDecimalFormatinDateTimeFormat(unicode-org#1952) - Include module name to disambiguate Pattern (unicode-org#1889)
- Use month codes in formatting (unicode-org#2071)
- Split date and time data keys. (unicode-org#2093)
- Move
Formatted[Zoned]DateTimeover to preextracting the date time input info (unicode-org#2138, unicode-org#2205) - Remove
MockZonedDateTime(unicode-org#2231) - Add an offset_fallback field in
TimeZoneFormatV1(unicode-org#2253) - Remove
HourCyclefrom the public Lengths API (unicode-org#2331) - Move mock datetime parsing code to test modules (unicode-org#2436)
- Stop returning error on mismatched locale and type calendar (unicode-org#2477)
- Change default length to medium (unicode-org#2596)
- Make expect_pattern GIGO (unicode-org#2650)
- Formatting for
decimal- Don't panic on invalid grouping sizes (unicode-org#2042)
- Remove signum and sign display options (unicode-org#2070)
- Add numbering system support (unicode-org#2246)
list- ListStyle -> ListLength and add _with_length (unicode-org#2628)
locid- Add
remove()for vertical fallback (unicode-org#1992) - Update
LocaleandLanguageIdentifiercomparison functions tostrict_cmp()andnormalizing_eq()(unicode-org#2020) normalizing_eq(),strict_cmp()for LSRV subtags (unicode-org#2048)- Add
strict_cmp_iter()(unicode-org#2111, unicode-org#2114) - Removing auto-derived Ord impl for Locale/LangId (unicode-org#2142)
- Enable
localemacro to support single unicode key value pair extension (unicode-org#2382) - Reducing
locid_idAPI surface (unicode-org#2484) private::Keyandother::Keyto::Subtag(unicode-org#2632)
- Add
locid_transform- Rename from
icu::locale_canonicalizer(unicode-org#2381) LocaleCanonicalizer/LocaleExpanderrefactor (unicode-org#2338)
- Rename from
normalizer- Promoted from experimental (unicode-org#2058)
- Add ComposingNormalizer for NFC, NFKC, and UTS 46 (unicode-org#2039)
- GIGO fix-ups for the normalizer and the collator (unicode-org#1931)
- Add support for NFKD and the decomposed counterpart of UTS 46 without ignored and disallowed (unicode-org#1967)
- Simplify Hangul composition (unicode-org#2200)
- Make sink-writing normalization methods non-experimental (unicode-org#2201)
- Uses tries instead of inversion lists for normalization data (unicode-org#2235)
- Consolidate the two auxiliary tries to the main NFD trie (unicode-org#2371)
- Use
charinstead ofU24in normalizer data (unicode-org#2481) - Make NFKD and UTS 46 data store only the difference form NFD (unicode-org#1984)
plurals- Rename
select()tocategory_for()forPluralRules(unicode-org#2287) - Use From instead of TryFrom for signed integers (unicode-org#2593)
from_tr35_string->get_for_cldr_string(unicode-org#2633)- Make PluralOperands fields private, add static constructor (unicode-org#2598)
- Rename
properties- Better properties return values (unicode-org#2112, unicode-org#1990, unicode-org#2277, unicode-org#2555)
- Move properties data over to an (extensible) enum (unicode-org#2140)
- Renaming unicode property data struct names (unicode-org#2198)
timezone- New component, split from
datetime(unicode-org#2265) - Add time period metazone to
TimeZonesProvider(unicode-org#1961) - Convert metazone period from string to i32 (unicode-org#2085)
- Improvements to
MetaZoneCalculator(unicode-org#2274) - Add
TimeVariantwrapper (unicode-org#2289) - TimeVariant -> ZoneVariant with a few more docs (unicode-org#2427)
- Assorted TimeZone fixes (unicode-org#2478)
- New component, split from
- Cross component:
- Utils:
crlify: No updatesdatabake:- Moved over from
crabbake(unicode-org#2068) - Some databake improvements (unicode-org#2150)
- Using static
LiteMaps in databake (unicode-org#2264)
- Moved over from
deduplicating_array: No updatesfixed_decimal:- Switch FixedDecimal to a trivaluate sign (unicode-org#2025)
- Remove negate (unicode-org#2060)
- Improve integer operations (unicode-org#1924)
- Add
FixedDecimal::concatenate_right()(unicode-org#1953) - Implement
ceil(),floor()andtruncate()functions (unicode-org#1923) - Define "magnitude" and introduce "position" concept (unicode-org#1981)
- Support for rounding modes (unicode-org#2000, unicode-org#2100, unicode-org#2104, unicode-org#2261)
- Make
multiply_pow10)_be infallible (unicode-org#2285)
litemap:- Remove
serde_jsondep from zeromap/litemap and align features (unicode-org#1939) LiteMapof&'a [(K, V)](unicode-org#2242)- Enable
ShortVecas a backend forLiteMap(unicode-org#2356)
- Remove
pattern: No updatestinystr:- Make
Option<TinyAsciiStr>be the same size asTinyAsciiStr(unicode-org#2430)
- Make
tzif:- New crate (unicode-org#2019)
- Parse POSIX time-zone strings using Combine (unicode-org#1973)
- Parse TZif binary files using Combine (unicode-org#1999)
writeable:- Rename
write_len(unicode-org#2529)
- Rename
yoke:- Deprecate yoke's
badlymethods (unicode-org#1930) - Rename
Yoke::project()functions to::map_project()(unicode-org#1955) - Remove stable_deref_trait/alloc from yoke's default feature set (unicode-org#2094)
- Move
map_project()to closures (unicode-org#2185)
- Deprecate yoke's
zerofrom: No updateszerovec:- Make
VarZeroVecformat configurable (unicode-org#2306) - Add
FlexZeroVec(unicode-org#1790) - Add
NicheBytestrait andNichedOptionULE(unicode-org#2501) - Turn ZeroVec into a struct for optimization (unicode-org#2599, unicode-org#2622)
- Improve performance of VarZeroVec::deserialize and add provider benches (unicode-org#2603)
- Add array impl for
ZeroMapKV(unicode-org#1875) - Remove lifetime from
ZeroVecLike(unicode-org#1901) ZeroVecLikecleanup (unicode-org#2024)- Remove
serde_jsondep from zeromap/litemap and align features (unicode-org#1939) - Make various ZeroVec methods
const(unicode-org#1976) - Refactor ZeroMap2d and add get_by functions (unicode-org#1876)
- Add more zerovec impls for
usizeandFlexZeroVec(unicode-org#2023) - Change charULE from 4 bytes to 3 bytes (unicode-org#2015)
- More impls in zerovec crate (unicode-org#2054)
- Add binary search and other utilities to
FlexZeroVec(unicode-org#2284) - Remove
KeyErrorand renameget()toget_2d()(unicode-org#2279) EncodeAsVarULEforCow(unicode-org#2376)- Add
ExactSizeIteratorforFlexZeroVec::iter_*()(unicode-org#2580) - Add permutation to ZVL containers (unicode-org#2605)
- Make
- FFI:
- All non-experimental components now covered by FFI
- Add FFI error strategy (unicode-org#2045)
- Configurable DataProvider FFI (unicode-org#2526)
- Experimental:
bies:casemapping:segmenter:- Expose
RuleBreakIteratoras a public interface (unicode-org#2408) - Merge
segmenter_lstmwith segmenter (unicode-org#2087) - Use
CodePointTriein Segmenter (unicode-org#1839) - Move language detection to language.rs (unicode-org#1689)
- Simplify function in rule_segmenter (unicode-org#1880)
- Use dictionary segmenter for word. (unicode-org#1936)
- Remove std dependency from segmenter_lstm. (unicode-org#2064)
- Add Lao and Khmer LSTM models (unicode-org#2120)
- Use multiple dictionaries for line/word segmenter. (unicode-org#2209)
- Add a feature option not to use unicode-segmentation (unicode-org#2212)
- Remove two char types in line segmenter and polish utf8 iterator naming (unicode-org#2269)
- Expose
icu4x 0.6.0 (May 9, 2022) #
- General data model
- Non-exhaustive errors for locid, calendar, decimal, plurals (unicode-org#1792, unicode-org#1793)
- Rename "serialize" feature to "serde" (unicode-org#1797)
- Turn all errors into Copy types (unicode-org#1657)
- Components
calendar:- Coptic, Indian and Ethiopian calendars (unicode-org#1660, unicode-org#1715, unicode-org#1779)
- Calendar arithmetic (unicode-org#1614)
datetime:- Formatting for fractional seconds (unicode-org#1813, unicode-org#1801)
- Support for day of week in month ('F') (unicode-org#1770)
- Custom fallbacking for TimeZoneFormatter (unicode-org#1591)
- Support for week-of-month (unicode-org#1468)
- Bug fix to get_best_available_format_pattern skeleton matching logic (unicode-org#1549)
decimal: No updateslocale_canonicalizer:- ZeroCopy support (unicode-org#1760, unicode-org#1777)
locid:- Simplified language representation (unicode-org#1695)
- Region, Script and Variant subtags ULE (unicode-org#1696)
plurals:- Update data model to use
ZeroVec(unicode-org#1240)
- Update data model to use
properties:- Bidi support (unicode-org#1716, unicode-org#1784)
- Utilities
codepointtrie:- Use 0 for error value for Rust out-of-bounds for primitive trie value types (unicode-org#1804)
crlify: New util for line ending conversionsdeduplicating_array: No updatesfixed_decimal:- Improvements to FixedDecimal f64 APIs (unicode-org#1718)
litemap:- Pluggable LiteMap backends (unicode-org#1769)
pattern: No updatesuniset: No updateswriteable: No updatesyoke: No updateszerofrom: No updateszerovec:- ZeroVec derive improvements (unicode-org#1780)
- Support non-Ord values in ZeroMap (unicode-org#1743)
- Add OptionULE and OptionVarULE (unicode-org#1736)
- Rename ZeroVec::from_slice and add new method for const-constructed ZeroSlice (unicode-org#1728)
- Treat ZeroMap sort order as an optional invariant (unicode-org#1727)
- Add ZeroMap::get_copied_by (unicode-org#1722)
- Generalize PairULE to support longer tuples (unicode-org#1721)
- Add more AsULE impls for primitives (unicode-org#1672)
- Add cast methods to ZeroVec and ZeroSlice (unicode-org#1651)
- Add RawBytesULE::slice_from_byte_slice (unicode-org#1648)
- Create façades for ZeroVec types, hide internal code organization modules (unicode-org#1629)
- Add zerovec::skip_kv and zerovec::skip_ord attributes, as well as generalized attribute handling framework (unicode-org#1613)
- Rename as_unaligned to to_unaligned (unicode-org#1619)
- FFI:
- Updating to Diplomat 0.3
- Making testdata an optional FFI dep (unicode-org#1820)
- Split out capi targets: make separate freertos, staticlib, and cdylib crates as targets (unicode-org#1747)
- Experimental:
crabbake: Initial version of baked data provider (unicode-org#1825)segmenter:- Support production-ready data provider for segmenters (unicode-org#1652)
- Implement dictionary based segmenter for line segmenter. (unicode-org#1644)
- Wire DataProvider into UAX29 segmenters (unicode-org#1627)
- Move UAX#14 defines to line.toml (unicode-org#1568)
- Add segmenter factories to generate UAX29 iterators (unicode-org#1602)
icu4x 0.5.0 (Jan 31, 2022) #
- General data model
DataPayloadno longer needs a lifetime (unicode-org#1297, unicode-org#1279)- Re-write DataKey (unicode-org#1511)
- Rewrite ErasedDataProvider as AnyProvider (unicode-org#1495)
- Add EitherProvider and rename IterableDataProviderCore to IterableProvider (unicode-org#1455)
- Change DataRequest to be borrowed in BufferProvider (unicode-org#1416)
- Replace SerdeDeDataProvider with BufferProvider (unicode-org#1369, unicode-org#1384)
- Components
calendar:- Julian, Japanese, and Buddhist calendars (unicode-org#1351, unicode-org#1394, unicode-org#1305)
DateTimeFormatintegration (unicode-org#1339)- Bugfix around arithmetic (unicode-org#1352)
datetime:- Week-of-year support (unicode-org#1206)
DateTimeFormat::resolve_components()(unicode-org#1362)- Era formatting (unicode-org#1346)
TimeZoneFormatterConfig(unicode-org#1256)- New data model for organizing calendar data (unicode-org#1300)
- Bugfix around missing localized strings in time zone data (unicode-org#1405)
decimal: No updateslocale_canonicalizer:- Bugfix in maximization (unicode-org#1171)
- Update data model to use
LiteMap(unicode-org#1275)
locid: No updatesplurals:- Update data model to use
ZeroVec(unicode-org#1240)
- Update data model to use
properties:- Rename resource key category for properties (unicode-org#1406)
- Rename enums for
General_Category(unicode-org#1355) - Implement the
Canonical_Combining_Classproperty (unicode-org#1347) - Implement
Script_Extensionsproperty (unicode-org#1353) - Add
General_Categorypredicate functions (unicode-org#1310) - Implement
Grapheme_Cluster_Break,Word_Break, andSentence_BreakUnicode properties (unicode-org#1233)
- Utilities
codepointtrie: No changesdeduplicating_array: New utility for efficient serialized representation of data with duplicatesfixed_decimal:- Padding and truncation APIs (unicode-org#1482, unicode-org#1507, unicode-org#1195)
- Add double-to-decimal via ryū (unicode-org#1217)
- Handle exponents in
FixedDecimal::from_str()(unicode-org#1265)
litemap:- Add
LiteMap::get_indexed()andLiteMap::find_index() - Handle serialization of tuples (etc) in litemaps (unicode-org#1306)
- Add
pattern: No updatesuniset: No updateswriteable:- Adding parts functionality to
Writeable(unicode-org#1438) - Change
Writeable::writeable_to_stringto return a Cow (unicode-org#1452) - Implementing
Writeablefor all integers (unicode-org#1408) - Making
writeable::LengthHinta range (unicode-org#1400) - Simplifying
assert_writeable_parts_eqandassert_writeable_eq(unicode-org#1522, unicode-org#1399)
- Adding parts functionality to
yoke:- Remove
Yokeable::OutputfromZeroCopyFromtrait (unicode-org#1499) - Add
EitherCart(unicode-org#1484) - Remove
attach_to_option_cart()(unicode-org#1348) - Homogenize yoke generic impls to always work with
Yokeable, addOwnedYokeable(unicode-org#1302)
- Remove
zerovec:- Move over to a model where the vector types deref to
ZeroSliceandVarZeroSlice(unicode-org#1418, unicode-org#1371) - Simplify
ZeroVec/VarZeroVecerror handling, consolidateULEErrortype (unicode-org#1389) - Simplify
ZeroMapKV(unicode-org#1334) - Add
ZeroMap2d, a two-dimensional zero-copy map (unicode-org#1432) - Add borrowed-only version of
ZeroMap(unicode-org#1238) - Add various helper functions to zerovec (unicode-org#1430)
- Rename
PlainOldULEtoRawBytesULE(unicode-org#1413) - Improve
EncodeAsVarULE(unicode-org#1385) - Add
EncodeAsVarULEforZeroVec(unicode-org#1274, unicode-org#1407) - Various trait impls (unicode-org#1332, unicode-org#1330, unicode-org#1328, unicode-org#1287)
- Document ULE alignment guarantee; update all impls with checklists (unicode-org#1294)
- Fix
PairULEvalidation function (unicode-org#1266)
- Move over to a model where the vector types deref to
- FFI:
- Updating to the latest Diplomat
- Add FFI for constructing Data Structs, including decimal data structs (unicode-org#1497)
- Add padding/truncation to FFI (unicode-org#1501)
- Add FFI for constructing fixed decimals from float (unicode-org#1483)
- Properties FFI (unicode-org#1269)
- Experimental:
- New ListFormatter experiment
- More progress on segmentation experiment
icu4x 0.4.0 (November 1, 2021) #
- Updated to CLDR 40 (unicode-org#1216)
- Functional Unicode property APIs and data; moved to new crate
icu_properties(unicode-org#148) DateTimeFormatoptimization: memory usage cut by two-thirds and perf improved by 40% (unicode-org#519)BlobDataProviderallowing for dynamic, asynchronous data loading (unicode-org#1084)- Major upgrades to the
zerovecutility crate and new benchmarks forZeroMap(unicode-org#1082, unicode-org#1087) - Initial support for time zones in
DateTimeFormatcomponents bag (unicode-org#845) - Bug fixes in
LocaleCanicalizer(unicode-org#1189, etc.) - Week of month/year arithmetic (unicode-org#918)
- Major improvements on code size across FFI (unicode-org#962)
- Iterations on ICU4X Segmenter (unicode-org#1045, unicode-org#1165, etc.)
- Experimental
ListFormatter(unicode-org#1053) - ICU4X now requires Rust 1.56 (unicode-org#1201)
icu4x 0.3.0 (July 29, 2021) #
- Static data provider without filesystem dependency (unicode-org#78)
- Infrastructure around zero-copy deserialization, including
ZeroVecandYoke(unicode-org#652, unicode-org#667) - Most ICU4X components support
no_std(unicode-org#812) - Hour cycle preferences are used by DateTimeFormat (unicode-org#671)
- Skeleton matching supports additional field widths (unicode-org#584)
- Add canonicalize method to LocaleCanonicalizer (unicode-org#747)
- Added range iterator on UnicodeSet (unicode-org#836)
- Add PluralRules::categories() function (unicode-org#789)
- Consolidated data generation tool into new binary
icu4x-datagen
icu4x 0.2.0 (April 29, 2021) #
- Updated CLDR to 39 (unicode-org#640)
- Initial release of:
icu_decimal(unicode-org#590)icu_locale_canonicalizer(unicode-org#417)
DateTimeFormatgets support for- day periods (unicode-org#435)
- time zones (unicode-org#418)
- components bag (unicode-org#481)
UnicodeSetgets preliminary support for L3a subset (unicode-org#478)PluralRulessupportEoperand (unicode-org#407)- New utilities:
WriteableZeroVecLiteMapFixedDecimalPattern
- Early prototype of C API -
icu_capi
icu4x 0.1.0 (October 15, 2020) #
- Initial release of ICU4X.
- Initial release of:
icuicu_locidicu_pluralsicu_datetimeicu_uniseticu_providericu_provider_fsicu_provider_cldricu_testdataicu4x_ecma402fixed_decimal