主要观点: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 行。
- 新代码目前与旧版本并行,未来需考虑是否保留旧版本。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。