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/.
out of date - it was based on a.out OBJECT_FMT, and added entries in the
generated PLISTs to reflect the symlinks that ELF packages uses. It also
tried to be clever, and removed and recreated any symbolic links that were
created, which has resulted in some fun, especially with packages which
use dlopen(3) to load modules. Some recent changes to our ld.so to bring
it more into line with other Operating Systems also exposed some cracks.
+ Modify bsd.pkg.mk and its shared object handling, so that PLISTs now contain
the ELF symlinks.
+ Don't mess about with file system entries when handling shared objects in
bsd.pkg.mk, since it's likely that libtool and the BSD *.mk processing will
have got it right, and have a much better idea than we do.
+ Modify PLISTs to contain "ELF symlinks"
+ On a.out platforms, delete any "ELF symlinks" from the generated PLISTs
+ On ELF platforms, no extra processing needs to be done in bsd.pkg.mk
+ Modify print-PLIST target in bsd.pkg.mk to add dummy symlink entries on
a.out platforms
+ Update the documentation in Packages.txt
With many thanks to Thomas Klausner for keeping me honest with this.
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.