Description
ICU is the premier library for software internationalization. ICU 4.8.1.1 is a maintenance release to ICU 4.8, see information below.
ICU 4.8 was a major release of ICU, with new features, new APIs, and many bug fixes in data and code.
Major changes in ICU 4.8 since ICU 4.6 include the following:
Common Changes
- CLDR 2.0: The CLDR 2.0 release contains numerous improvements and bug fixes approved by the CLDR committee, including much additional data for many languages.
-
Explicit parent locale support in data imported from CLDR (#8031)
- MessageFormat and related classes (choice/plural/select) have been reimplemented, with several improvements and some incompatible changes. See the detail section below.
- Extended PluralFormat pattern syntax supports explicit-value forms and offsets. (#7858)
-
Utility APIs in PluralRules (get some/all/unique keyword values)
-
Time zone API to return a list of available canonical system time zone IDs (#8278)
-
Time zone API to return a region (#8279)
- Collation: Full implementation & public API for script reordering
-
Dictionary-type trie (#8167)
-
GB18030-2005 update (#8274)
ICU4C Specific Changes
ICU4J Specific Changes
- Technology Preview: APIs for region information. The new class com.ibm.icu.util.Region provides mapping across different region/territory codes and containment relationship. (#8347)
- JDK Locale conversion to support JDK 7 new Locale fields (#8078)
- Technology Preview: TimeZoneFormat and TimeZoneNames. New classes designed for supporting CLDR time zone display name algorithm and data through public APIs. (#8342)
Known Issues
- #8535 & #8537 (C only) Prebuilt binaries are usable on MinGW but the MinGW build is broken
- #8571 (C only) U_HIDE_DRAFT_API does not operate on the correct set of APIs; might also affect U_HIDE_DEPRECATED_API, U_HIDE_INTERNAL_API and U_HIDE_SYSTEM_API
Details about MessageFormat Changes
Most of the changes apply to both Java and C/C++. Most changes were made under ticket #8319.
Benefits
- In a MessageFormat pattern, an ASCII apostrophe can normally be written directly, rather than doubled or quadrupled. It now only begins quoted text when it precedes a character that requires quoting. A double ASCII apostrophe still yields a single one in format() output.
- Sub-messages in choice/plural/select patterns are always checked for MessageFormat syntax.
- There is a new, public parser for MessageFormat and choice/plural/select pattern strings, the class MessagePattern. It can be used in validation and translation tools, for example. The same parser is used in the message/choice/plural/select implementations.
- Both named and numbered arguments can be used in a single pattern (with named-values APIs).
- Details of the MessageFormat pattern syntax are widened (e.g., the identifier syntax), and are now documented in the class API docs.
- Nested sub-messages are parsed once, during construction or applyPattern(), rather than in each format() call.
- The MessageFormat object does not need nor create/cache Format objects for choice/plural/select arguments any more.
- The C API now supports complex arguments (choice/plural/select) with arguments in sub-messages. (Previously, nested arguments were not parsed early enough for the format() value handling.)
- The C API detects conflicting types for two arguments with the same number.
Achieving these benefits requires that a MessageFormat pattern is parsed fully, including nested choice/plural/select arguments and their sub-messages.
Resulting Incompatibilities
Note: The JDK-compatible apostrophe mode can be selected via MessageFormat API as well as a build-time option (see the enum ApostropheMode API doc).
- Some patterns will fail to parse, or yield different results, because of the modified ASCII apostrophe handling.
- Some patterns will fail to parse as stand-alone choice/plural/select patterns when their sub-messages do not contain correct MessageFormat syntax.
- ChoiceFormat/PluralFormat/SelectFormat do not modify selected/returned sub-message strings.
- In particular, they do not reduce ASCII apostrophes.
- This is required so that the strings can be used in a MessageFormat without having to quadruple ASCII apostrophes.
- MessageFormat.setFormat() and similar: (Setting of custom Format objects, ignoring the pattern argument specification)
- toPattern() now normally returns the original pattern string, but will throw an exception if custom formats are set
- MessageFormat.getFormat() and similar now return null for non-custom choice/plural/select arguments.
- Java Serialization of MessageFormat is incompatible between pre-ICU-4.8 and ICU-4.8-and-above versions.
- The C++ ChoiceFormat internal-array getters: getLimits(), getClosures(), getFormats() are now deprecated and disabled.
More Details
Updates in ICU 4.8.1 (C and J)
- Common Locale Data Repository (CLDR) 2.0.1
- Time zone database version 2011h
- Tickets
- #8569 UTF-7 missing terminating shift character (C: r30175 → r30178, J: r30176 → r30177)
- #8583 Currency parsing fix / API promotion (C: r30313,r30314,r30315 → r30349, J: r30314,r30315 → r30329)
- #8589 Fallback logic used for partial location time zone format is wrong (C: r30149 → r30367, J: r30147,r30150 → r30368)
- #8624 ucol_getSortKey+strncmp and ucol_strcoll give different comparison result (C: r30220 → r30353, J: r30219,r30221 → r30330)
- #8627 Performance regression in ICU 4.8 time formatting with zones (C: r30196 → r30352, J: r30198 → r30348)
- #8637 Java assertion error in PluralFormat (C: r30259,r30260 → r30355, J: r30259 → r30288)
- #8696 Merge CLDR 2.0.1 (C: r30316,r30323,r30333 → r30341, J: r30344)
- #8709 Spanish Currency, CLDR #4038 (C: r30356,r30357 → r30361, J: r30363)
Note: See following sections for ICU4C and ICU4J specific changes.
Updates in ICU 4.8.2 (C and J)
- Japanese era Reiwa (令和) support
- Time zone database version 2019a
The following CVEs were fixed in ICU4C 4.8.2: - CVE-2017-15422
- CVE-2017-14952
- CVE-2016-7415
- CVE-2014-9654
- CVE-2014-7926
- CVE-2014-7923
- CVE-2011-4599
(Note: The following CVEs were found to be not applicable to ICU 4.8.2: CVE-2014-8147, CVE-2014-8146 )
ICU4C Download
Latest ICU4C 4.8 Release
Version: 4.8.2
Release Date: 2019-04-11
Previous ICU4C 4.8 Releases
Version: 4.8
Release Date: 2011-05-25
Release Date: 2011-07-20
Version: 4.8.1.1
Release Date: 2011-10-26
- Binaries / Source
- ReadMe
- No API changes since ICU4J 4.8, see API Changes for changes since ICU4J 4.6
- Full update list is in ticket #8823
- Major ICU4C specific changes in 4.8.1.1:
- #8657, #8817 fix layout/LESwaps.h endianness test
- #8719 Lenient Parsing behavior
- #8777 Fixed docs with regards to Etc/Unknown
- #8784 iSeries porting
- #8801 fix performance regression in number parse
- #8806 MessageFormat plural # formatting
- #8820 cannot parse month names when month name starts with numeric character
- #8824 read/use of uninitialized memory in RegexMatcher::MatchChunkAt()
- #8864 tzdata2011k
Changes between ICU4C 4.8 and 4.8.1:
- No API changes since ICU4J 4.8, see API Changes for changes since ICU4J 4.6
- ICU4C specific changes in 4.8.1 (See the top section for common changes)
- #5890 Darwin/MacOSX shared library fix (r30283 → r30353)
- #8265 udata races when loading full set of ICU data (ucol_open U_FILE_ACCESS_ERROR) (r30326 → r30369)
- #8535 ICU4C build failure on MinGW (r30094,r30095,r30247,r30249,r30250,r30252,r30253 → r30350)
- #8576 Add some Khmer word break tests and fix some compiler warnings (r30327,r30328 → r30369)
- #8578 Compiler warnings fixes (r30202,r30205 → r30355, r30202,r30205 → r30207)
- #8585 "pkg_gencmn fails with ""gencmn: out of memory"" on z/OS 1.11" (r30204 → r30355)
- #8593 Infinite recursion crash using UNUM_SPELLOUT to format NAN (r30258 → r30367)
- #8595 gcc 4.5.2 compile warnings about UResType (r30295,r30310 → r30352)
- #8613 fix a trivial bug found by PSV (a static analysis tool) (r30188 → r30355)
- #8621 "#include of ""unum.h"" missing ""unicode/"", breaks our build" (r30257 → r30349)
- #8622 UCONFIG_NO_SERVICE=1 doesn't work due to change in ucurr.cpp (r30256 → r30349)
- #8623 init constructors in alphaindex.cpp (r30291 → r30352)
- #8629 colldata.cpp, unsafe memcpy of UnicodeStrings (r30254 → r30355)
- #8643 runConfigureICU stomps on LDFLAGS for SolarisX86 (r30224 → r30355)
- #8645 problems building without XPLINK (r30232 → r30349)
- #8654 Spoof Check, Invisible Char check problem (r30218,r30222 → r30353)
- #8657 LESwaps.h is broken on big endian machines (r30274 → r30367)
- #8666 Regular expression assertion error (r30244 → r30349)
- #8673 Unsafe memcpy of RuleBasedBreakIterator object (r30255 → r30355)
- #8675 icu::DateFormat, icu::SimpleDateFormat fails to parse full string on second attempt in 4.8 (r30266,r30282 → r30349)
- #8681 Asymmetric search needs a bigger CE ring buffer (r30307 → r30353)
- #8687 C Warning Fixes (r30285 → r30353)
- #8691 UnicodeString::startsWith(const UChar *, -1 for NUL-terminated) fails (r30292 → r30353)
ICU4C Supported Platforms
|
Here is the status of building ICU on several different platforms. |
AIX 7.1 (power, 64-bit) |
VisualAge 11.1
|
Frequently Tested |
AIX 6.1 (power, 64-bit) |
VisualAge 11.1
|
Frequently Tested |
AIX 6.1 (power, 64-bit) |
gcc 4.2.0
|
Frequently Tested |
HP/UX 11iv3 (ia64, 64-bit) |
aCC A.06.20 |
Frequently Tested |
MacOSX 10.6 Snow Leopard (x86, 32-bit) |
gcc 4.2.1 |
Frequently Tested |
MacOSX 10.6 Snow Leopard (x86, 64-bit) |
gcc 4.2.1 |
Frequently Tested |
Red Hat Enterprise Linux 6 (x86, 32-bit) |
gcc 4.4.4 |
Frequently Tested |
Red Hat Enterprise Linux 6 (x86, 64-bit) |
gcc 4.4.4 |
Frequently Tested |
Red Hat Enterprise Linux 6 (x86, 64-bit) |
icc 11.1 |
Frequently Tested |
Red Hat Enterprise Linux 6 (power, 64-bit) |
gcc 4.4.4
|
Frequently Tested |
Red Hat Enterprise Linux 5.6 (x86, 32-bit) |
gcc 4.1.2 |
Frequently Tested |
Solaris 10 (sparc, 64-bit) |
Sun Studio 12.2 |
Frequently Tested |
Solaris 10 (sparc, 64-bit) |
gcc 4.2.1 |
Frequently Tested |
Solaris 11 Express (sparc, 64-bit)
|
Sun Studio 12
|
Frequently Tested |
Solaris 9 (sparc, 64-bit) |
Sun Studio 12 |
Frequently Tested |
Windows 7 (x86, 32-bit) |
MS Visual Studio 10
|
Frequently Tested |
Windows Server 2008 (x86, 64-bit) |
MS Visual Studio 10
|
Frequently Tested |
Windows Server 2008 (x86, 64-bit) |
MS Visual Studio 9 via Cygwin |
Frequently Tested |
Windows Vista (x86 32-bit)
|
MS Visual Studio 10
|
Frequently Tested |
Windows Vista (x86, 32-bit) |
MS Visual Studio 10 via Cygwin |
Frequently Tested |
Windows XP Professional (x86, 32-bit) |
MS Visual Studio 10
|
Frequently Tested |
Windows XP Professional (x86, 32-bit) |
gcc 4.3.4 via Cygwin
|
Frequently Tested |
SuSe Linux 7.2 (x86, 32-bit) |
icc 9.0 |
Rarely tested |
z/OS 11.1 |
cxx |
Tested at Milestones |
IBM i family (IBM i, i5/OS, OS/400) |
iCC |
Rarely tested |
MinGW |
gcc |
Rarely tested |
NetBSD, OpenBSD, FreeBSD |
gcc |
Rarely tested |
SUSE Linux Enterprise Server 9 (PowerPC) |
IBM XL C/C++ 8.0 |
Rarely tested |
QNX |
gcc |
Rarely tested |
BeOS/Haiku |
gcc |
Rarely tested |
SGI/IRIX |
MIPSpro CC |
Rarely tested |
Tru64 (OSF) |
Compaq's cxx compiler |
Rarely tested |
MP-RAS |
NCR MP-RAS C/C++ Compiler |
Rarely tested |
Key to testing frequency
- Frequently tested
- ICU will work on these platforms with these compilers
- Rarely tested
- ICU has been ported to these platforms but may not have been tested there recently
ICU4J Download
Latest ICU4J 4.8 Release
Version: 4.8.2
Release Date: 2019-04-11
Maven dependency: <dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>4.8.2</version>
</dependency>
Previous ICU4J 4.8 Releases
Version: 4.8.1.1
Release Date: 2011-08-24
- Source & Binaries
- ReadMe
- Back ported Java 7 Locale support features from the trunk
- ICU4J 4.8.1 issues fixed in the 4.8.1.1 release:
- #8596 GregorianCalendar.getActualMaximum(Calendar.WEEK_OF_YEAR) returns 52 when it should return 53 (r30275 → r30517)
- #8734 ICU services are failing when a certain default Locale is used on Java 7 (included in r30488)
- #8766 Incorrect ParsePosition with pattern 'Z' (r30514 → r30532)
Version: 4.8.1
Release Date: 2011-07-20
- ReadMe
- No API changes since ICU4J 4.8, see API Changes for changes since ICU4J 4.6
- ICU4J specific changes (See the top section for common changes)
- ICU4J 4.8 files
Version: 4.8
Release Date: 2011-05 -25
|