ICU 75
ICU is the premier library for software internationalization, used by a wide array of companies and organizations.
Release Overview
ICU 75 updates to CLDR 45 (beta blog) locale data with new locales and various additions and corrections. C++ code now requires C++17 and is being made more robust.
The CLDR MessageFormat 2.0 specification is now in technology preview, together with a corresponding update of the ICU4J (Java) tech preview and a new ICU4C (C++) tech preview.
For more details, including migration issues, see below.
Please use the icu-support mailing list and/or find/submit error reports.
Version Number
The initial release has library version number 75.1.
Release date: 2024-04-17
If there are maintenance releases, they will be 75.2, 75.3, etc. (During ICU 75 development, the library version number was 75.0.x.)
Note: There may be additional commits on the maint/maint-75 branch that are not included in the prepackaged download files.
Common Changes
MessageFormat 2.0 tech preview being included into LDML.
Structural “under the hood” work and limited data bug fixes, but no new data collection.
Some time zones deprecated following IANA TZ database changes.
New Unicode properties APIs for Identifier_Status and Identifier_Type, defined by UTS #39 Unicode Security Mechanisms, General Security Profile for Identifiers. (ICU-11396)
Time zone data (tzdata) version 2024a (2024-jan). Note that pre-1970 data for a number of time zones has been removed, as has been the case in the upstream tzdata release since 2021b.
ICU4C Specific Changes
MessageFormat 2.0 tech preview new API (ICU-22261)
C: Require C11 (up from C99)
C++: Require C++17 (up from C++11)
Many changes for more robust string and buffer handling.
ICU4J Specific Changes
Known Issues
ICU-22729 udatpg_getBestPattern requires exact skeleton match in ICU 75
Due to a combination of an ICU bug fix and issues with CLDR availableFormats data, some skeletons in some languages yield inconsistent data/time formatting patterns.
Migration Issues
ICU4C behavior for ill-formed locale IDs/language tags: uloc_getName(), uloc_getLanguage() and similar functions (and functions that rely on them) may fail with a U_ILLEGAL_ARGUMENT_ERROR when they used to fail only with a U_BUFFER_OVERFLOW_ERROR. (due to changes for ICU-22520)
On Linux, the configure script now defaults to "cc" rather than preferring "clang". If you want to choose clang, then configure for "Linux/clang". (ICU-22556)
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..17 (at least).
ICU4J should work on Android API level 21 and later but may require “library desugaring”.
Download
Source and binary downloads are available on the git/GitHub tag page: https://github.com/unicode-org/icu/releases/tag/release-75-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-45-beta4
https://github.com/unicode-org/cldr-staging/releases/tag/release-45-beta4
Maven dependency:
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>75.1</version>
</dependency>