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.
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.
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)
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
For BreakIterator, there is a technology preview for registering a sub-break engine (e.g., dictionary or machine learning based) via a new ExternalBreakEngine interface. (ICU-22342)
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.)
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.
DateFormat.getInstanceForSkeleton() and the DateTimePatternGenerator sometimes use the wrong patterns because they fail to use/inherit certain data (ICU-22575 — CLDR 44 had removed some redundant data that ICU relied on)
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.
ICU4J should work on Android API level 21 and later but may require “library desugaring”.
Source and binary downloads are available on the git/GitHub tag page: 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: https://github.com/unicode-org/cldr/releases/tag/release-44