重症监护病房66

ICU是软件国际化首选库,由使用 广泛的公司和组织.

发布概述

ICU 66更新至 Unicode 13码,包括新字符、脚本、表情符号和相应的API常量。它还更新到 第36.1条带有Unicode 13更新和错误修复。

这些新的、额外的第1季度发行版是为了让那些无法以最新版本的Unicode发布其产品的供应商进行集成。这些版本影响较小,没有其他重要的功能添加或实现更改。下一个功能版本将是CLDR 37和ICU 67,计划于2020年4月发布。

中级ICU 66预览(2019-12月)更新为Unicode 13贝塔,包括新字符、脚本、表情符号和相应的API常量。它还更新为CLDR 36.1预览版,包含Unicode 13更新和错误修复。

预览版和候选版本/最终版本之间没有API更改,也没有重大代码更改。由于测试版反馈,Unicode 13数据发生了一些变化。

有关包括迁移问题在内的更多详细信息,请参阅下文。

请使用 icu支持邮件列表和/或查找/提交错误报告.

ICU 66固定票清单

版本号

预览版的库版本号为66.0.1。

初始版本的库版本号为66.1。

如果有维护发布,它们将是66.2、66.3等。

注意:可能在 维护-66预打包下载文件中未包含的分支。

常见更改

    • Unicode 13码(重症监护病房-20893)

    • 总计5930个新字符

      • 4个新脚本

      • 55个新表情符号字符,以及其他新序列

      • 新的CJK扩展,平面3中的第一个字符:U+30000..U+3134A

  • CLDR第36.1条

    • Unicode 13根排序数据和用于排序和音译的中文数据

ICU4C特定变化

ICU4J特定变化

已知问题

常见问题

    • 还没有。

ICU4C(与ICU 65相同)

    • ICU4C需要C++11支持。某些平台(如IBM AIX、IBM z和Solaris)可能无法再构建ICU,除非有改进的编译器可用。请参阅下面的“ICU4C平台支持”部分。

  • ICU4C在Cygwin 3.0.0上存在构建错误,请使用Cygvin 2.11.2的早期版本作为解决方法(重症监护病房-20435).

  • ICU4C知道在AIX上使用GCC进行编译时存在问题。这些仍在调查中(重症监护室-3752)

重症监护病房4J

  • 还没有。

移民问题(与ICU 65相同)

  1. 类似功能的ICU4C API宏(例如,U16_NEXT_OR_FFFD())总是与尾随分号一起使用,但有些宏没有分号就可以使用,当与一个宏一起使用时,会导致-Wextra-semistmt警告。这个问题已经解决了。请调整呼叫站点,添加缺少的分号。如果您有很多这样的调用站点,那么可以临时更改unicode/umachine.h中UPRV_BLOCK_MACRO_BEGIN和UPRV_BROCK_MACRO_END的定义(重症监护病房-20601,icu/拉动/759)

    1. 一些C++函数现在返回协变(与此相同)指针类型。(重症监护病房-20783)

    2. 在以下情况下,这可能会破坏自定义子类的定义:

      1. 您有一个ICU类的子类,它本身是定义虚拟克隆()的类的子类别。

      2. 例如:MyBreakIterator→RuleBasedBreakInterator→Break迭代器

        1. 请注意,RuleBasedBreakIterator::clone()现在返回一个指向RuleBasedBreakIterator的指针,而不是指向BreakIterator的指针。

      3. 子类(MyBreakIterator)将clone()定义为返回基类(BreakInterator)的指针。

      4. 这将不再编译,因为子类克隆返回的类型与直接父类(RuleBasedBreakIterator)中克隆所返回的类型不协变(即,宽度更大的类型)。

      5. 要解决此问题,请更改子类以返回指向直接父级(RuleBasedBreakIterator)或其自身(MyBreakIterator)的指针。

  2. 所有公共C++标头现在都假定默认上下文为extern“C++”。(重症监护病房-20530)

      1. ICU4C同时具有C和C++标头,适用于使用C或C++编译器的调用方,或者适用于使用C++编译器且希望具有二进制兼容性的调用方。C++标头之前在假定调用方使用它们的链接上下文方面不一致。在某些情况下,C++标头可以在外部“C”上下文中工作,而在其他情况下则不能。从ICU 65开始,所有公共C++头现在都假定默认上下文为extern“C++”。

    1. 这意味着,在外部“C”块中包含C++标头的调用方需要修改其代码,以将包含的标头移动到外部“C“块之外。

    2. 所有公共C++标头都由宏“U_SHOW_CPLUSPLUS_API”保护。(重症监护病房-20578)

    3. 如果定义了“__cplusplus”,则此宏默认设置为1,但如果ICU用户希望仅使用C API(使用C++编译器),则可以在包含任何标头之前将其定义为0。

    4. Windows上的ICU4C不再使用库DLL的固定基址。(重症监护病房-20768)

ICU4C平台支持

  • 全部:构建ICU库需要对C++11的编译器支持。

    • GCC:版本4.8和更高版本已经过测试。

    • IBM AIX:

      • xlC C/C++当前不支持足够的C++11子集(#13393)

      • gcc可能有效

  • macOS:XCode 8.3(LLVM clang 8.1.0)已经过测试。

  • Solaris公司

  • 窗户:

    • 支持的最低版本是Windows 7。不再支持Windows XP和Windows Vista。

    • 生成Visual Studio UWP项目需要 Visual Studio 2017使用的版本Windows 10 SDK安装。

      • 当使用“@compt=host”时,在低于Windows 10版本1703的版本上,6个区域设置存在日期和数字格式问题(#13119).

    • 由于Windows没有ckb语言环境,LCID转换API不会往返库尔德语(ku)和中央库尔德语(ckb)(#2018年1月).

    • 使用ICC编译器的Windows:

      • 源文件编码。ICC编译器无法识别/utf-8型选项。众所周知,工作区取得了成功。(#13251)

  • IBM z公司

      • xlC C/C++当前不支持足够的C++11子集(#13393)

ICU4J平台支持

ICU4J适用于Java 7和Android API 21级。

ICU4C下载

库版本号:66.1

发布日期:2020-03-11

可在git/GitHub标签页上下载源代码和二进制文件:https://github.com/unicode-org/icu/releases/tag/release-66-1

请参阅源代码访问页面了解如何直接从GitHub下载ICU文件树。

从CLDR标记生成ICU区域设置数据释放-36-1

ICU4J下载

库版本号:66.1

发布日期:2020-03-11

git/GitHub标签页上提供了源代码和二进制下载:https://github.com/unicode-org/icu/releases/tag/release-66-1

请参阅源代码访问页面了解如何直接从GitHub下载ICU文件树。

Maven依赖项:

<依赖性>

<groupId>com.ibm.icu</groupId>

<artifactId>icu4j</artifactId>

<版本>66.1

</依赖性>