-
-
Notifications
You must be signed in to change notification settings - Fork 769
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ICU-22922 initial ICU 77 download page; incomplete
Also add known issues to the ICU 76 download page See #3370
- Loading branch information
Showing
3 changed files
with
215 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
--- | ||
layout: default | ||
title: ICU 77 | ||
nav_order: 899 | ||
has_children: false | ||
parent: Downloading ICU | ||
--- | ||
|
||
<!-- | ||
© 2025 and later: Unicode, Inc. and others. | ||
License & terms of use: http://www.unicode.org/copyright.html | ||
--> | ||
|
||
# ICU 77 | ||
|
||
ICU is the [premier library for software internationalization](https://icu.unicode.org/#h.i33fakvpjb7o), | ||
used by a [wide array of companies and organizations](https://icu.unicode.org/#h.f9qwubthqabj). | ||
|
||
## Not released yet! | ||
|
||
**ICU 77 is still under development. | ||
Once we have a release candidate, use it for testing, but do not use it in production!** | ||
|
||
## Release Overview | ||
|
||
* TODO -- below is old | ||
|
||
ICU 77 updates to | ||
[CLDR 47](https://cldr.unicode.org/downloads/cldr-47) | ||
(TODO: blog) | ||
locale data with new locales, and various additions and corrections. | ||
|
||
TODO: Highlights | ||
|
||
The Java technology preview implementation of the CLDR MessageFormat 2.0 specification has been updated to match the | ||
[CLDR 46.1 spec](https://www.unicode.org/reports/tr35/tr35-74/tr35-messageFormat.html). | ||
|
||
The C++ technology preview implementation of MessageFormat 2.0 is not yet quite up to date with CLDR 46.1. | ||
|
||
For more details, including migration issues, see below. | ||
|
||
Please use the [icu-support mailing list](https://icu.unicode.org/contacts) and/or [find/submit error reports](https://icu.unicode.org/bugs). | ||
|
||
### Version Number | ||
|
||
The initial release has library version number 77.1. | ||
|
||
* Release date: 2025-03-TODO | ||
* [List of tickets fixed in ICU 77](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20ICU%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20%28Fixed%2C%20%22Fixed%20by%20Other%20Ticket%22%29%20AND%20fixVersion%20%3D%2077.1%20ORDER%20BY%20component%20ASC%2C%20created%20DESC) | ||
|
||
If there are maintenance releases, they will be 77.2, 77.3, etc. (During ICU 77 development, the library version number was 77.0.x.) | ||
|
||
Note: There may be additional commits on the [maint/maint-77](https://github.com/unicode-org/icu/tree/maint/maint-77) branch that are not included in the prepackaged download files. | ||
|
||
## Common Changes | ||
|
||
* [CLDR 47](https://cldr.unicode.org/downloads/cldr-47) | ||
(TODO: blog): | ||
* No major data collection for existing locales; focus on bug fixes and structural improvements | ||
* New regional variants: English in several European countries, and Cantonese in Macau (`yue_Hant_MO`) | ||
* Improved RBNF (number spellout) and transliteration data | ||
* Subtle segmentation changes to make ICU fully conform to Unicode 16 | ||
* Word break: Root tailoring of colon reverted, Swedish & Finnish tailorings removed | ||
([ICU-22941](https://unicode-org.atlassian.net/browse/ICU-22941)) | ||
* These tailorings were introduced in ICU 72, but feedback has been negative, | ||
and the UTC declined to adopt these changes. | ||
* Updated Indic grapheme clusters to use the latest `Indic_Conjunct_Break` data | ||
([ICU-22956](https://unicode-org.atlassian.net/browse/ICU-22956)) | ||
* Time zone data (tzdata) version 2025a (2025-jan). | ||
|
||
## ICU4C Specific Changes | ||
|
||
* [API changes since ICU4C 76 (Markdown)](https://github.com/unicode-org/icu/blob/maint/maint-77/icu4c/APIChangeReport.md) / [(HTML)](https://htmlpreview.github.io/?https://github.com/unicode-org/icu/blob/maint/maint-77/icu4c/APIChangeReport.html) | ||
* New APIs for colloquial C++ use of C USet ([ICU-22876](https://unicode-org.atlassian.net/browse/ICU-22876)) | ||
and C UCollator ([ICU-22879](https://unicode-org.atlassian.net/browse/ICU-22879)) | ||
* These were added in ICU 76, but some of the new APIs did not actually compile with `U_SHOW_CPLUSPLUS_API=0`. | ||
They have been fixed in ICU 77 and thoroughly tested. | ||
USetElementIterator now returns std::u16string instead of icu::UnicodeString, | ||
and therefore it and related APIs have been changed to `@draft ICU 77`. | ||
([ICU-22954](https://unicode-org.atlassian.net/browse/ICU-22954)) | ||
* For details about these APIs and an example see the | ||
“C++ Header-Only APIs” section of the [ICU 76 Migration Issues](76.md#migration-issues). | ||
|
||
## ICU4J Specific Changes | ||
|
||
* [API Changes since ICU4J 76](https://htmlpreview.github.io/?https://github.com/unicode-org/icu/blob/maint/maint-77/icu4j/APIChangeReport.html) | ||
* The Java technology preview implementation of the CLDR MessageFormat 2.0 specification has been updated to match the | ||
[CLDR 46.1 spec](https://www.unicode.org/reports/tr35/tr35-74/tr35-messageFormat.html). | ||
|
||
## Known Issues | ||
|
||
* TODO -- below is old | ||
* One late CLDR 46 bug fix was accidentally omitted from ICU 46: | ||
[CLDR-18002](https://unicode-org.atlassian.net/browse/CLDR-18002) Fix likely subtag inconsistency | ||
([CLDR PR #4105](https://github.com/unicode-org/cldr/pull/4105)) | ||
|
||
## Migration Issues | ||
|
||
* TODO -- below is old | ||
|
||
### C++ Header-Only APIs | ||
ICU 76 is the first version where we add what we call C++ header-only APIs. | ||
These are especially intended for users who rely on only binary stable DLL/library exports of C APIs | ||
(C++ APIs cannot be binary stable). | ||
|
||
_Please test these new APIs and let us know if you find problems — | ||
especially if you find a platform/compiler/options combination | ||
where the call site does end up calling into ICU DLL/library exports._ | ||
|
||
Remember that regular C++ APIs can be hidden by callers defining `U_SHOW_CPLUSPLUS_API=0`. | ||
The new header-only APIs can be separately enabled via `U_SHOW_CPLUSPLUS_HEADER_API=1`. | ||
|
||
([GitHub query for `U_SHOW_CPLUSPLUS_HEADER_API` in public header files](https://github.com/search?q=repo%3Aunicode-org%2Ficu+U_SHOW_CPLUSPLUS_HEADER_API+path%3Aunicode%2F*.h&type=code)) | ||
|
||
These are C++ definitions that are not exported by the ICU DLLs/libraries, | ||
are thus inlined into the calling code, | ||
and which may call ICU C APIs but not into ICU non-header-only C++ APIs. | ||
|
||
The header-only APIs are defined in a nested `header` namespace. | ||
If entry point renaming is turned off (the main namespace is `icu` rather than `icu_76` etc.), | ||
then the new `U_HEADER_ONLY_NAMESPACE` is `icu::header`. | ||
|
||
([Link to the API proposal which introduced this concept](https://docs.google.com/document/d/1xERVccTYsptzjfbjcj6HDtoKVF_mEKmslPsOiQzzaFg/view#heading=h.cf4bmhjgozry)) | ||
|
||
For example, for iterating over the code point ranges in a `USet` (excluding the strings): | ||
|
||
```c++ | ||
U_NAMESPACE_USE | ||
using U_HEADER_NESTED_NAMESPACE::USetRanges; | ||
LocalUSetPointer uset(uset_openPattern(u"[abcçカ🚴]", -1, &errorCode)); | ||
for (auto [start, end] : USetRanges(uset.getAlias())) { | ||
printf("uset.range U+%04lx..U+%04lx\n", (long)start, (long)end); | ||
} | ||
for (auto range : USetRanges(uset.getAlias())) { | ||
for (UChar32 c : range) { | ||
printf("uset.range.c U+%04lx\n", (long)c); | ||
} | ||
} | ||
``` | ||
(Implementation note: On most platforms, when compiling ICU itself, | ||
the `U_HEADER_ONLY_NAMESPACE` is `icu::internal`, | ||
so that any such symbols that get exported differ from the ones that calling code sees. | ||
On Windows, where DLL exports are explicit, | ||
the namespace is always the same, but these header-only APIs are not marked for export.) | ||
### Migration Issues Related to CLDR | ||
* See [CLDR 47 migration issues](https://cldr.unicode.org/downloads/cldr-47#migration) | ||
## ICU4C Platform Support | ||
ICU4C requires C++17 and has been tested with up to C++20. | ||
We routinely test on recent versions of Linux, macOS, and Windows. | ||
We accept patches for other platforms. | ||
Windows: The minimum supported version is Windows 7. (See [How To Build And Install On Windows](../userguide/icu4c/build.html#how-to-build-and-install-on-windows) for more details.) | ||
## ICU4J Platform Support | ||
ICU4J works on Java 8..21 (at least). | ||
ICU4J should work on Android API level 21 and later but may require “[library desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring)”. | ||
## Download | ||
Source and binary downloads are available on the git/GitHub tag page: <https://github.com/unicode-org/icu/releases/tag/release-77-rc> | ||
See the [Source Code Setup](../devsetup/source/) page for how to download the ICU file tree directly from GitHub. | ||
ICU locale data was generated from CLDR data equivalent to: | ||
* <https://github.com/unicode-org/cldr/releases/tag/release-47-alpha2> | ||
* <https://github.com/unicode-org/cldr-staging/releases/tag/release-47-alpha2> | ||
[Maven dependency](https://central.sonatype.com/artifact/com.ibm.icu/icu4j): | ||
``` | ||
<dependency> | ||
<groupId>com.ibm.icu</groupId> | ||
<artifactId>icu4j</artifactId> | ||
<version>77.1</version> | ||
</dependency> | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters