Downloading ICU‎ > ‎

Download ICU 58

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

Release Overview

This is the first release of ICU after the project joined the Unicode® Consortium. The license changed to the Unicode license (which is similar to the ICU 1.8.1-57 license).

This is the last ICU4C release that works on Windows XP and Windows Vista.

ICU 58 provides full support for the recent Unicode 9.0 release with 7,500 new characters and many property improvements. It covers the Unicode 9.0 emoji characters — plus the latest draft version of Emoji 4.0 — for a total of 2,444 emoji characters and sequences, including the new ZWJ sequences for gendered professions; ICU word & line breaking is updated for Emoji 4.0. ICU 58 incorporates the latest version 30 of Unicode CLDR locale data with a significant increase in data coverage.

There are a number of new APIs, including ones for measurement system unit display names (such as “acre” or “Hektar” in 80 languages), and improvements in performance and robustness. For Java, the unit tests are converted to JUnit, for easier and faster integration into test suites.

For more details, including migration issues, see below.

Please use the icu-support mailing list and/or ICU Trac for error reports.

List of tickets fixed in ICU 58

Common Changes

  • CLDR 30.0.2: For details of the many changes in CLDR, see CLDR 30. Some things to note:
    • For some combinations of numbering system (arab, arabext, latn) and/or locale (ar, fa, he), there were changes to the bidirectional control characters used with certain symbols (percent, minus, plus), and changes to number patterns (currency and/or percent, including addition of bidirectional control characters in some cases).
    • New in this release, the bidirectional controls used for such purposes include U+061C ARABIC LETTER MARK (ALM), which requires use of the bidirectional algorithm from Unicode 6.3 or later.
    • The time separator for Norwegian locales (nb, nn) was changed to be ':' throughout.
  • Unicode 9.0Version 9.0 adds exactly 7,500 characters, for a total of 128,172 characters. These additions include six new scripts, 19 symbols for the new 4K TV standard, and 72 new emoji characters.
  • Draft Emoji 4.0 data
    • Emoji updates for word & line breaking. (#12664 & Unicode 9 update #12526)
  • UBiDiTransform/BidiTransform API for convenient transformation of text between different Bidi layouts. (#11679)
  • MeasureFormat API for measurement unit display names. (#12029)
  • Most COUNT and LIMIT enum constants have been deprecated. (#12420)
  • SpoofChecker: Handling of "whole script confusables" has been removed from ICU, in accordance with its removal from UTS #39 Version 9.0.0 and the removal of the corresponding Unicode data file. (#12549)
  • Greek uppercasing ("el" locale ID) removes most diacritics. (#5456)
  • More robust locale data loading across ICU implementation code.
  • Reduced heap memory usage in DateTimePatternGenerator. (#11782)

ICU4C Specific Changes

ICU4J Specific Changes

  • DecimalFormat & DecimalFormatSymbols store & support String values for supplementary-character digits and strings for symbols. (#10368)
  • LocaleDisplayNames with optional no-substitute handling (null result rather than code) via DisplayContext. (#12700)
  • Unit tests are now based on JUnit 4. (#10152)
  • Filtered Break engine (Sentence Break Suppressions) 
    • The code is now at parity with C, although the APIs themselves remain in the tech preview state.
    • Sentence Break Suppressions may now be chosen by opening a BreakIterator with a locale ID such as en@ss=standard (in BCP47: en-u-ss-standard ) as with C

Known Issues

  • C: There are known issues building on IBM z/OS, please see ticket #12766
  • C: There are known issues building the samples, please see ticket #12793
  • C: ucol_getKeywordValuesForLocale() and Collator::getKeywordValuesForLocale() return enumerations that are not already reset for iteration. (Regression in ICU 58, #12827 & #12814)
  • C: There are known issues building on Solaris Studio 12.5, please see ticket #12893

Migration Issues

  • Windows requires Visual Studio 2015, or else use cygwin or similar to build.
  • Number formatting may produce text using U+061C ARABIC LETTER MARK (ALM), which requires use of the bidirectional algorithm from Unicode 6.3 or later.


Updates in ICU 58.2

Common Changes

  • CLDR 30.0.3
  • Time zone database version 2016j
  • ICU SVN repository structure change. See the note on the Source Code Access page for more information.

ICU4C Fixes

  • #12815 uspoof_getSkeleton sets backwards-incompatible illegal argument exception
  • #12822 digitlist.cpp won't compile on msvc under Node.js
  • #12825 uspoof_check goes into an "infinite loop" when U+30FB is in an input string
  • #12832 GreekUpper::toUpper skips the final character on a non-terminated UTF-8 string
  • #12849 u_strToTitle returns incorrect length if destination is NULL
  • #12868 uprv_convertToPosix() Windows bug

ICU4J Fixes

  • #12869 Don't use ordinal() to define public constants

ICU4C Download

Version: 58.2
Release Date: 2016-12-09
  • API Changes since ICU4C 57
    • The API change report looks large and noisy this time. Most of the changes are from the following:
      • The layout engine code was removed, resulting in a long list of Removed API.
      • C++ APIs that used const StringPiece& now pass/return StringPiece by value. All affected functions show as being Removed with their old signature and as Added with their new signature. (#12140)
      • Most COUNT and LIMIT enum constants have been deprecated. (#12420)
  • Readme

(If the list of files does not appear above, see ICU4C Binaries.)


(If the list of files does not appear above, see ICU4C Source.)

To extract the source code, use the following command: svn export http://source.icu-project.org/repos/icu/tags/release-58-2/icu4c

ICU locale data was generated from CLDR tag release-30-0-3.


Previous ICU4C Release

Version: 58.1
Release Date: 2016-10-21


ICU4J Download

Version: 58.2
Release Date: 2016-12-09
(If the list of files does not appear above, see ICU4J files.)


To extract the source code, use the following command: svn export http://source.icu-project.org/repos/icu/tags/release-58-2/icu4j


Previous ICU4J Release

Version: 58.1
Release Date: 2016-10-21