As "DSO_LIBDIR" is now always set (and must be always set because of all
the changes that refer to it) we cannot use it to check for the Cygwin
case anymore. Instead check whether "OPSYS" is (not) equal to "Cygwin".
Common Changes
==============
CLDR 23: Collation tailorings put native script first; non-Gregorian calendar formats are more consistent; much improved data for Armenian (hy), Georgian (ka), Mongolian (mn), and Welsh (cy); …
Time zone data: 2013b
Date format/parse now supports CLDR short weekday names ("EEEEEE", "cccccc").
Support DisplayContext for date formatting, locale display names.
DateTimePatternGenerator behavior is now much more consistent between C and J.
Support new timezone pattern characters in LDML spec: X+, x+, O, OOOO, V, VV, VVV.
Updated SpoofChecker for v5 of UTS39.
AlphabeticIndex enhancements:
New thread-safe ImmutableIndex sub-API
Build an index for a custom Collator.
Make data-driven for Chinese collations.
New API for CLDR script metadata.
ICU4C Specific Changes
======================
Support for “dangi” Korean luni-solar calendar (already in ICU4J).
Add CompactDecimalFormat (already in ICU4J).
Add TerritoryContainment APIs (already in ICU4J).
UnicodeString default constructor and destructor now inline.
Layout engine now supports 'morx' tables.
Fixed some ICU 50 regressions:
Affixes set with e.g. DecimalFormat::setPositivePrefix were ignored for parse.
UNUM_PARSE_INT_ONLY no longer handled grouping separator.
Add ucal_getTimeZoneID.
The C++ AlphabeticIndex implementation is now on par with Java, including full support for all Chinese collation tailorings.
U8_NEXT() and similar low-level macros now support NUL-terminated UTF-8 strings.
New macros like U8_NEXT_OR_FFFD() return U+FFFD for an ill-formed sequence.
Conversion: New "good one-way" mapping type, for example for Variation Selector sequences.
* Unicode 6.2: Turkish Lira Sign, improved word & line segmentation (BreakIterator) for symbols
* CLDR 22.1: Data coverage & quality improved across all major languages; new short width type for weekday names; new zhuyin (Bopomofo) collation for Chinese; improved data for CompactDecimalFormat & RBNF
* Time zone data: 2012h
* Ordinal-number support in MessageFormat & PluralRules
* Deprecate setLocale(locale) in PluralFormat
* Dictionary-based break iterators (word segmentation):
* Support Chinese & Japanese, use more compact dictionary format, port all but Khmer support to Java
* Update Khmer dictionary
* Change Java util.ListFormat to text.ListFormatter and other updates, use CLDR data, port to C++
* Add updated IBM-eucJP and IBM-5233 converter
* Improve number formatting performance
* C++ GenderInfo: Effective combined gender of a list of people's genders (ported from Java)
* Thread safety support cannot be removed (see the Readme)
* Default compilers: Clang is now used if available (see the Readme)
* C++ Collator API cleanup, subclassing-API-breaking changes (see the Readme)
* Add option to genrb tool for writing java resource bundle files
* Time zone format APIs
* 9242 ICU4C fails to parse pattern containing EEE properly whilst ICU4J parses it successfully
* 9258 Number format performance
* 9283 uregex_open fails for look-behind assertion + case-insensitive
* 9284 Date format roundtrip test failure
* 9295 HPPA endianness detection
* 9313 Problem building ICU4C with Cygwin/MSVC
* 9332 Linux s390 endianness detection
* 9336 Problem building ICU4C 49.1.1 on zOS
* Unicode 6.1: New scripts & blocks; changes to grapheme break & line break
property values; some characters change from symbol to Po or No; etc.
* CLDR 21.0.1: Changes in segmentation data to match Unicode 6.1; new structures
for support of Chinese calendar, for context-dependent capitalization, for
gender of lists of people, for ordinal categories, and for multiple number
systems per locale; deprecation of "commonlyUsed" element in timezone names;
removal of "whole-locale" aliases; major cleanups of timezone names,
delimiter data, abbreviated number data.
* Normalizer2 API additions
* Easier-to-use getInstance() variants; e.g., getNFDInstance()
* Getter for the combining-class value for a code point
* Getter for the raw Decomposition_Mapping
* Pairwise composition
* TimeZone class: (C++) Getter for unknown time zone, (Java) fields for GMT &
unknown zone
* Support for deprecation of the "commonlyUsed" element for CLDR metazones
* DateTimePatternGenerator can now use separate patterns for skeletons that
differ only in MMM vs MMMM or EEE vs EEEE, etc.
* Support for custom DecimalFormatSymbols in RuleBasedNumberFormat
* Format and parse Chinese calendar dates including support for intercalary
months
* Context Transforms for context-dependent capitalization behavior
* APIs for TimeZoneNames and TimeZoneFormat
* Support for new date format pattern "ZZZZZ" for ISO 8601 zone format
* Options for ambiguous local time resolution in Calendar
* Support for ISO 4217 numeric currency code
* 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.
* MessageFormat and related classes (choice/plural/select) have been
reimplemented, with several improvements and some incompatible changes.
* Extended PluralFormat pattern syntax supports explicit-value forms and
offsets.
* Utility APIs in PluralRules (get some/all/unique keyword values)
* Time zone API to return a list of available canonical system time zone IDs.
* Time zone API to return a region.
* Collation: Full implementation & public API for script reordering
* Dictionary-type trie
* GB18030-2005 update
Pkgsrc changes:
o New MASTER_SITE
o Adjust PLIST
o Remove no-longer-needed patches, since corresponding changes
have been adopted upstream
o BUILDLINK_ABI_DEPENDS bumped to >=4.0, since a new shared library
version is installed
o Fixes security vulnerability, ref. below.
Dependent pkgsrc packages will have their revisions bumped shortly
due to the (possibly/probably) changed ABI.
Upstream changes:
4.0.1:
ICU4C 4.0.1 is a maintenance release of ICU4J 4.0. The primary
changes of this release were:
* Updated time zone data to 2008i
* Technical preview of string search implementation using
Boyer-Moore algorithm (#6286). For detail information, please
see the tech note here.
* #5691 Conversion: consistent illegal sequences
* #6435 Bad @stable ICU4.0 tags
* #6597 TestDisplayNamesMeta failure
* #6670 Test failure in format/TimeZoneTest/TestShortZoneIDs
4.0:
Major changes in ICU 4.0 include the following:
* Common Changes
o Unicode 5.1 (#5696)
o Locale Data: ICU uses and supports data from Common
Locale Data Repository (CLDR) 1.6 , which includes many
improvements in quality and quantity of data.
o add/removeLikelySubtags (#6124)
o Charset converter file size improvement (#5987)
o Date Interval Formatting (#6157) Note: Calendar type
supported by this feature is Gregorian only in this
release.
o Improved Plural support
* ICU4C Specific Changes
Additional Calendars
+ Chinese (#4081)
+ Coptic/Ethiopic (#4571)
* ICU4J Specific Changes
o Charset
+ Graduated from Technology Preview status
+ ICU2022 Converter (#5791)
+ HZ Converter (#6128)
+ SCSU/BOCU-1 Converter (#2147)
+ Charset Converter Callback (#6144)
o Thai Dictionary break iterator (#5385)
o JDK TimeZone support (#5975)
o Locale Service Provider (#5976)
o More convenient formatting of year+month, day+month,
and other combinations (#6304)
o Simple Duration Formatting (#6303)
* ICU4C Security Fixes
ICU4C 4.0 resolves the vulnerabilities CVE-2007-4770 and
CVE-2007-4771 which were found in earlier versions of ICU.
The standard ICU tests verify that these have been corrected,
however, the updated versions of the previous tests may be
run by applying the following patch to ICU 4.0: r24324. As
well, ICU4C and ICU4J 4.0 resolve the issue underlying
CVE-2008-1036.
Major changes in ICU 3.6 include the following:
- Unicode: ICU uses and supports Unicode 5.0, which is the latest major release of Unicode. Unicode 5.0 will be used in many operating systems and applications, and this version of ICU is important maintain interoperability with these new operating systems and applications. More information about Unicode 5.0 can be found in the Unicode press release.
- Locale Data: ICU uses and supports data from Common Locale Data Repository (CLDR) 1.4, which includes many improvements in quality and quantity of data. There is 25% more CLDR locale data in 245 locales in ICU.
- ICU4C Specific Changes
- Charset Detection: A charset detection framework was added, which provides heuristics for detecting the charset for unlabeled sequences of bytes.
- Layout: The font layout engine has support added for Tibetan, Sinhala and Old Hangul.
- BiDi: The BiDi algorithm was enhanced to be more flexible and efficient
- ICU Data Management: The new icupkg tool provides an easier way to manage ICU's data library. This tool allows you to add, update or remove data from ICU's data archive.
- Time Zones The time zone data is modularized to allow easier building and updating of the data.
- Word Boundaries: The Thai word break iteration was improved to be more accurate. Also dictionary based detection of Thai word boundaries is now active for all locales.
- UText
- The BreakIterator uses UText for abstract text processing.
- 64-bit indexing is now used to allow access to larger chunks of text.
- API for read-only locking for security and robustness was added.
- Performance
- The u_sprintf/u_sscanf performance from the icuio library has been improved for number formatting/parsing.
- Constructing a DateFormat is significantly faster for many locales.
- Opening and closing a charset converter is significantly faster.
- The UTF-8 transformation functions and macros are faster.
- The UText API was improved for performance.
- The collation open and close functions have a small performance improvement.
being here, update to 3.4.1
changes:
-Updated timezone data
-Improved portability
-Improved default codepage and default locale detection.
-A number of collation bug fixes.
New Features:
Major changes in ICU 3.4 include the following:
Updates to conform to Unicode 4.1, including new characters
properties and values, text segmentation, plus collation
updated for Unicode Technical Standard #10 (UCA) and regex
updated for Unicode Technical Standard #18.
* Updates to conform to the Common Locale Data
Repository (CLDR), Version 1.3 for the latest locale
data. This includes:
* New data to support localization of timezones,
United Nations M.49 regions (including continents
and regions), mappings from language to script
and territory.
* Consolidation of inherited data and improved
resource aliasing for smaller data footprint
* Additional locales, and many other fixes and
additions of locale data.
* POSIX migration support: direct API support for all
POSIX character classes, implemented according to
Unicode recommendations
performance/build/porting enhancements. The following list summarizes
the main new features in this release.sion.
CLDR 1.2.
This is the main new feature in the release. ICU locale data is now completely
built from the CLDR 1.2 data, which contains data for 232 locales, covering 72
languages and 108 territories. Many translated names for languages,
territories, and scripts have been added, as well as for time zones,
calendars, and other named items such as collation. For more information,
see http://www.unicode.org/press/pr-cldr1.2.html.
Miscellaneous
Universal Timescale conversions. ICU now provides mechanisms for quickly and
reliably converting between the different binary representations of date/time
used on different platforms.
Accept-Language. ICU provides a mechanism for matching Accept-Language against
a list of locales.
DateFormat and Calendar Performance. Object construction performance has been
significantly improved.
Footprint. The size of executables that statically link to ICU has been
reduced.
Stdin. The icuio library can now read from stdin.
UnicodeSet C API. More uset_* C API were added.
i5/OS (os/400). Building ICU has been simplified to allow more configure
options to work.
POSIX. Default codepage determination has been fixed.
major changes:
ICU 3.0 includes the latest bug fixes, locale/charset updates, and
performance/build/porting enhancements.
- Collation
Collation data is in a separate data tree, allowing for easier
modularization and maintenance.
getFunctionalEquivalent API allows for better caching and UI support.
- Unicode 4.0.1
ICU is updated to the latest version of Unicode standard, which had
significant property changes.
- CLDR 1.1
Updates to CLDR 1.1, with many updates to locale data, and special
emphasis on collation data.
- Formatting
As an aid to migration of traditional C (stdio) and C++ (iostream)
formatting, the POSIX-like input/output library, icuio, is officially
supported.
Significant digits now supported in DecimalFormat, for general use and
%g support.
- RFC822 time zone format support in DateFormat for compatibility.
- Currency formatting/parsing improvements
Allows parsing multiple currencies with one formatter, without knowing the
currency in advance. Much cleaner design allowing extensibility to other
measurement units in the future.
- Regular expressions (C)
The regular expressions framework now features a C API, instead of just C++.
- Locales
Locale canonicalization spec defined and implemented. Provides
interoperability with POSIX and .NET locale IDs, more RFC 3066 support.
- Layout engine
Layout engine now supports using different canonically-equivalent Unicode
forms of the same text: e.g. a + ´ or á. This is especially important for
non-Latin scripts.
- Build Environment
ICU can now build its data library much faster on most platforms.
For a complete list see:
http://oss.software.ibm.com/cvs/icu/~checkout~/icu/readme.html?tag=release-3-0
Lot's of changes and fixes.
For example:
# Number Formatting
ICU4C adds support for formatting and parsing of 64-bit integers.
# Text Analysis (Break Iterators)
Full conformance with Unicode Consortium UAX 29 and UAX 14 definitions for
text boundary positions. Significantly improved performance for reverse
direction iteration and isBoundary tests of arbitrary string positions.
# StringPrep
ICU 2.8 adds APIs and a tool for generic support of StringPrep profiles such
as those used in NFS 4.
For a complete list see:
http://oss.software.ibm.com/icu/download/2.8/index.html
features and new and modified APIs from version 2.4:
* Added support for Unicode 4.0
* Added support for Unicode regular expressions
* Enhanced sorting
* Added support for international domain names
* Added service registration for pluggable ICU modules
* Added layout engine API for language-specific glyphs
* Separated currencies from locales
* Added POSIX-like API for message catalogs
* Added new charset converters
Based on a PR pkg/20825 by Hiramatsu Yoshifumi, modified by me.
- follow PKG_SYSCONFDIR
List of major changes for this release:
* Regular Expressions Phase 1
ICU 2.4 introduces a Regular Expression C++ API that is modeled after
the JDK 1.4 API. ICU 2.4's Regular Expression API supports Unicode
level 1 regular expressions (see Unicode Regular Expression
Guidelines) but not all pattern metacharacters and features are
supported yet. Regular expressions leverage all of the UnicodeSet
support, including all Unicode 3.2 property names and property value
names. Future ICU releases will complete the pattern support, add
support for higher Unicode regex levels, and improve performance. For
more details see the API References and the User Guide.
* Modularized ICU library building
ICU 2.4 provides build-time switches to prune parts of the library
code, for smaller custom distributions. For details see the readme
file.
* Character set alias management support
Additional APIs map alias+standard to a unique charset name (e.g.,
"Shift-JIS"+"IANA"->"ibm-943_P14A-2000") and enumerate all charset
names in the alias table, not just the installed ones. See
convrtrs.txt and ucnv.h.
These APIs allow programmers to avoid data corruption problems when
different platforms use the same names for different character
conversion mappings.
* EBCDIC-z/OS converter option
The EBCDIC converter now handles swapped LF/NL mappings
algorithmically instead of with modified .ucm/.cnv conversion table
files. This makes this behavior available for all supported EBCDIC
conversions without adding to the data package size. See "swaplfnl" in
convrtrs.txt.
* Additional converter
A new converter implementation has been added for the encoding of IMAP
mailbox names. See RFC 2060/5.1.3. Mailbox International Naming
Convention and "IMAP-mailbox-name" in convrtrs.txt.
* Customizable break iteration
ICU 2.4 allows registration of a BreakIterator with a locale ID. This
allows applications to provide more sophisticated word/sentence break
engines and use them seamlessly with the ICU APIs. In future releases,
this registration mechanism will be extended to all relevant ICU
services. If you are interested in ICU customization, please try out
this feature.
* Collation performance
ICU 2.4 collation was improved in several areas, with an emphasis on
performance:
* Latin-1: Improved performance of u_strcoll().
* Russian/Cyrillic: Improved performance by tailoring collation for
cyrillic-script languages, removing UCA contractions that are not
used for modern Russian (this uses the [suppressContractions]
tailoring option).
* Korean: Improved performance by resolving collation elements for
modern Hangul syllables at build time (this uses the [optimize]
tailoring option).
* Japanese: The default strength for Japanese was reduced from
quaternary to tertiary as in all other locales.
* UnicodeSet performance
UnicodeSet performance is significantly improved, especially for
add(codePoint) and contains(codePoint).
* Unicode property aliases ICU 2.4 introduces APIs for mapping between
all appropriate Unicode property aliases and property value aliases
and ICU property enumeration constants. See u_getPropertyName() etc.
in uchar.h.
* Unicode string functions
* There are new C functions for searching for last occurrences of
characters and partial strings. See u_strrstr(), u_strrchr32()
etc.
* New C/C++/Java functions for efficient checking if a string
contains more than a certain number of code points. See
hasMoreChar32Than().
* Copying UnicodeStrings via the standard assignment operator and
copy constructor does not preserve readonly aliasing any more
because this can sometimes have unexpected and dangerous effects.
A new fastCopyFrom() member function provides the old copy
semantics. See Jitterbug 1794 for more details.
* UTF macros simplified
The low-level C macros for handling code points in 8-bit and 16-bit
Unicode strings have been replaced by a simpler, more consistent set
with more concise names. For details see utf_old.h and utf.h.
Similarly, ICU 2.4 defines the UChar32 consistently (now always as
int32_t) and adds a U_SENTINEL non-code point value for new APIs.
* Performance tests
ICU 2.4 has a new performance test framework and additional
performance tests using this framework. This is not currently
documented, but it is available as part of the source distribution at
source/test/perf/.
Collation performance is improved.
The collation implementation will continue to change for ICU 1.8 according to the collation design document.
Improved performance of parsing and formatting of dates and numbers
Improvements in the ISO-2022 implementation
Bug fixes, more stable, and support for standard country variants:
ISO-2022-JP (incl. -1, -2)
ISO-2022-CN (incl. -EXT)
ISO-2022-KR
Support for GB 18030
Basic support for UTF-32 (no ucnv_getNextUChar(), incomplete offset handling)
Support for the HZ encoding
Converter fallback semantics modified and .ucm mapping files updated with precise roundtrip/fallback indicators
ICU library names include the version number for better coexistence of different installed ICU versions on a single machine
The code libraries contain the two major/minor version digits
On Windows, they also contain a 'd' for the debug versions
The icu data file contains the ICU version and a letter for the data configuration (ASCII/EBCDIC, big-endian/little-endian)
ICU client code links with .lib files/object symlinks without the version number for easier future updates
Debian packaging
The API documentation is improved.