Download ICU 56

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

Release Overview

The features for this release include support of CLDR 28 and Unicode 8.0.

For more details, including migration issues, see below.

Common Changes

    • CLDR 28: For details of the many changes in CLDR, see CLDR 28.

    • Unicode data updated to Unicode 8.0: 41 new emoji characters, 5,771 new ideographs for Chinese/Japanese/Korean, 6 new scripts, improved character properties data, etc.

    • ICU data size reduced by about 7.2% (1.8MB) via sharing string values across resource bundles. [#11537]

  • DateIntervalFormat now handles intervals with seconds, and sets FieldPosition more consistently. [#11706, #11726]

  • DateFormat::createInstanceForSkeleton() caches DateFormat patterns rather than DateTimePatternGenerator instances, for better performance (for cache hits) and lower heap memory consumption. [#11780]

    • StringSearch (based on collation) defaults to matches on normalization boundaries rather than grapheme cluster boundaries, which yields more matches on Indic text. [#11750]

    • RuleBasedNumberFormat (spelled-out numbers) now handles rounding (Java only), infinity, NaN. [#11653, #11760, #8223]

    • Most of the old Normalizer/unorm.h had been replaced by (and reimplemented via) Normalizer2, and is now deprecated. [#7303]

    • COLON has been withdrawn as a date pattern character corresponding to the date field [UDAT_]TIME_SEPARATOR_FIELD; there is currently no pattern character corresponding to that field. [#11773]

    • Support for locale key "cf" to specify currency format style, and interaction with NumberFormat values for UNumberFormatStyle: [#11787]

      • For NumberFormat style UNUM_CURRENCY / CURRENCYSTYLE, the default is "standard" currency style (typically using minus sign for negative numbers), but the new locale key "cf" may be used with values "standard" or "account" to specify currency format style ("account" indicates accounting style, often using parentheses for negative numbers).

      • For other NumberFormat styles, the locale key "cf" is ignored (they override the locale preference):

        • UNUM_CURRENCY_ISO / ISOCURRENCYSTYLE

        • UNUM_CURRENCY_PLURAL / PLURALCURRENCYSTYLE

        • UNUM_CURRENCY_ACCOUNTING / ACCOUNTINGCURRENCYSTYLE

        • UNUM_CASH_CURRENCY / CASHCURRENCYSTYLE

      • A new NumberFormat style is availble to explicitly specify standard style, ignoring the the locale key "cf"

        • UNUM_CURRENCY_STANDARD / STANDARDCURRENCYSTYLE

ICU4C Specific Changes

    • C API support for CompactDecimalFormat via UNumberFormatStyle additions: UNUM_DECIMAL_COMPACT_SHORT, UNUM_DECIMAL_COMPACT_LONG [#11693]

    • Larger UnicodeString object stores more characters inside the object without heap allocation; the UnicodeString object size is now build-time-configurable. [#11551]

    • On 64-bit machines, increase from object size 40 bytes with 15 internal UChars to a new default of 64 bytes with 27 UChars.

    • Some C++ classes now have swap() and moveFrom() methods, and support C++11 move semantics on compilers that support them. [#10086]

    • UnicodeString, LocalPointer, LocalArray

    • DecimalFormat code refactored to fix bugs, improve maintainability, and improve performance. [#10458]

  • New FilteredBreakIterator suppresses certain segment boundaries. For example, it can suppress the sentence boundary in the middle of "Mr. Smith". [#11248]

  • The internal, shared cache has been changed from unbounded to bounded. [#11767]

  • For [U]BreakIterator with type UBRK_SENTENCE, the locale key "ss" can now be used with value "standard" to specify that standard sentence break suppression data should be used, or with value "none" to indicate that no break suppression data should be used (the default). [#11770]

  • Collator: first-time startup time improved 20% due to precalculated unsafe-backward table [#11886]

  • A number of memory leaks and buffer overruns have been fixed based on static code analysis, mostly in data build tools.

ICU4J Specific Changes

    • ULocale supports Android Locale script codes and Unicode extensions [#11674]

    • DurationFormat has been deprecated. It supports few locales, and it has not been improved over time. Most of its functionality is available via MeasureFormat and RelativeDateTimeFormatter. [#11887]

Known Issues

  • ICU4C 56 does not compile under Microsoft Visual Studio 2015 (#11822)

  • The ICU4C source code tar and zip file have readme.html which incorrectly states that the source is a release candidate (#12046)

Migration Issues

  • There are details on migration issues that may result from CLDR changes on CLDR 28 Migration.

    • COLON has been withdrawn as a date pattern character corresponding to the date field [UDAT_]TIME_SEPARATOR_FIELD; there is currently no pattern character corresponding to that field. [#11773]

Updates in ICU 56.2

    • New Japanese era Reiwa (令和) support

    • IANA tzdata2019a

ICU4C Download

Latest ICU4C 56 Release

Version: 56.2

Release Date: 2019-04-11

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

Previous ICU4C 56 Releases

Version: 56.1

Release Date: 2015-10-07

ICU4J Download

Latest ICU4J 56 Release

Version: 56.2

Release Date: 2019-04-11

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

Maven dependency:

<dependency>

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

<artifactId>icu4j</artifactId>

<version>56.2</version>

</dependency>

Previous ICU4J 56 Releases

Version: 56.1

Release Date: 2015-10-07