Changelog:
Common Changes
CLDR 29: For details of the many changes in CLDR, see CLDR 29.
Grapheme/word/line breaking for emoji sequences, based on Unicode 9 proposed rules. See the Unicode emoji break proposal and the Unicode Emoji Technical Report Proposed Update describing the new emoji sequences. (#12081).
Four new Unicode emoji properties (#11802).
DateFormat day period formatting of "noon", "at night", etc. via new pattern characters b & B, and DateTimePatternGenerator support of C for selecting the customary form (#11872).
Except: Formatting of "0:00 midnight" has been disabled because it is confusing except for at the end of an interval.
RelativeDateTimeFormatter: Simpler formatting API (#12072).
More robust CLDR data loading for MeasureFormat (#11986, #12030), RelativeDateTimeFormatter (#12018), and DateIntervalFormat/DateIntervalInfo (#12013).
New simple & fast SimpleFormatter class for a trivial subset of MessageFormat as used in CLDR data, e.g., "{0} {1}" (#10896).
ICU4C Specific Changes
C API support for RelativeDateTimeFormatter (#12072).
Clang annotations for intended switch case fallthroughs, can now compile with -Wimplicit-fallthrough (#12166).
Internal header files can be compiled by themselves, for simpler alternative build scripts (#12141).
The features for this release include support of CLDR 27 (with a major cleanup of region locales, among many other improvements), formatting for scientific notation ("1.2 × 10³"), an update to Unicode 7.0 data for spoof-checking, narrow AM/PM markers ("7:45p"), and various performance enhancements. For C/C++, there are new methods for flexible dates ("Nov 10", or "Sept 2015"), named capture groups for regular expressions, formatting of compound units ("3.5 meters per second"), new C wrappers, and independent timezone resource loading. ICU4J has been improved and tested for using ICU4C data and for running on Android.
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.
Also bump PKGREVISION for a few packages using it.
The packages I did this for:
net/yaz
lang/parrot
misc/openoffice3 (where I noticed the run-time failure due to missing shared library)
www/webkit-gtk
sysutils/open-vm-tools
inputmethod/ibus-qt
I didn't do this recursively or for all packages using icu
since I didn't know if they used the shared library directly,
some use was optional. The list of packages I didn't touch:
devel/devhelp
databases/idzebra
databases/sqlite3
devel/gnustep-base/
finance/gnucash
games/openttd
graphics/shotwell
lang/mono
meta-pkgs/boost
misc/calibre
misc/libreoffice
news/tin
textproc/php-intl
www/deforaos-surfer
www/epiphany
www/liferea-current
www/midori
* 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.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
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