Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Fill in 2.0-beta CHANGELOG.md #5854

Merged
merged 1 commit into from
Nov 22, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
226 changes: 187 additions & 39 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,211 @@
# Changelog

## icu4x 2.0
## icu4x 2.0-beta1

- Components
- General
- Compiled data updated to CLDR 45 and ICU 75 (unicode-org#4782)
- `icu_calendar`
- Consistently name calendar-specific `Date`/`DateTime` functions that have a calendar argument (https://github.com/unicode-org/icu4x/pull/5692)
- Move all calendar types to `cal` module (https://github.com/unicode-org/icu4x/pull/5701)
- Shorten integer types returned by `day_of_month()`, `week_of_month()`, and `week_of_year()` to `u8` (https://github.com/unicode-org/icu4x/pull/5702)
- `icu_collections`
- `icu_normalizer`
- `icu_datetime`
- `icu_experimental`
- `icu_locale`
- New crate
- Allow `LocaleDirectionality` to wrap a `LocaleExpander` with user-controlled storage (https://github.com/unicode-org/icu4x/pull/5704)
- Allow `LocaleCanonicalizer` to wrap a `LocaleExpander` with user-controlled storage (https://github.com/unicode-org/icu4x/pull/5718)
- Split `canonicalize()` on `Locale` and `LanguageIdentifier` into `canonicalize()` and `canonicalize_utf8()`, and have it return a `Cow` (https://github.com/unicode-org/icu4x/pull/5727)
- `icu_locale_core`
- New crate, renamed from `icu_locid`
- Removed `Ord` and `PartialOrd` impl from `extensions::unicode::Unicode` (https://github.com/unicode-org/icu4x/pull/5617)
- `icu_locid_transform`
- `icu_plurals`
- `icu_properties`
- `icu_segmenter`
- `icu_timezone`
- 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()` to `locale.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 `default` instead of making new function `const_default` (unicode-org#5354)
- Rename marker types (unicode-org#4999)
- Fix take/into function names and conventions (unicode-org#5723)
- `icu`
- Adding `datagen` feature to meta crate (#5047)
- `icu_calendar`
- Restructure icu_calendar public API to put all calendars under `cal` (unicode-org#5701)
- Consistently name calendar-specific `Date`/`DateTime` functions that have a calendar argument (unicode-org#5692)
- Move all calendar types to `cal` module (unicode-org#5701)
- Shorten integer types returned by `day_of_month()`, `week_of_month()`, and `week_of_year()` to `u8` (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)
- `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_collections`
- `icu_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 `DateTimeFormatter` and most of the `icu_datetime` crate. It adds the ability to format specific subsets of fields, conforming with LDML version 46. All call sites of ICU4X 1.x `DateTimeFormatter` will need to be updated. It is recommended to start fresh with the new crate documentation.
- 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)
- `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`
- 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 `LongCurrencyFormatter` for Long Currency Formatting (unicode-org#5351)
- Improvements to transliteration (unicode-org#5469, unicode-org#5489, unicode-org#5712)
- Expose `CompactDecimalFormatterOptions` in the compactdecimal module (unicode-org#5770)
- `icu_locale`
- New crate (with parts of `icu_locid` and `icu_locid_transform`)
- Add preferences module (unicode-org#4996, unicode-org#5729)
- Remove `AliasesV1`, `LikelySubtagsV1` (unicode-org#5337)
- Remove `_manual_slice` constructors (unicode-org#5312)
- Use `is_default` instead of `is_empty` or `is_und` for locale-ish types (unicode-org#5359)
- Add script fallback priority; improve language/region fallback priority (unicode-org#5344)
- Allow `LocaleDirectionality` to wrap a `LocaleExpander` with user-controlled storage (unicode-org#5704)
- Allow `LocaleCanonicalizer` to wrap a `LocaleExpander` with user-controlled storage (unicode-org#5718)
- Split `canonicalize()` on `Locale` and `LanguageIdentifier` into `canonicalize()` and `canonicalize_utf8()`, and have it return a `Cow` (unicode-org#5727)
- Remove Ord impl from extensions::unicode::Unicode (unicode-org#5617)
- Locale `canonicalize` -> `normalize` (unicode-org#5766)
- Use `AsRef` in `LocaleDirectionality`'s type parameter (unicode-org#5704)
- Add Expander argument to LocaleCanonicalizer (unicode-org#5718)
- `icu_locale_core`
- New crate, renamed from `icu_locid`
- Removed `Ord` and `PartialOrd` impl from `extensions::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)
- `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 `BidiAuxiliaryProperties` as an `EnumeratedProperty` (unicode-org#5597)
- Change `Script` property API (unicode-org#5628)
- Rename `UnicodeSetData` to `EmojiSetData` (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 `ixdtf` for `CustomTimeZone` and `CustomZonedDateTime` (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 `WindowsTimeZoneMapper` and `WindowsZonesToBcp47Map` provider (unicode-org#5524)
- Handle `Z` correctly in IXDTF (unicode-org#5742)
- Make an `IxdtfParser` type (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]` and `Z[Etc/GMT]` in IXDTF parser (unicode-org#5757)
- Deduplicate tz locations against root (unicode-org#5759)
- Make `ZoneVariant` a closed, non-exhaustive enum (unicode-org#5760)
- Replace `CustomTimeZone` with `TimeZoneInfo` (unicode-org#5691)
- Data model and providers
- `icu_datagen`
- `icu_provider`
- `icu_provider_blob`
- `icu_provider_adapters`
- Replace `AnyPayloadProvider` with `FixedProvider<M>`
- `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)
- `icu_provider_blob`
- Remove Blob schema v1, v2, add v3 (unicode-org#5608)
- `icu_provider`
- Replace `AnyPayloadProvider` with `FixedProvider<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.payload` non-optional (unicode-org#5037)
- Remove `IterableDataProvider::supports_request` and rename `supported_requests` to `iter_requests` (unicode-org#5089)
- Better modularisation in `icu_provider` (unicode-org#5088)
- Refactor request architecture with DataIdentifier (unicode-org#5103, unicode-org#5293)
- Create `DryDataProvider` for 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)
- `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)
- `icu_provider_fs`
- `icu4x-datagen`
- New crate, split from `icu_datagen` (unicode-org#5011)
- `icu_provider_registry`
- New crate, split from `icu_datagen` (unicode-org#5010, unicode-org#5177)
- `icu_provider_source`
- New crate, split from `icu_datagen` (unicode-org#5016, unicode-org#5173)
- `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 from `icu_capi` features (unicode-org#5365)
- Replace WASM-demo with Diplomat demo_gen output (unicode-org#5418)
- JS
- C++
- `icu_harfbuzz`
- Utilities
- `calendrical_calculations`:
- `databake`
- `env_preferences`
- Add `env_preferences` crate (unicode-org#5081)
- `fixed_decimal`
- `FloatPrecision::Floating` renamed to `FloatPrecision::RoundTrip` (https://github.com/unicode-org/icu4x/pull/5616)
- `FixedDecimal::concatenated_end()` now returns both `self` and `other` in the error case. (https://github.com/unicode-org/icu4x/pull/5623)
- `FloatPrecision::Floating` renamed to `FloatPrecision::RoundTrip` (unicode-org#5616)
- `FixedDecimal::concatenated_end()` now returns both `self` and `other` in the error case. (unicode-org#5623)
- Simplify FixedDecimal's rounding APIs (unicode-org#5028)
- fix: `pad_end` function 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)
- `icu_pattern`
- Changes to bytes constructors (unicode-org#5034, unicode-org#5072)
- Bake, zerovec integration (unicode-org#5030)
- `ixdtf`
- Changed to `&[u8]` parsing (unicode-org#4918)
- `litemap`
- Fix integer overflow for `LiteMap` by using correct `Store` trait method (unicode-org#5113)
- `potential_utf`
- New crate with unvalidated types split from `zerovec` (unicode-org#5364)
- `tinystr`
- Add UTF-16 constructors
- Rename `TinyStrError` to `ParseError` (unicode-org#5405)
- Add TinyAsciiStr::concat (unicode-org#5772)
- `yoke`
- Unsafe review feedback (unicode-org#5046, unicode-org#5104)
- `zerofrom`
- `zerotrie`
- Minor improvement to zerotrie hash function (unicode-org#5106)
- `zerovec`
- 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 `VarZeroVecFormat` values shipped by default to use the same index and length width. This breaks data layout for all `VarZeroVec`s. (https://github.com/unicode-org/icu4x/pull/5594)
- Change the `VarZeroVec` format to not store a superfluous 0 index at the beginning of the index array. This breaks data layout for all `VarZeroVec`s (https://github.com/unicode-org/icu4x/pull/5601)
- Optimize `MultiFieldsULE` to not store a length anymore. This breaks data layout for any `#[make_varule]`-using struct with multiple variable-sized fields. (https://github.com/unicode-org/icu4x/pull/5593)
- Remove `FlexZeroVec` (https://github.com/unicode-org/icu4x/pull/5604)
- 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 `VarZeroVecFormat` values shipped by default to use the same index and length width. This breaks data layout for all `VarZeroVec`s. (unicode-org#5594)
- Change the `VarZeroVec` format to not store a superfluous 0 index at the beginning of the index array. This breaks data layout for all `VarZeroVec`s (unicode-org#5601)
- Optimize `MultiFieldsULE` to 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)
- 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 `bytes` not `byte_slice` (unicode-org#5816)
- Implement `Bake` for VZV types of different formats (unicode-org#5719)
- `writeable`
- Make `Writeable::writeable_cmp_bytes` a free function `writeable::cmp_bytes` (https://github.com/unicode-org/icu4x/pull/5737)
- Add `writeable::to_string_or_borrow` for writing with reference bytes (https://github.com/unicode-org/icu4x/pull/5738)

- Make `Writeable::writeable_cmp_bytes` a free function `writeable::cmp_bytes` (unicode-org#5737)
- Add `writeable::to_string_or_borrow` for 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)

## icu4x 1.5.x

Expand Down