Download ICU 64

ICU is the premier library for software internationalization, used by a wide array of companies and organizations.

Release Overview

ICU 64 updates to Unicode 12 and to CLDR 35 locale data with many additions and corrections, and some new languages. ICU adds a data filtering/subsetting mechanism, improved formatting API, and a C++ LocaleBuilder.

For more details, including migration issues, see below.

Please use the icu-support mailing list and/or find/submit error reports.

List of tickets fixed in ICU 64 (=64.1 + 64.2)

Version Number

The initial release has library version number 64.1.

If there are maintenance releases, they will be 64.2, 64.3, etc. (During ICU 64 development, the library version number was 64.0.x.)

Note: There may be additional commits on the maint-64 branch that are not included in the prepackaged download files below.

Common Changes

    • Unicode 12: 554 new characters, including 4 new scripts and 61 new emoji characters.

      • Unicode 12.1: One additional character U+32FF SQUARE ERA NAME REIWA

  • CLDR 35

      • Somali and Javanese data now up to modern level

      • Cebuano, Hausa, Igbo, and Yoruba data now up to basic level

      • 23 additional measurement units

      • Many data additions and corrections in many other languages

      • The following language has been added to ICU: Cebuano

      • This version of ICU does not yet implement the Indic Grapheme Cluster improvements from CLDR 35.

      • CLDR 35.1 adds support for Reiwa period date formatting.

    • New Japanese calendar era from 2019:

      • CLDR 35.1 and ICU 64.2: Fully supported

      • CLDR 35 and ICU 64 (=64.1) include data for testing that can be enabled. (ICU #12973, CLDR #10750)

        • To enable CLDR new Japanese era placeholder name, set environment variable (and Java system property for ICU4J) ICU_ENABLE_TENTATIVE_ERA=true (This was added in ICU 63).

        • Support added for Gannen year numbering (using 元 for the first year of an era) in the Japanese locale Japanese-calendar full, long, and medium formats. Gannen year support is also automatically added for other non-numeric formats (those containing other kanji characters such as 年) derived from pattern skeletons unless specifically overridden. (ICU #20441, CLDR #11843, CLDR #11819)

        • We are planning for an ICU 64.2 update in 2019-April which will add the new Japanese era with its real name.

  • ICU 64 now uses "rearguard" TZ data. (Recent versions have used "vanguard" data with certain overrides.) (ICU-20398)

  • ICU data filtering: The ICU4C build accepts an optional filter script that specifies a subset of the data to be built, with whitelists and blacklists for locales and for resource bundle paths. (ICU-10923, design doc)

  • MessageFormat has new pattern syntax for specifying the style of a date/time argument via a locale-independent skeleton rather than a locale-specific pattern. (ICU-9622)

      • Date/time skeletons use the same "::" prefix as number skeletons.

      • Example MessageFormat pattern string: "We close on {closing,date,::MMMMd} at {closing,time,::jm}."

  • Many formatting APIs can now output a new type of result object which is-a FormattedValue (Java & C++), or convertible to a UFormattedValue (C).

    • These combine the result strings with easy iteration over FieldPosition metadata.

ICU4C Specific Changes

    • New C++ class LocaleBuilder for building a Locale from subtags, keywords, and extensions. (ICU-20328)

    • Parallel to the existing ICU4J ULocale.Builder class.

    • For C++ MeasureUnit instances, there are now additional factory methods that return units by value, not by pointer-with-ownership. (ICU-20337)

    • Various Out-Of-Memory (OOM) handling issues have been fixed. (ticket query)

ICU4J Specific Changes

    • None

Known Issues

Common Issues

    • None yet.

ICU4C

    • ICU4C requires C++11 support. Some platforms (such as IBM AIX, IBM z and Solaris) may no longer be able to build ICU until an improved compiler is available. See the "ICU4C Platform Support" section below.

  • ICU4C has build errors on Cygwin 3.0.0, please use the previous version of Cygwin 2.11.2 as a work-around (ICU-20435).

  • ICU4C has known issues compiling with GCC on AIX. These are still being investigated (ICU-3752)

  • ICU4C builds on Windows from long folder paths can fail. A work-around is to build from a shorter folder path. (ICU-20555)

  • ICU4C regression introduced in ICU 63: Creating a DateTimePatternGenerator for an invalid or missing locale will return "U_MISSING_RESOURCE_ERROR" instead of falling back to root with a warning. (ICU-20558).

  • ICU4C Data Filtering is broken on Windows Visual Studio builds (ICU-20658).

  • ICU4C abort() can be unintentionally called in some cases. (ICICU-20680U)

ICU4J

    • ICU4J 63 upgraded to Java 7 and was intended to also support Android API level 21, but some code required API level 24. See #20255 for details & fix. The fix is included in ICU 64 and on the maint/maint-63 branch.

Migration Issues

    1. The locale ID handling for "", "und" and "root" has been made consistent across Java, C++, and C. In particular, Locale.getLanguage() will return the empty string for each of these now, Locale("und_IN").getName() will be "_IN" for consistency, etc. This might require some adjustments.

    2. Locale canonicalization no longer has special mappings for long-obsolete, ICU-specific variants (e.g., "PREEURO") and locale IDs (e.g., "de__PHONEBOOK"). (ICU-20187)

      1. If such locale IDs are still in use, it is best to change them to a modern format, for example using currency or collation keywords.

    3. UnicodeString::moveFrom(), LocalPointer::moveFrom() and similar still-@draft methods have been removed. They had been added before C++11 was required but were then redundant with std::move(). (ICU-13081)

    4. Some number formatter APIs had been renamed in ICU 62, leaving @deprecated aliases for the old names; these aliases have now been removed. (ICU-13746)

  1. There is a new data file ulayout.icu for Unicode text layout properties. (These properties were hardcoded in the library code in ICU 63.)

  2. Despite the warning from the ICU 63 build, ICU 64 does not yet require Python 3 for building its data files. This requirement has been postponed to a future release.

ICU4C Platform Support

  • All: Compiler support for C++11 is required for building the ICU libraries.

    • GCC: version 4.8 and later has been tested.

    • IBM AIX:

      • xlC C/C++ does not currently support a sufficient subset of C++11 (#13393)

      • gcc might work

  • macOS: XCode 8.3 (LLVM clang 8.1.0) has been tested.

  • Solaris

  • Windows:

    • The minimum supported version is Windows 7. Windows XP and Windows Vista are no longer supported.

    • Building the Visual Studio UWP projects requires Visual Studio 2017 with a version of the Windows 10 SDK installed.

      • Note: There have been reports of issues with the optimizer in Visual Studio 2017 (for example #13636). If you run into issues with VS2017 you may wish to use VS2015 as a work-around.

      • When using "@compat=host", on versions below Windows 10 version 1703, 6 locales have date and number formatting issues (#13119).

    • The LCID conversion APIs don't round-trip Kurdish (ku) and Central Kurdish (ckb) due to Windows not having a ckb locale (#20181).

    • Windows using the ICC compiler:

      • Source File Encoding. The ICC compiler does not recognize the /utf-8 option. A work-around is known and reported to succeed. (#13251)

  • IBM z

      • xlC C/C++ does not currently support a sufficient subset of C++11 (#13393)

ICU4J Platform Support

ICU4J works on Java 7 and on Android API level 21.

Updates in ICU 64.2

    • Draft Unicode 12.1 data integration

    • Updated locale data imported from CLDR 35.1

    • Support for the new Japanese era "Reiwa" (令和).

List of tickets fixed in ICU 64.2

ICU4C Download

Library version number: 64.2

Release date: 2019-04-17

Source and binary downloads are available on the git/GitHub tag page: https://github.com/unicode-org/icu/releases/tag/release-64-2

See the Source Code Access page for how to download the ICU file tree directly from GitHub.

ICU locale data was generated from CLDR tag release-35-1

Previous ICU4C 64 Releases

Library version number: 64.1

Release date: 2019-03-27

ICU4J Download

Library version number: 64.2

Release date: 2019-04-17

Source and binary downloads are available on the git/GitHub tag page: https://github.com/unicode-org/icu/releases/tag/release-64-2

See the Source Code Access page for how to download the ICU file tree directly from GitHub.

Maven dependency:

<dependency>

<groupId>com.ibm.icu</groupId>

<artifactId>icu4j</artifactId>

<version>64.2</version>

</dependency>

Previous ICU4J 64 Releases

Library version number: 64.1

Release date: 2019-03-27