Skip to content

Commit

Permalink
ICU-22922 initial ICU 77 download page; incomplete
Browse files Browse the repository at this point in the history
Also add known issues to the ICU 76 download page

See #3370
  • Loading branch information
markusicu authored and Squash Bot committed Feb 7, 2025
1 parent f9ee689 commit 6a7f168
Show file tree
Hide file tree
Showing 3 changed files with 215 additions and 22 deletions.
22 changes: 21 additions & 1 deletion docs/download/76.md
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down Expand Up @@ -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`.
Expand Down Expand Up @@ -261,4 +281,4 @@ ICU locale data was generated from CLDR data equivalent to:
<artifactId>icu4j</artifactId>
<version>76.1</version>
</dependency>
```
```
184 changes: 184 additions & 0 deletions docs/download/77.md
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>
```
31 changes: 10 additions & 21 deletions docs/processes/release/tasks/publish/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down

0 comments on commit 6a7f168

Please sign in to comment.