Skip to content

Releases: Ljh684/opencc

opencc.mbt 0.1.0 - pure MoonBit Chinese script conversion

Choose a tag to compare

@Ljh684 Ljh684 released this 29 Sep 17:31

用纯 MoonBit 实现 OpenCC 级别的简繁与地区用词转换:简体 / 繁体 / 台湾正体 / 香港繁体 /
日本新字体 / 篆书,零 FFI、零运行时 I/O,可编译到 wasm、wasm-gc、js、native。

已验证的能力

  • 官方一致性:OpenCC golden 语料 5/5 逐字节通过(s2t、s2hk、s2tw、s2hkp、s2twp),
    CLI 文件输出与期望文件逐字节相同(22038 bytes)。
  • 往返一致性:s2t → t2s 与 s2tw → tw2s 逐字节回到源文本;其余三对因快照缺少
    OpenCC 构建期生成的词典而有已知差异,verify 会逐条列出缺哪一本。
  • 测试:33 个单元测试在 wasm / wasm-gc / js / native 四个后端全部通过,
    其中包含覆盖 76099 条词典条目的全量属性测试。
  • 数据可审计:上游快照固定 commit + 逐文件 SHA-256;tools/gen_dict --verify
    校验"重新生成的结果与仓库一致"。

本次发布包含

  • 三段式引擎(normalization → segmentation → 逐段 conversion)与可嵌套词典组;
  • 词典生成器:20 个词典 / 76099 条目编译为内嵌文本块,含 OpenCC 构建期派生词典的复刻;
  • CLI:list-configs、convert(-c/-i/-o/--text)、verify(含往返检查);
  • 库 API:config.chain(name)、config.convert(name, text);
  • 词典与配置各自成包:单方向构建 249 KB(t2s)/ 913 KB(s2t),全量 CLI 1341 KB;
  • 热路径优化:跳过不可匹配片段,ASCII 密集文本 4724 → 7503 码元/ms。

快速开始

moon test                                                  # 33/33
moon run cmd/opencc --target native -- verify              # 官方语料 5/5 + 往返检查
moon run cmd/opencc --target native -- -c s2twp --text "内存泄漏与软件优化"
# => 記憶體洩漏與軟體最佳化
moon build examples/t2s --target wasm-gc --release         # 单方向构建 249 KB

已知限制

  • 暂不支持标准输入(MoonBit 尚无标准输入 API;加 FFI 会破坏「零 FFI」);
  • 部分反方向配置引用的词典由 OpenCC 构建期生成,当前快照未提供,CLI 会列出 missing;
  • 不覆盖 OpenCC 的 staging/ 实验字典与 *_jieba 分词变体。

词典数据派生自 OpenCC(Apache-2.0),来源与哈希见 NOTICE
与 data/opencc/REVISION。