ICU 77
ICU is the premier library for software internationalization, used by a wide array of companies and organizations.
Release Overview
ICU 77 updates to CLDR 47 (beta blog) locale data with new locales, and various additions and corrections.
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 incorporate the CLDR 46.1 spec 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.
For more details, including migration issues, see below.
Please use the icu-support mailing list and/or find/submit error reports.
Attention: Future Changes
Beginning with ICU 78 (2025-oct):
- We want to move the minimum required Java version from Java 8 to Java 11. This is a significant, useful update in terms of the Java language and standard library, and simplifies ICU tooling which currently uses a mix of Java 8 and Java 11. Note that Android desugaring supports at least Java 11 since late 2023.
See ICU-23072 where you can provide comments. - We are planning to remove the ICU4J Locale Service Provider (Maven: com.ibm.icu / icu4j-localespi / version 76.1). It is much less useful than when we added it, has very low usage, needs work for newer Java versions, and complicates ICU4J development.
See ICU-23071 where you can provide comments.
Version Number
The initial release has library version number 77.1.
- Release date: 2025-03-13
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 branch that are not included in the prepackaged download files.
Common Changes
- CLDR 47 (beta 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)
- These tailorings were introduced in ICU 72, but feedback has been negative, and the UTC declined to adopt these changes.
- Line break: Fixed a bug in the line breaking of obscure sequences ⟨no-break space, combining mark, hyphen, alphabetic character⟩ (ICU-22986).
- Updated Indic grapheme clusters to use the latest
Indic_Conjunct_Break
data (ICU-22956)
- Word break: Root tailoring of colon reverted, Swedish & Finnish tailorings removed (ICU-22941)
- Time zone data (tzdata) version 2025a (2025-jan).
ICU4C Specific Changes
- API changes since ICU4C 76 (Markdown) / (HTML)
- New APIs for colloquial C++ use of C USet (ICU-22876) and C UCollator (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) - For details about these APIs and an example see the “C++ Header-Only APIs” section of the ICU 76 Migration Issues.
- These were added in ICU 76, but some of the new APIs did not actually compile with
- New APIs for colloquial C++ use of C USet (ICU-22876) and C UCollator (ICU-22879)
ICU4J Specific Changes
- API Changes since ICU4J 76
- The Java technology preview implementation of the CLDR MessageFormat 2.0 specification has been updated to incorporate the CLDR 46.1 spec plus most but not all of the CLDR 47 changes.
Known Issues
- The new MeasureUnit for
portion-per-1e9
works for formatting, but when the new member functiongetConstantDenominator()
is called on this unit, it incorrectly returns 0. (ICU-23045)
Migration Issues
- (none yet)
Migration Issues Related to CLDR
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 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”.
Download
GitHub
Source and binary downloads are available on the git/GitHub tag page: https://github.com/unicode-org/icu/releases/tag/release-77-1
See the Source Code Setup 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
- https://github.com/unicode-org/cldr-staging/releases/tag/release-47
Maven
- https://mvnrepository.com/artifact/com.ibm.icu/icu4j/77.1
- https://mvnrepository.com/artifact/com.ibm.icu/icu4j-charset/77.1
- https://mvnrepository.com/artifact/com.ibm.icu/icu4j-localespi/77.1