Skip to content

Commit

Permalink
ICU-22922 ICU 77rc download page
Browse files Browse the repository at this point in the history
  • Loading branch information
markusicu authored Feb 21, 2025
1 parent 2339ae4 commit ebbdc17
Showing 1 changed file with 14 additions and 64 deletions.
78 changes: 14 additions & 64 deletions docs/download/77.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,22 @@ License & terms of use: http://www.unicode.org/copyright.html
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!
## Release Candidate

**ICU 77 is still under development.
Once we have a release candidate, use it for testing, but do not use it in production!**
**Please use this release candidate 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)
([alpha blog](https://blog.unicode.org/2025/02/unicode-cldr-47-alpha-now-available-for.html))
locale data with new locales, and various additions and corrections.

TODO: Highlights
ICU 77 is mostly focused on bug fixes, segmentation conformance, and other refinements.

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 Java technology preview implementation of the CLDR MessageFormat 2.0 specification has been updated to incorporate the
[CLDR 46.1 spec](https://www.unicode.org/reports/tr35/tr35-74/tr35-messageFormat.html)
plus most but not all of the CLDR 47 changes.

The C++ technology preview implementation of MessageFormat 2.0 is not yet quite up to date with CLDR 46.1.

Expand All @@ -55,7 +53,7 @@ Note: There may be additional commits on the [maint/maint-77](https://github.com
## Common Changes

* [CLDR 47](https://cldr.unicode.org/downloads/cldr-47)
(TODO: blog):
([alpha blog](https://blog.unicode.org/2025/02/unicode-cldr-47-alpha-now-available-for.html)):
* 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
Expand Down Expand Up @@ -84,65 +82,17 @@ Note: There may be additional commits on the [maint/maint-77](https://github.com
## 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).
* The Java technology preview implementation of the CLDR MessageFormat 2.0 specification has been updated to incorporate the
[CLDR 46.1 spec](https://www.unicode.org/reports/tr35/tr35-74/tr35-messageFormat.html)
plus most but not all of the CLDR 47 changes.

## 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))
* (none yet)

## 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.)
* (none yet)

### Migration Issues Related to CLDR
* See [CLDR 47 migration issues](https://cldr.unicode.org/downloads/cldr-47#migration)
Expand Down Expand Up @@ -174,7 +124,7 @@ 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):
TODO: [Maven dependency](https://central.sonatype.com/artifact/com.ibm.icu/icu4j):
```
<dependency>
<groupId>com.ibm.icu</groupId>
Expand Down

0 comments on commit ebbdc17

Please sign in to comment.