ICU 79
ICU is the premier library for software internationalization, used by a wide array of companies and organizations.
This is the ICU 79 release candidate. Please use it for testing but not in production. We are working towards a release near the end of October.
Release Overview
- Download: releases/tag/release-79.1rc
ICU 79 updates to Unicode 18 (blog), including new characters and scripts, emoji, collation & IDNA changes, and corresponding APIs and implementations.
It also updates to CLDR 49 (blog) locale data with many additions and corrections.
Line break backwards-iteration performance has been significantly improved, fixing a long-standing regression.
C++ and Java implementations of the CLDR MessageFormat 2.0 specification have been updated to CLDR 49. Some of the API remains in technology preview.
ICU 79 and CLDR 49 are major releases, including a new version of Unicode and major locale data improvements.
For more details, including migration issues, see below.
Please use the icu-support mailing list and/or find/submit error reports.
Attention: Future Changes
Java serialization
The ICU Technical Committee (ICU-TC) has agreed to phase out cross-version Java serialization compatibility guarantees for ICU4J starting with the ICU 80 release. Java’s default serialization mechanism introduces substantial maintenance overhead, limits internal class refactoring and evolution, and poses known security risks.
For details, alternatives, and feedback, see ICU-23484.
Other planned changes
CLDR and ICU are planning to
- declare as
finalC++ classes (such asUnicodeString) that have long been documented as “not suitable for subclassing”. (These are all APIs that existed long before C++ had thefinalkeyword). This change will make the API more resilient, but will break users who have created unsupported subclasses. See ICU-23284. - deprecate the unusual H24 hour cycle, and change the behavior of H24 to match that of H23 (CLDR-18303
- make the week-of-year numbering always follow ISO rules (CLDR-18275)
See the CLDR advanced warnings.
Version Number
The initial release has library version number 79.1.
- Release date: 2026-10-TODO
If there are maintenance releases, they will be 79.2, 79.3, etc. (During ICU 79 development, the library version number was 79.0.x.)
Note: There may be additional commits on the maint/maint-79 branch that are not included in the prepackaged download files.
Common Changes
- Unicode 18 (blog):
- Adds two large historic scripts: (Small) Seal and Jurchen
- New currency signs: RUFIYAA, UAE DIRHAM, OMANI RIAL
- Nine new emoji characters
- Segmentation improvements (line & grapheme cluster breaking)
- CLDR 49 (blog):
- Significant data updates across all locales
- 3 new measurement units: milliinch (US mil), poundal, and syne
- Significant line break performance improvement: Iterating backwards over line breaks no longer evaluates all of the break points between the start of the string and the iteration starting point. (ICU-23478) [since ICU 62]
- C++ and Java implementations of the CLDR MessageFormat 2.0 specification have been updated to CLDR 49. Some of the API remains in technology preview.
- Support for formatting ordinal day numbers (e.g., “December 25th”), and days that are not purely numeric, in languages that can use them. (CLDR-7408 & ICU-23364)
- The pre-Meiji Japanese eras were removed due to data uncertainty; the general practice for pre-Meiji-era dates is to use the Gregorian calendar. (CLDR-11400, ICU-23341, ICU-23108)
- UnicodeSet pattern strings: As part of the work on standardizing UnicodeSet notation in Draft Unicode Technical Standard #61, Unicode Set Notation, a number of changes were made to UnicodeSet pattern string parsing in ICU. In some corner cases, they change the behaviour of the UnicodeSet class on pattern strings that were previously accepted. For details see the User Guide UnicodeSet chapter.
- UnicodeSet pattern strings support several new features. Examples:
- More readable escapes like
\N{20AC:EURO SIGN}and\N{20AC:€:EURO SIGN} - More readable not-property-value expressions
[:Property≠Value:]and\p{Property≠Value} - For details see the User Guide UnicodeSet chapter. (ICU-23509)
- More readable escapes like
- Many bug fixes and improvements in performance, heap memory use, multi-threading, out-of-memory handling, etc.
- Time zone data (tzdata) version 2026d (2026-sep).
ICU4C Specific Changes
- API changes since ICU4C 78 (Markdown) / (HTML)
- The public APIs of the “common” library have been annotated with
lifetimebound(U_LIFETIME_BOUND) as appropriate. This can help prevent some object lifetime mistakes. (ICU-23310)
ICU4J Specific Changes
- API Changes since ICU4J 78
- New class LinkUtilities for the algorithms in the new UTS #58: Unicode Link Detection and Formatting: URLs and Email Addresses (ICU-23431)
-
Tracing for data file loading has been ported from ICU4C. This allows developers to find out which data files they need, and reduce their ICU data to that set. (ICU-20656)
Known Issues
- (none yet)
Migration Issues
- (none yet)
Migration Issues Related to CLDR
ICU4C Platform Support
ICU4C requires C++17 and has been tested with up to C++23.
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 11..25 (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:
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: