diff --git a/docs/download/76.md b/docs/download/76.md index 93067029f8d2..7096db4453af 100644 --- a/docs/download/76.md +++ b/docs/download/76.md @@ -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: icu4j 76.1 -``` \ No newline at end of file +``` diff --git a/docs/download/77.md b/docs/download/77.md new file mode 100644 index 000000000000..34f8d65d5078 --- /dev/null +++ b/docs/download/77.md @@ -0,0 +1,184 @@ +--- +layout: default +title: ICU 77 +nav_order: 899 +has_children: false +parent: Downloading ICU +--- + + + +# 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: + +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: + +* +* + +[Maven dependency](https://central.sonatype.com/artifact/com.ibm.icu/icu4j): +``` + + com.ibm.icu + icu4j + 77.1 + +``` diff --git a/docs/processes/release/tasks/publish/index.md b/docs/processes/release/tasks/publish/index.md index 70fac38e9360..1082094ace12 100644 --- a/docs/processes/release/tasks/publish/index.md +++ b/docs/processes/release/tasks/publish/index.md @@ -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