mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-10 07:39:16 +00:00
ICU-22922 initial ICU 77 download page; incomplete
Also add known issues to the ICU 76 download page See #3370
This commit is contained in:
parent
f495d10a15
commit
c4acc449ff
3 changed files with 215 additions and 22 deletions
|
@ -146,6 +146,23 @@ Note: There may be additional commits on the [maint/maint-76](https://github.com
|
|||
|
||||
## Known Issues
|
||||
|
||||
* Some segmentation changes should have been made as part of the Unicode 16 integration,
|
||||
but were delayed to ICU 77:
|
||||
* Word break: Root tailoring of colon reverted, Swedish & Finnish tailorings removed
|
||||
([ICU-22941](https://unicode-org.atlassian.net/browse/ICU-22941))
|
||||
([ICU 77 PR #3249](https://github.com/unicode-org/icu/pull/3249))
|
||||
* 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))
|
||||
([ICU 77 PR #3257](https://github.com/unicode-org/icu/pull/3257))
|
||||
* 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))
|
||||
* Some of the new APIs do not actually compile with `U_SHOW_CPLUSPLUS_API=0`.
|
||||
They have been fixed in ICU 77 and thoroughly tested.
|
||||
([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 below](#migration-issues).
|
||||
* 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))
|
||||
|
@ -193,6 +210,9 @@ 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.
|
||||
|
||||
Note: Some of these new APIs did not actually compile with `U_SHOW_CPLUSPLUS_API=0`.
|
||||
They have been fixed in [ICU 77](77.md) and thoroughly tested.
|
||||
|
||||
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`.
|
||||
|
@ -261,4 +281,4 @@ ICU locale data was generated from CLDR data equivalent to:
|
|||
<artifactId>icu4j</artifactId>
|
||||
<version>76.1</version>
|
||||
</dependency>
|
||||
```
|
||||
```
|
||||
|
|
184
docs/download/77.md
Normal file
184
docs/download/77.md
Normal file
|
@ -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>
|
||||
```
|
|
@ -165,28 +165,19 @@ trunk at the source revision is good.~~
|
|||
Create the download page before the first milestone, if we have one, or before
|
||||
the release candidate.
|
||||
|
||||
Log into the ICU homepage Google Site. (If you don't have write access, ask one
|
||||
of the editors to grant you access.)
|
||||
Since ICU 76, new download pages are in Markdown on GitHub, at docs/download/ .
|
||||
|
||||
Verify that there is not already a page for the upcoming release: Either via the
|
||||
sitemap, or on the bottom of the main download page where it says something like
|
||||
"Subpages (27): View All".
|
||||
In your ICU workspace, copy the download page for the last release.
|
||||
Adjust the navbar data at the top: Title, and nav_order one fewer than last time.
|
||||
|
||||
Copy the download page for the last release: Go to that page, gear menu, Copy
|
||||
page; "Name your page" using just the major version number for now (e.g., "61")
|
||||
so that the page URL is just that number, select "Put page under Downloading
|
||||
ICU", click the red COPY button.
|
||||
Adjust the new page as needed: Adjust the title to "ICU 77" (with the right version number...),
|
||||
remove contents specific to the previous release, update all version numbers, update all links.
|
||||
|
||||
Adjust the new page as needed: Change the title to "Download ICU 61 Release
|
||||
Candidate" (with the right version number...), remove contents specific to the
|
||||
previous release, update all version numbers, update all links.
|
||||
Put a big, **bold+italics** warning at the top like "This version has not been
|
||||
released yet. Use it for testing but do not use it in production!"
|
||||
|
||||
Put a big, bold+italics, red warning at the top like "This version has not been
|
||||
released yet. Use it for testing but not in production!"
|
||||
|
||||
Save the page. It is generally a good idea to save frequently. For further
|
||||
edits, simply go back into edit mode. (Keyboard shortcut 'e' for edit, ctrl+s
|
||||
for save.)
|
||||
Compare with the one-year-ago release page and adjust for whether we have a major release,
|
||||
a new Unicode version, etc.
|
||||
|
||||
Add new contents for the upcoming release: Grab some text from the sibling
|
||||
Unicode and CLDR release notes, look at the proposal status doc for this
|
||||
|
@ -198,9 +189,7 @@ like a Migration Issues section etc.
|
|||
|
||||
Ask everyone on the team to add stuff & details.
|
||||
|
||||
**Once the page has been created and various people are invited to edit it,
|
||||
everyone should keep editing short so that the page is not locked for others for
|
||||
long periods of time.**
|
||||
Once the page has been created and merged, consider editing online on GitHub.
|
||||
|
||||
### Maintenance release
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue