Downloading ICU‎ > ‎

ICU 66preview

Do test this preview but do not use it in production!

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

Release Overview

ICU 66 (scheduled for 2020 March) will update to Unicode 13, and include some bug fixes. This will be a low-impact release with no other significant feature additions or implementation changes.

ICU 66preview updates to Unicode 13 beta, including new characters, scripts, emoji, and corresponding API constants. It also updates to CLDR 36.1preview with Unicode 13 updates and bug fixes.

(The next feature release will be ICU 67, scheduled for 2020 April.)

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 66

Version Number

The preview has library version number 66.0.1.

The initial release will have library version number 66.1.

If there are maintenance releases, they will be 66.2, 66.3, etc.

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

Common Changes

  • Unicode 13 beta (ICU-20893, Unicode 13 beta data from 2019-nov-21)
    • Total of 5930 new characters
    • 4 new scripts
    • 55 new emoji characters, plus additional new sequences
    • New CJK extension, first characters in plane 3: U+30000..U+3134A
  • CLDR 36.1preview
    • Unicode 13 root collation data and Chinese data for collation and transliteration

ICU4C Specific Changes

    • None

    ICU4J Specific Changes

    • None 

    Known Issues

    Common Issues

    • None yet.

    ICU4C (same as for ICU 65)

    • 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 on Windows: Building for ARM64 can fail if the x64 build wasn't fully completed first (ICU-20859).

    ICU4J

    • None yet.

    Migration Issues (same as for ICU 65)

    1. Function-like ICU4C API macros (e.g., U16_NEXT_OR_FFFD()) were always intended to be used with a trailing semicolon, but some macros were usable without semicolon, and when used with one caused -Wextra-semi-stmt warnings. This has been fixed. Please adjust call sites, adding missing semicolons. If you have a lot of such call sites, then you can temporarily change the definition of UPRV_BLOCK_MACRO_BEGIN and UPRV_BLOCK_MACRO_END in unicode/umachine.h. (ICU-20601icu/pull/759)
    2. Some C++ functions now return covariant (same-as-this) pointer types. (ICU-20783)
      1. Under the following conditions, this may break the definition of custom subclasses:
        1. You have a subclass of an ICU class that itself is a subclass of a class that defines virtual clone().
        2. For example: MyBreakIterator → RuleBasedBreakIterator → BreakIterator
        3. Note that RuleBasedBreakIterator::clone() now returns a pointer to RuleBasedBreakIterator not to BreakIterator.
        4. Your subclass (MyBreakIterator) defines clone() as returning a pointer to the base class (BreakIterator).
        5. This will no longer compile because the subclass clone returns a type that is not covariant (i.e., a type that is wider) than the type returned by clone in the immediate parent class (RuleBasedBreakIterator).
      2. To fix this, please change your subclass to return a pointer to the immediate parent (RuleBasedBreakIterator) or to itself (MyBreakIterator).
    3. All of the public C++ headers now assume a default context of extern "C++". (ICU-20530)
      1. ICU4C has both C and C++ headers, for callers using either a C or C++ compiler, or for callers using a C++ compiler who wish to have binary compatibility. The C++ headers were previously inconsistent in terms of the linkage context they assumed the caller to be using them with. In some cases the C++ headers would work in an extern "C" context and in other cases they would not. As of ICU 65, all of the public C++ headers now assume a default context of extern "C++".
      2. This means that callers including C++ headers inside an extern "C" block will need to modify their code to move the included header outside of the extern "C" block.
    4. All of the public C++ headers are guarded with the macro "U_SHOW_CPLUSPLUS_API". (ICU-20578)
      This macro is set to 1 by default if "__cplusplus" is defined, but it can be defined by users of ICU to be 0 before including any headers if they wish to only use the C APIs (with a C++ compiler).
    5. ICU4C on Windows no longer uses a fixed base address for the library DLLs. (ICU-20768)

    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.
      • 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.

    ICU4C Download

    Library version number: 66.0.1
    Release date: 2019-12-04

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

      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-36-1-preview

      ICU4J Download

      Library version number: 66.0.1
      Release date: 2019-12-04

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

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

        Maven dependency: [available only after final release]
        <dependency>

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

          <artifactId>icu4j</artifactId>

          <version>66.1</version>

        </dependency>