- General data model
DataPayload
no longer needs a lifetime (#1297, #1279)- Re-write ResourceKey (#1511)
- Rewrite ErasedDataProvider as AnyProvider (#1495)
- Add EitherProvider and rename IterableDataProviderCore to IterableProvider (#1455)
- Change DataRequest to be borrowed in BufferProvider (#1416)
- Replace SerdeDeDataProvider with BufferProvider (#1369, #1384)
- Components
calendar
:- Julian, Japanese, and Buddhist calendars (#1351, #1394, #1305)
DateTimeFormat
integration (#1339)- Bugfix around arithmetic (#1352)
datetime
:- Week-of-year support (#1206)
DateTimeFormat::resolve_components()
(#1362)- Era formatting (#1346)
TimeZoneFormatConfig
(#1256)- New data model for organizing calendar data (#1300)
- Bugfix around missing localized strings in time zone data (#1405)
decimal
: No updateslocale_canonicalizer
:- Bugfix in maximization (#1171)
- Update data model to use
LiteMap
(#1275)
locid
: No updatesplurals
:- Update data model to use
ZeroVec
(#1240)
- Update data model to use
properties
:- Rename resource key category for properties (#1406)
- Rename enums for
General_Category
(#1355) - Implement the
Canonical_Combining_Class
property (#1347) - Implement
Script_Extensions
property (#1353) - Add
General_Category
predicate functions (#1310) - Implement
Grapheme_Cluster_Break
,Word_Break
, andSentence_Break
Unicode properties (#1233)
- Utilities
codepointtrie
: No changesdeduplicating_array
: New utility for efficient serialized representation of data with duplicatesfixed_decimal
:- Padding and truncation APIs (#1482, #1507, #1195)
- Add double-to-decimal via ryū (#1217)
- Handle exponents in
FixedDecimal::from_str()
(#1265)
litemap
:- Add
LiteMap::get_indexed()
andLiteMap::find_index()
- Handle serialization of tuples (etc) in litemaps (#1306)
- Add
pattern
: No updatesuniset
: No updateswriteable
:- Adding parts functionality to
Writeable
(#1438) - Change
Writeable::writeable_to_string
to return a Cow (#1452) - Implementing
Writeable
for all integers (#1408) - Making
writeable::LengthHint
a range (#1400) - Simplifying
assert_writeable_parts_eq
andassert_writeable_eq
(#1522, #1399)
- Adding parts functionality to
yoke
:- Remove
Yokeable::Output
fromZeroCopyFrom
trait (#1499) - Add
EitherCart
(#1484) - Remove
attach_to_option_cart()
(#1348) - Homogenize yoke generic impls to always work with
Yokeable
, addOwnedYokeable
(#1302)
- Remove
zerovec
:- Move over to a model where the vector types deref to
ZeroSlice
andVarZeroSlice
(#1418, #1371) - Simplify
ZeroVec
/VarZeroVec
error handling, consolidateULEError
type (#1389) - Simplify
ZeroMapKV
(#1334) - Add
ZeroMap2d
, a two-dimensional zero-copy map (#1432) - Add borrowed-only version of
ZeroMap
(#1238) - Add various helper functions to zerovec (#1430)
- Rename
PlainOldULE
toRawBytesULE
(#1413) - Improve
EncodeAsVarULE
(#1385) - Add
EncodeAsVarULE
forZeroVec
(#1274, #1407) - Various trait impls (#1332, #1330, #1328, #1287)
- Document ULE alignment guarantee; update all impls with checklists (#1294)
- Fix
PairULE
validation function (#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 (#1497)
- Add padding/truncation to FFI (#1501)
- Add FFI for constructing fixed decimals from float (#1483)
- Properties FFI (#1269)
- Experimental:
- New ListFormatter experiment
- More progress on segmentation experiment
- Updated to CLDR 40 (#1216)
- Functional Unicode property APIs and data; moved to new crate
icu_properties
(#148) DateTimeFormat
optimization: memory usage cut by two-thirds and perf improved by 40% (#519)BlobDataProvider
allowing for dynamic, asynchronous data loading (#1084)- Major upgrades to the
zerovec
utility crate and new benchmarks forZeroMap
(#1082, #1087) - Initial support for time zones in
DateTimeFormat
components bag (#845) - Bug fixes in
LocaleCanicalizer
(#1189, etc.) - Week of month/year arithmetic (#918)
- Major improvements on code size across FFI (#962)
- Iterations on ICU4X Segmenter (#1045, #1165, etc.)
- Experimental
ListFormatter
(#1053) - ICU4X now requires Rust 1.56 (#1201)
- Static data provider without filesystem dependency (#78)
- Infrastructure around zero-copy deserialization, including
ZeroVec
andYoke
(#652, #667) - Most ICU4X components support
no_std
(#812) - Hour cycle preferences are used by DateTimeFormat (#671)
- Skeleton matching supports additional field widths (#584)
- Add canonicalize method to LocaleCanonicalizer (#747)
- Added range iterator on UnicodeSet (#836)
- Add PluralRules::categories() function (#789)
- Consolidated data generation tool into new binary
icu4x-datagen
- Updated CLDR to 39 (#640)
- Initial release of:
icu_decimal
(#590)icu_locale_canonicalizer
(#417)
DateTimeFormat
gets support for- day periods (#435)
- time zones (#418)
- components bag (#481)
UnicodeSet
gets preliminary support for L3a subset (#478)PluralRules
supportE
operand (#407)- New utilities:
Writeable
ZeroVec
LiteMap
FixedDecimal
Pattern
- Early prototype of C API -
icu_capi
- Initial release of ICU4X.
- Initial release of:
icu
icu_locid
icu_plurals
icu_datetime
icu_uniset
icu_provider
icu_provider_fs
icu_provider_cldr
icu_testdata
icu4x_ecma402
fixed_decimal