Skip to content

Releases: BYVoid/OpenCC

ver.1.4.1

Choose a tag to compare

@github-actions github-actions released this 12 Jul 14:54
81223ed

2026年7月12日

  • 發佈重點:修復 opencc npm 套件在沒有預編譯二進制的平台(如 Intel Mac)上退回源碼編譯時,因源碼包缺少檔案而安裝失敗的問題,並新增 darwin-x64(Intel Mac)預編譯 npm 套件;另包含一批詞庫修正、.ocd 字典跨平台輸出修復與 Debian 打包流程重建。C++ ABI 與 1.4.0 相同(SOVERSION 1.4),下游程式無需重新連結。
  • 詞庫更新
    • 修正「托 / 託」候選順序:s2t 預設保留不轉換(如 托着茶托、人名音譯),並補充「託」委託義的詞組轉換(#1405)。
    • 依《通用規範漢字表》與《現代漢語詞典》修正「牴 → 抵」,以及「復 / 複 / 覆」相關轉換(#758)。
    • 修正「黄粱美梦」相關轉換:不再輸出「黃樑美夢」,並將 STPhrases.txt 中誤作「黄梁」的詞條統一為「黄粱」(#1408, #1410)。
    • t2s 新增「遶 → 绕」轉換(#1399);t2s 中保留簡體字形「坏」不再誤轉(#1391)。
    • 新增書法家「梁昇卿」人名詞條(#1402);新增香港地區詞「舒芙蕾 / 梳芙厘」(soufflé)(#1387)。
    • 日文字體:補充 JPShinjitaiCharacters 缺失的 11 個新字體字元(依安岡孝一「人名用漢字の新字旧字」),以相容性自映射收錄並用 @reverse-prefer 修正 t2jp 反向優先序(#1394)。
  • .ocd 字典格式 / 字典工具
    • BinaryDict 序列化改為固定寬度(uint32)欄位,使 32-bit 與 64-bit 構建寫出的 .ocd 位元組一致;讀取端自動偵測舊版 64-bit 佈局,舊檔案仍可在任何平台載入(#1414)。
    • CMake 新增 OPENCC_DICT_FORMAT 選項(ocd2 / text / ocd),可選擇構建輸出的字典格式,配置 JSON 隨之改寫(#1396)。
    • opencc_dict 整合 cppjieba 字典轉換(新增 cppjieba_utf8 輸入格式),取代並停止安裝原 cppjieba_dict 工具(#1392);CMake / Bazel 構建流程進一步改為直接以 opencc_dict 生成 jieba 合併詞典並移除私有構建工具,獨立構建 jieba 插件時需系統安裝 OpenCC ≥ 1.4.1 的 opencc_dict
    • vendored darts-clone 改為從 BCR 引入 0.32h.bcr.1,移除本地補丁(#1386, #1401)。
  • Node.js
    • 修復 npm 源碼包缺少 src/ConfigBasedConverter.hppsrc/PipelineConverter.cpp/.hppsrc/SingleStageConverter.cpp/.hppsrc/opencc_config_schema.inc 六個編譯所需檔案,導致 npm install 源碼編譯失敗(#1409, #1411)。
    • 新增 @opencc/opencc-darwin-x64@opencc/opencc-jieba-darwin-x64 預編譯套件,Intel Mac 不再需要源碼編譯(#1411)。
    • opencc-jieba 預編譯二進制的 macOS 最低版本從構建機的 15.0 降至 11.0,與 opencc 主套件的預編譯二進制一致。
    • prepack 驗證腳本新增 gyp 源碼與 #include 閉包檢查,確保源碼編譯所需的所有檔案都在 npm 包的 files 白名單內,防止同類問題再次發生。
    • CI 新增「從 npm pack 產出的 tarball 進行源碼編譯並安裝」的測試(ubuntu / macOS ARM / macOS Intel),覆蓋無預編譯二進制平台的實際安裝路徑。
    • JavaScript API 支援以 inline config 物件建立轉換器,保留原有字串配置行為;並覆蓋 bundled assets、自定義配置目錄與 tofu-risk 過濾的測試(#1412)。
    • OpenCCConfig TypeScript 型別改由 JSON schema 自動生成,取代原本寬鬆的 Record 型別(#1413)。
    • Node 預編譯二進制(@opencc/opencc-* scoped 套件)改用 Bazel 構建發佈,npm run prebuild(prebuildify / node-gyp)不再是官方發佈二進制的構建方式;Bazel 不支援的平台從此不再提供官方預編譯二進制,在這些平台上 npm install 目前仍會退回 node-gyp 源碼編譯,但此 fallback(binding.gyp)已計劃在後續版本中移除,屆時 Node 構建將統一使用 Bazel(#1416)。
    • 重寫 Node demo 範例(commit)。
  • 打包 / 構建系統
    • macOS 頂層 CMake 構建現在預設啟用 jieba 插件(BUILD_OPENCC_JIEBA_PLUGIN=ON),Homebrew 等以預設選項構建的套件管理器將直接提供 opencc-jieba 插件與 *_jieba.json 配置;其他平台與以子項目方式(FetchContent / add_subdirectory)引入的構建維持預設關閉,Python wheel 構建亦顯式關閉。
    • 重建 Debian 打包流程:新增頂層 debian/ 目錄使 dpkg-buildpackage 可端到端重現 Debian 構建,packaging/debian/ 補丁鏡像與 ver.1.4.0 源碼對齊,並改進 deb 構建腳本與 workflow(#1398, #1385, #1406)。
    • Bazel 升級至 9.1.1(#1384);rules_node_addon 更新至 BCR 1.0.3(#1370)。
    • MSVC /W4 改用 add_compile_options 設定,避免 rc.exe 資源編譯失敗(#1393);CMake 恢復支援舊式 Python executable 選項(#1389)。
    • 新增 opencc-v<version>-resources.zip 資源包發佈 workflow;release-pypi workflow 新增 push tag 觸發,與其他發佈 workflow 一致。
    • 穩定 Doxygen 文檔頁面 anchor ID,不再隨構建路徑變化(#1400)。
  • 測試
    • 新增 librime OpenCC 相容性測試,覆蓋 GetConversionChain、精確詞條展開與前綴匹配 fallback(#1395)。

Full Changelog: ver.1.4.0...ver.1.4.1

ver.1.4.0

Choose a tag to compare

@frankslin frankslin released this 01 Jul 20:42
664674f

2026年7月1日

  • 發佈重點:本版本主要目的是將 C++ ABI / SOVERSION 從 1.3 提升至 1.4,避免舊版下游程式靜默載入 ABI 不相容的新 libopencc;另外修復一個 1.3.2 與 librime 不相容之行為。詞表相較 1.3.2 有少量改動。
  • 詞庫更新
    • 修正 s2twp芯片 的分詞與轉換結果,避免區域詞被拆開後無法套用臺灣用語(commit)。
    • 修正「批覆 / 批复」、「陞 / 升」、「锺繇」、「魏徵」、「搧 / 扇」、「沈厚 / 沉厚」、「芝柏表」、U+20F24 相關詞條,以及若干含「陞」「钜」字的人名(#1365)。
    • 修正含「台」字的人名、「今周刊」、「爱丽舍 / 爱丽舍宫」、「舖 / 铺」等轉換;調整 HKVariantsRevPhrases 中的香港用字反向映射(#1369)。
    • 新增「自干五 → 自乾五」;補充動詞用法「扇 → 搧」的詞組轉換(呼扇扇火扇風扇風耳朵鋪眉搧眼)並在字符映射中加入 作為 的候選(#1371)。
    • 修正 别强 預設轉換為 別強#1366, #1378);移除 STPhrases.txt 中以全形句號「.」分隔、實際難以命中的人名詞條(#1379)。
  • Darts / .ocd 字典格式
    • 升級 vendored darts-clone 至 v0.32h,並加強 malformed .ocd 驗證,避免讀取損壞字典時越界或接受不一致資料(#1372)。
    • 新寫出的 .ocd Darts unit 固定為 32-bit,同時自動偵測並讀取 legacy 64-bit .ocd,修復舊檔 prefix search 邊界問題(#1373)。
    • 改善 DartsDict 讀取錯誤或 legacy .ocd 檔案時的記憶體所有權與例外安全,避免驗證失敗路徑洩漏或留下不完整狀態(#1382)。
    • Darts 支援改為常態啟用,移除 ENABLE_DARTS / USE_SYSTEM_DARTS 分支;內建 opencc_dictocd 轉換和 runtime .ocd 載入,.ocd 字典可從 filesystem 或 resource zip 載入(#1374)。
  • 效能提升
    • union 詞典組中的單詞典前綴匹配新增 fast-path,減少不必要的群組遍歷(#1367)。
    • 從 filesystem 或 resource zip 載入 .txt 格式詞典時,runtime 會直接構建 in-memory Darts 字典,提升初始化和長文本前綴匹配效能;新增 SpeedBenchmark Bazel 目標供後續基準測試使用(#1376)。
  • C++ ABI / API
    • SOVERSION 從 1.3 升至 1.4,避免已鏈結 libopencc.so.1.3 的舊 C++ 下游程式靜默載入 1.3.2 之後 ABI 不相容的 OpenCC;下游程式需重新鏈結(#1377)。
    • 修復啟用 normalization 前處理時 Converter::GetConversionChain() 返回空指標的問題;現在配置載入器會保留主 conversion_chain 供 librime 等下游 introspection 使用,PipelineConverter 本身仍保留「無單一 conversion chain」語義(#1380)。
    • 清理公開標頭安裝範圍:DictConverter.hppPhraseExtract.hppUTF8StringSlice.hppBinaryDict.hppDartsDict.hpp 不再安裝至 include/opencc/DictGroup.hppMaxMatchSegmentation.hppMarisaDict.hpp 等配置可見或插件/字典支援標頭仍保留公開(#1380)。
  • Node.js / Python / 構建系統
    • 修復 opencc-jieba npm 套件中 normalization 相關資源路徑,並補充 Node.js 測試覆蓋(commit)。
    • Bazel 依賴更新:rules_node_addon 切換至 BCR 1.0.2,node_addon_api 更新至 BCR 8.9.0;vendored RapidJSON 與 1.1.0.bcr.20250205 對齊(#1368)。
    • Bazel BUILD 檔改用顯式規則載入並補充必要 exports_files,提升 Bazel 9/10 前向相容性(#1381)。
    • 修復 native CLI 與 Node.js CLI 的內建設定檔說明清單遺漏 s2hkp.jsonhk2sp.json;兩個設定在 v1.3.2(#506)新增但未列於說明文字。
  • 測試
    • 補充 s2twp mixed-script 測試、Darts .ocd 32-bit / legacy 64-bit 讀取測試、resource zip 載入測試、normalization conversion-chain introspection 測試,以及多組詞庫回歸測試。
    • Windows Zig 構建腳本更新以配合 vendored Darts 與 Node 原生模組構建(#1375)。
    • 清理配置 schema warning 測試(commit)。

New Contributors

Full Changelog: ver.1.3.2...ver.1.4.0

ver.1.3.2

Choose a tag to compare

@frankslin frankslin released this 29 Jun 04:19
1a7c529

2026年6月28日

  • 詞庫更新
    • 地區詞新增:20 種基本胺基酸及常見醫學/藥物臺灣名詞(#1289, #1299)、Fortune 500 公司譯名(#1270)、香港專有名詞(#1256, #1267)、美國州名/領地譯名(#1269);持續修正多組因分詞界限導致的轉換失敗(#1214, #1296, #1318)。
    • 字符映射修正:「后 / 後」「松 / 鬆」「虱目魚」(commit)、「欲」「丰 / 豐」「划 / 劃」「游 / 遊」「托 / 託」(#1213)、各式果乾詞條(葡萄乾、芒果乾等)、「冻干 / 凍乾」「榴莲 / 榴槤」(#1233)、「皂」「並」(#788)、「內」「潘岳白髮」「采椽不斲」(#1232)、「毀」「凌」「仇」(#1243)、「焕 / 煥」「冢」(#1244)、「丁當」相關詞組(#1036)、「想象 / 想像」(#1035)、「周济 / 周濟」(#1251)、「坏 / 坯」(#1250)、「沈 / 沉」(#1293)、「甦」(#1310)、「里」(#1295)、「麪 / 麵 / 面」(#1297)、「硷」(#461)、「鏟 / 剷 / 铲」(#1319)、「幷 / 并」(#1335)、「市場行銷 / 市場營銷」(#1327)、「妝髮」(#1326)、「去干擾」(#1325)、「乾闥婆」(#1307);調整「内卷 / 內捲」(#1203)、「信道 / 通道」(#508)、「調色板 / 調色盤」(#1288)等單向轉換策略。
    • 新增 HKVariantsPhrasesTWVariantsPhrases 詞典,補充字級映射無法覆蓋的詞組例外(#1247);新增 s2hkphk2sp 轉換模式(#506)。
    • 日文字體:重構 jp2t / t2jp 詞典與配置(#1302, #1303),與日本官方字表對齊(#1315),修正多組歷史性錯誤對照,補充 予 -> 預/豫弁 -> 辯/辨/瓣連 -> 聯 等詞語對應(#1265)。
  • 轉換行為調整
    • 繁轉簡模式預設不再輸出大部分現代平台無法顯示的「類推簡化字」(取消 894 餘組轉換);如需舊行為,可通過 --include-tofu-risk-dictionaries 啟用(#1234)。
    • 所有內建配置均新增 CJK 相容表意文字正規化前處理(#1358):Unicode U+F900–U+FAFF 區塊的字元在轉換前先映射至標準碼位,確保各移植實作行為一致。
    • 命令列工具改善:串流輸入處理(#1226)、保留未映射位元組與表意描述序列(#1292)、對異體選擇符發出警告、Windows UTF-8 路徑支援(#1220)。
  • 配置文件新功能(供自定義配置的使用者):
    • 配置文件全面支援 JSONC(#1280, #1301);違反 schema 時會發出警告(#1351)。
    • 新增 inline dictionary:可在配置文件內直接嵌入詞條,無需另建 .ocd2 文件(#1284);提供 compile_to_inline_config.py 工具將現有配置打包為自含格式(#1300)。詳見 README.md 的「內聯字典」章節
    • 詞典組新增 match_policy 欄位:short_circuit(短路,原有行為)或 union(最長前綴合并,取所有子詞典中最長的命中結果)(#1352, #1353)。
    • 新增 normalization 欄位,可在分詞與轉換前插入正規化步驟(#1358)。
    • 從本版本起發佈純 json + txt 詞典資源包,供其他工具鏈互操作(#1312, #1321, #1322)。
  • 效能提升
    • 前綴匹配流程優化,典型長文本提升 40%-60%(#1287);新增單詞典 fast-path(#1331, #1332);記憶體載入 ocd2 支援延遲重建 lexicon(#1328);消除轉換熱路徑中的多餘字串拷貝(#1345, #1359)。
    • 移除 s2tt2st2hkt2twhk2tjp2ttw2t 七種配置中冗餘的 mmseg 步驟(對這些單階段配置,mmseg 與轉換本身等價),消除一次額外輸入掃描(#1362)。
  • C++ API
    • SimpleConverterSegmentationConversion 等主要介面新增 std::string_view 重載(#1345, #1359)。
    • 修復 Dict 析構相關 ABI 未定義行為(#1278)、MARISA FlatVector 初始化問題(修正後 32-bit 與 64-bit 系統生成的 .ocd2 內容一致,commit);更新 marisa-trie 至 0.3.1.bcr.2。
  • Python / Node.js
    • Python 套件 OpenCC 新增 CLI 入口(pip install 後即可直接使用 opencc 指令)(#1337)。
    • npm 預編譯原生模組拆分為 scoped packages,安裝體積更小(#1261, #1263);更新 cppjieba#1320)。

New Contributors

Full Changelog: ver.1.3.1...ver.1.3.2

ver.1.3.1

Choose a tag to compare

@frankslin frankslin released this 09 May 21:22
2f56960

2026年5月9日

  • 辭典與詞條更新:新增古典音樂人物專有名詞譯名轉換近百名;修正「里、制、岩、净、炼、铲斗」、「拉链 / 拉鏈」、「以太网 / 乙太網路」等轉換問題;補充「汉坦病毒 / 漢他病毒」、「二𫫇英 / 戴奧辛」等新詞彙;修正所有「査 (U+67FB)」詞條為「查 (U+67E5)」;修正「乾安县」等錯誤轉換;並移除或調整「通过 / 透過」、「范式 / 正規化」、「程序 / 程式」、「缺省 / 預設」等若干會造成語義偏移的過度轉換。合計 .txt 詞典:共新增 294 行,刪除 72 行(#1140, #1155, #1157, #1162, #1168, #1171, #1173, #1177, #1181, #1184, #1185, #1189, #1191)。
  • s2twp 分詞修復:修復因分詞邊界導致 s2twp 未能正確轉換的 33 個詞組,例如「云计算 / 雲端計算」等(#1193)。
  • 轉換算法更新:重寫核心轉換算法,典型長文本基準測試中轉換速度提升 3-10 倍(#1130, #1156, #1180)。
  • npm package 全新升級:Node.js 原生模組改用 N-API 重寫,提升跨 Node.js 版本兼容性;新增可選 Jieba 分詞支持,提供簡易 opencc CLI,並更新預編譯包打包方式(#1142, #1145, #1149, #1151, #1153, #1195)。
  • 構建與發佈基礎設施更新:新增 golden test 覆蓋轉換結果回歸;加固 Python PyPI release 流程;更新 Node.js、Bazel 與跨平台 prebuild/release 流程(#1043, #1128, #1158, #1159, #1166, #1169, #1190)。
  • 文檔更新:新增「OpenCC 設計思想」等說明文件,明確「避免過度轉換」等詞典維護原則(#1152)。
  • 下游協作:與 opencc-js 建立數據同步協作機制,提升 OpenCC 不同實作間的一致性。

首次參與的貢獻者

歡迎以下貢獻者首次參與 OpenCC:

Full Changelog: ver.1.3.0...ver.1.3.1

ver.1.3.0

Choose a tag to compare

@frankslin frankslin released this 18 Apr 04:27
4d23eff

OpenCC 1.3.0 Release Notes

2026年4月17日

  • 實驗性 Jieba 分詞插件:新增可載入式 Jieba 分詞插件(libopencc_jieba),並支援獨立打包發佈;插件 ABI 採用碼點長度;winget 可攜包一併包含插件(#1091, #1092, #1093, #1099, #1103, #1105, #1111)。
  • 詞典與詞條更新:新增臺灣 IT 用語及「巨集」術語、距離量詞繁體對應、「奥巴馬↔歐巴馬」、「公元→西元」、「福建面」等詞條;修正「乾/干/余/系/面」等字轉換、「移動資料→行動資料」錯誤、「倒霉→倒黴」錯誤、「文本→文字」過度轉換、「控制台」不應轉換、「背包→揹包」錯誤及「念佛→唸佛」錯誤;修正「星露谷物語」在 s2twp 模式下的錯誤分詞(#1075, #1079, #1080, #1088, #1089, #1090, #1094, #1096, #1097, #1100, #1106, #1110, #1117, #1122, #1123)。
  • 安全與穩定性修復:修復 UTF8Util 堆越界讀取(#794, #799)、二進制字典值邊界檢查、const_cast 未定義行為;轉換失敗時返回非零退出碼(#1072, #1073, #1083, #1098)。
  • Windows 支援改善:配置文件改用寬字符路徑檢查;Jieba 插件在 Windows 使用 Unicode 安全文件讀取;修復 Windows Bazel 構建與測試;改進 WinGet 可攜包內容與執行時布局(#1050, #1051, #1056, #1060, #1082, #1084, #1086, #1087, #1102, #1104)。
  • 構建與依賴更新:MARISA 升級至 0.3.1、更新 Bazel BCR 依賴、抑制第三方頭文件編譯警告、修復 PyPI 構建版本與環境變量問題、新增 Debian 包發佈工作流(#1065, #1068, #1078, #1081, #1107, #1113, #1116, #1118)。
  • 平台與 CI 調整:移除 EOL Python 3.9 支援;更新 Python/Node.js 測試與發佈矩陣;修復 GitHub Actions 權限與安全問題;補充 README、AGENTS/CLAUDE 文檔與相關資源(#1033, #1040, #1045, #1047, #1070, #1074, #1076, #1108, #1109, #1114, #1120)。
  • 其他維護性更新:改進配置查找、交互式命令行提示、安裝路徑可攜性與版本號維護;同步版權年份與若干文檔資源更新(#971, #1061, #1063, #1064, #1066, #1069)。

給發行版打包者的特別說明

本次 1.3.0 新增了實驗性的 opencc-jieba 分詞插件(動態庫 libopencc_jieba / opencc_jieba)。此插件屬於可選組件,建議發行版在打包時將其與 OpenCC 主程序/主函式庫分開處理:主包維持核心轉換功能,插件建議單獨編譯並拆分爲獨立子包,例如 opencc-jiebaopencc-plugin-jieba。這樣可以避免將 Jieba 及其附帶詞典作爲硬依賴引入所有安裝場景,也便於下游按需安裝與後續升級維護。

首次參與的貢獻者

歡迎以下貢獻者首次參與 OpenCC:

Full Changelog: ver.1.2.0...ver.1.3.0

ver.1.2.0

Choose a tag to compare

@BYVoid BYVoid released this 22 Jan 09:12

What's Changed

詞庫與轉換規則更新

編譯與環境適配

持續集成與工具

修復與優化

文檔

New Contributors

Full Changelog: ver.1.1.9...ver.1.2.0

ver.1.1.9

Choose a tag to compare

@BYVoid BYVoid released this 08 Aug 04:49

What's Changed

  • Add Bazel Python library and test. by @BYVoid in #882
  • Fix the build issue of rapidjson. #867
  • Fix the ABI issue. #885

Full Changelog: ver.1.1.8...ver.1.1.9

ver.1.1.8

Choose a tag to compare

@BYVoid BYVoid released this 28 Jul 02:54

Full News

What's Changed

New Contributors

Full Changelog: ver.1.1.7...ver.1.1.8

Version 1.1.7

Choose a tag to compare

@ayaka14732 ayaka14732 released this 15 Oct 13:31
e5d6c5f

What's Changed

New Contributors

Full Changelog: ver.1.1.6...ver.1.1.7

Version 1.1.6

Choose a tag to compare

@ayaka14732 ayaka14732 released this 08 Dec 07:46
c3caa5f

What's Changed

New Contributors

Full Changelog: ver.1.1.5...ver.1.1.6