ICU 74
ICU is the premier library for software internationalization, used by a wide array of companies and organizations.
Release Overview
ICU 74 updates to Unicode 15.1, including new characters, emoji, security mechanisms, and corresponding APIs and implementations. It also updates to CLDR 44 (blog) locale data with new locales and various additions and corrections.
ICU 74 and CLDR 44 are major releases, including a new version of Unicode and major locale data improvements. They subsume the changes for the ICU 73.2 and CLDR 43.1 maintenance releases.
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 74.1.
Release date: 2023-10-31
If there are maintenance releases, they will be 74.2, 74.3, etc. (During ICU 74 development, the library version number was 74.0.x.)
Note: There may be additional commits on the maint/maint-74 branch that are not included in the prepackaged download files.
ICU 74.2 maintenance release
Release date: 2023-12-13
ICU 74.2 updates to CLDR 44.1 locale data. These are maintenance releases for ICU 74 and CLDR 44, with limited sets of bug fixes and no API or structural changes.
The CLDR bug fix relevant for ICU is for some formatting patterns that erroneously had two adjacent space characters. These are coalesced into one. (CLDR-17233)
List of tickets fixed in ICU 74.2
Important: DateFormat.getInstanceForSkeleton() and the DateTimePatternGenerator sometimes used the wrong patterns because they failed to use/inherit certain data. (ICU-22575 — CLDR 44 had removed some redundant data that ICU relied on.)
Next Release (FYI)
For the next release, ICU 75 in 2024-apr, we plan to make the following changes:
C: Require C11 (up from C99)
C++: Require C++17 (up from C++11)
Common Changes
Unicode 15.1 adds 622 CJK unified ideographs in preparation for a forthcoming amendment to China’s GB 18030-2022 standard.
It also adds five specialty characters for use with ideographs, six new emoji, and a number of emoji variations.
For several southeast Asian scripts, line breaking is now done around orthographic syllables.
Unicode has improved its security-related specifications. There is a new Unicode Technical Standard, UTS #55 “Unicode Source Code Handling”, and there are related changes in other Unicode specifications.
There are five new properties
ICU 74 supports IDS_Unary_Operator, ID_Compat_Math_Start and ID_Compat_Math_Continue, and normalization based on NFKC_Simple_Casefold.
ICU 74 does not yet support Indic_Conjunct_Break.
CLDR has added or improved data for the following languages which are newly included in ICU:
Anii (blo), Swampy Cree (csw), Interlingue (ie), Kuvi (kxw), Ligurian (lij), Lombard (lmo), Low German (nds), N’Ko (nqo), Occitan (oc), Prussian (prg), Syriac (syr), Silesian (szl), Toki Pona (tok), Venetian (vec), Makhua (vmw), Kangri (xnr), Zhuang (za)
The person name formatting spec & data has been further developed.
Measurement unit data, conversions, and display names (translations) are improved. There are some new units.
Improved data for likely subtags.
New spoof checker API for taking text direction (left-to-right vs. right-to-left) into account for confusability and generating skeletons. (ICU-22332)
New TimeZone API for getting the “primary” IANA time zone ID, rather than the CLDR-canonical ID. (ICU-22452)
New Normalizer2 factory method for Unicode NFKC_Simple_Casefold normalization. (ICU-22404)
Time zone data (tzdata) version 2023c (2023-mar). 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
ICU4J Specific Changes
ICU4J has switched from ant to Maven, and rearranged the source file tree to the Maven default.
For documentation see
If you maintain a snapshot copy of an earlier ICU4J version in your own repo, then you may want to move your existing ICU 73 file tree to the new structure before updating the files for ICU 74. This should help maintain file history.
You can find a script for this restructuring in the ICU repo and ICU 74 download. (It is an updated version of the script that we used to do this for ICU itself.)
icu4j/maven-migration/toMaven.sh (See also icu/pull/2661)
You will probably need to adjust the script to the specifics of your repo and your copy of ICU4J.
This script mostly moves whole folders and does not take care of all of the file additions and removals between your copy of ICU and ICU 74.
The draft PersonNameFormatter has been updated to match the improved CLDR person name formatting spec & data.
Known Issues
Fixed in ICU 74.2: DateFormat.getInstanceForSkeleton() and the DateTimePatternGenerator sometimes used the wrong patterns because they failed to use/inherit certain data (ICU-22575 — CLDR 44 had removed some redundant data that ICU relied on)
Migration Issues
ICU4C Platform Support
ICU4C requires C++11 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:
74.2: https://github.com/unicode-org/icu/releases/tag/release-74-2
74.1: https://github.com/unicode-org/icu/releases/tag/release-74-1
See the Source Code Setup page for how to download the ICU file tree directly from GitHub.
ICU locale data was generated from the CLDR tag:
74.2 from 44.1: https://github.com/unicode-org/cldr/tree/release-44-1
74.1 from 44: https://github.com/unicode-org/cldr/releases/tag/release-44
Maven dependency:
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>74.2</version>
</dependency>