picolibc-i18n

主要观点:Picolibc 继承 newlib 的国际化支持,包括 locales 和 iconv 两个主要 API,需符合 C 语言标准和 POSIX 规范,目标是提供最小化且高效的国际化支持。
关键信息

  • locales 影响众多处理字符串的 API,涵盖字符集转换等本地化信息,Newlib locale 支持在不同环境下情况不同,存在 JIS 相关的奇特之处及一些错误。
  • iconv charset 支持与 locale 分离,支持更多目标和运行时加载 charset 数据,两个 API 中字符集名称映射方式有差异。
  • POSIX 扩展 locale 支持的方式,Picolibc 国际化支持的目标,如支持 UTF-8 等,以及切换 JIS wchar_t 为 Unicode 等操作。
  • 有 Tiny locale 和 Tiny iconv 的实现,前者是符合标准的最小化 locales 实现,后者代码简洁,替换 newlib iconv 代码较容易。
    重要细节
  • Newlib locale 支持在 Cygwin 较完整,依赖 Windows 支持,除字符集转换和分类数据外其他部分可在栈底模拟。
  • Newlib iconv 支持更多 charset 但与 locale 支持不同,字符集名称映射方式有别。
  • Tiny locale 按不同字符集级别处理,有 ASCII、UTF-8 和扩展字符集等模式,不同模式下有不同实现和内存使用情况,存在功能差距。
  • Tiny iconv 实现简洁,使用内部 API 计算字符集转换函数,代码约 200 行。
  • 新代码目前与旧版本并行,未来需考虑是否保留旧版本。
阅读 7
0 条评论