Skip to content

Releases: BYVoid/OpenCC

ver.1.4.2

Choose a tag to compare

@github-actions github-actions released this 22 Aug 19:05
025f371

2026年8月22日

  • 發佈重點:轉換熱路徑大幅加速(純文字語料的整體轉換時間最多降至原本的 1/7),修復大端序平台載入 legacy .ocd 字典得到空字典的問題,並新增兩個實驗性 API(詞級候選查詢與一對多歧義標註,含 CLI --ambiguities)。詞庫方面修正了 s2twp 的數處貪婪匹配錯誤與 tw2t/tw2s 對簡體「么」的破壞性轉換,補充臺灣/香港地區詞,並修正古籍語境下 s2t 的一對多字用字。C++ ABI 與 1.4.1 相同(SOVERSION 1.4),實驗性 API 皆位於未安裝的私有標頭或巨集開關之後,下游程式無需重新連結。
  • 詞庫更新:
    • 修復 tw2t/tw2s/tw2sp 會把已是簡體的「什么」轉成「什幺」的問題:生成的 TWVariantsRev 含 么 -> 幺(臺灣標準 幺 -> 么 的反向),在 TWVariantsRevPhrases.txt 補上「什么/怎么/这么/那么/多么/要么/好么/甚么」等例外映射至「麼」形,同時保留「老么 → 老幺」等真正的 yao1 詞(#1469, #1473)。
    • 修復 s2twp 因較短詞條先命中而拆錯詞的問題:補上「互联网络」「快闪存储器」「老挝人民民主共和国」的完整詞條,並將「老撾人民民主共和國」對應到臺灣官方譯名「寮人民民主共和國」(#1467, #1468)。
    • 「梁/樑」:新增臺灣地區用字映射與人名、地名保護詞條(#1407);並將 TWVariantsRevPhrases 與 STPhrases 對齊,補上 41 條梁(棟梁義)的反向詞組映射,使 tw2t 能從上下文還原「橋樑」而不誤傷姓氏、地名(#1424)。
    • 新增奧斯卡最佳導演與最佳影片製片人的臺灣/香港譯名詞條(取自中文維基百科 NoteTA 地區詞表並以 Wikidata 交叉核對,僅收錄真正存在音譯差異者,如 卡梅隆/卡麥隆/金馬倫)(#1466)。
    • 新增地區詞「內存條 → 記憶體模組」(s2twp/s2hkp,含反向詞條)(#1475)、「数字人文 → 數位人文」(s2twp/tw2sp)(#1465)。
    • s2t:修正古籍語境下一對多字的用字。征/咸/斗/里/范/岳/冲/郁/谷 在 STPhrases 沒有對應詞條時會退回 STCharacters,而那裏的候選次序是按現代用法排的,碰上文言文和書名就常常選錯。此次按義項補入詞條:征伐義(征南、从征实录)、年號與副詞義(咸淳、少长咸集)、星宿義(斗姆、东斗星君)、地名與音譯(甫里、摩里支)、姓氏義(范文正、岳武穆)、道教與梵語音譯(道冲、郁迦罗越);谷神 改為保留「谷」(《老子》「谷神不死」),谷神星 則因鍵更長,仍映射為「穀神星」。這批問題是在清理殆知閣文獻時發現的,該批書名中 47 條誤轉修正了 46 條,現代語義的轉換一律不受影響(#1479)。
    • s2t:「小丑」不再預設轉換為「小醜」(#1423);「雇」改為 STCharacters 中「僱」以外的非預設候選(#906);新增「这周/那周/若干周/几周/周线 → 週」等指示與量化用法,並補上「周围/周边/周遭」的分詞保護詞條(#1428);新增顯式詞條「复盘 → 復盤」,使其不再只依賴 复 的候選順序(#1427)。
    • t2s:修正過度轉換「乾斷食 → 干断食」「乾紅 → 干红」(#621, #1429)。
    • 修正「鑒」相關詞條與若干提稱語,如「郝铭鉴 → 郝銘鑒」(#1421)。
  • 效能:
    • 轉換熱路徑跳過不可能匹配的字元區段:PrefixMatch 在建構時建立 key 起始字元表並提供 SkipUnmatchable(),讓 Conversion::AppendConverted 與 MaxMatchSegmentation 一次消化整段不可能作為詞條開頭的字元(ASCII、標點、emoji 以及不作為任何 key 開頭的漢字),取代逐字元的 trie 查詢。過濾以精確碼位而非 UTF-8 首位元組進行(0xE4..0xE9 這些常見漢字首位元組幾乎都有 key,按首位元組只能跳過約 10%,按碼位則有 69–76% 的位置不匹配任何 key)。22 MB 繁體語料的整體 CLI 時間(含字典載入):t2s 3.40s → 0.52s、t2tw 3.43s → 0.30s、s2twp 8.40s → 4.86s;4 MB 中英混合語料的 t2s 0.83s → 0.11s。啟動時間、最大 RSS 與缺頁次數不變,轉換輸出逐位元組不變(以對照逐字元參考實作的差分 fuzz 測試保證)(#1464)。
  • 實驗性 API / CLI:
    • 新增 librime 風格的詞級候選查詢 Converter::GetConversionCandidates,列舉單一詞經整條轉換鏈後的所有形式(如 s2t 的 里 展開為 里、裏)。該 API 以 OPENCC_ENABLE_UNSTABLE_API 巨集開關隔離,不進入已安裝標頭與 OPENCC_ABI_VERSION 契約;成員刻意設為非虛擬,開啟巨集不改變 Converter 的 vtable(#1431)。
    • 新增一對多歧義標註與 CLI --ambiguities 模式:轉換結果與 Converter::Convert 完全一致,同時標出每一個字典匹配為一對多的輸出區段(如 STPhrases 的 文丑 -> 文丑 文醜、TSCharacters 的 鍾 -> 钟 锺),呼叫方可據此定位歧義位置並按需以 GetAllConversions 取得候選。檔案輸入輸出 JSONL 記錄且記憶體用量有界,互動式 stdin 則逐行輸出 JSON 封包。實作位於未安裝的私有標頭,不改變已安裝標頭與 ABI,轉換熱路徑不受影響(#1461, #1462)。
  • .ocd 字典格式:
    • 修復大端序平台(s390x、ppc64、sparc64、hppa)上 legacy 64-bit .ocd 佈局的偵測:原本以探測位元組 [4..7] 是否為零來判斷,該寫法僅在小端序主機成立,導致大端序平台將舊檔誤判為固定寬度格式並載入為空字典。三處判斷統一改用 LooksLikeLegacy64Field(),以原生 uint64_t 讀取探測值並檢查高 32 位,在兩種位元組序下皆正確(#1471, #1472)。
  • Node.js:
    • npm 套件的源碼編譯 fallback 從 node-gyp 改為 Bazel:原生 addon 優先透過 @opencc/opencc-- 預編譯 scoped 套件安裝(涵蓋 macOS x64/arm64、Linux x64/arm64、Windows x64,均以 Bazel 構建,字典隨包預編譯);沒有預編譯二進位套件的平台,npm install 會以 Bazel 完整地從源碼構建——編譯 //node:opencc 並重新生成字典(bazel / bazelisk 取自 PATH,或經 npx 自動下載 bazelisk;字典生成腳本的 Python 由 Bazel hermetic 工具鏈提供)。binding.gyp 與 .gypi 構建定義刪除,node-gyp、node-gyp-build、node-addon-api、prebuildify 依賴與 prebuild npm script 一併移除;tarball 不再攜帶 deps/(C++ 三方依賴改由 Bazel Central Registry 提供),改為攜帶 Bazel workspace、src/ C++ 源碼與 data/ 字典源檔(#1426, #1430)。
    • CI 測試任務、Makefile target 與源碼 checkout 的開發構建一併改用 Bazel,與 npm 發佈所用的構建路徑一致;Windows CI 任務移至 windows-2025-vs2026(#1426)。
  • 打包 / 構建系統:
    • packaging/debian/ 同步至 Debian 的 1.4.1+ds1-8。Debian 已採納上游先前提出的 jieba 插件打包提案(拆為 opencc-jieba 與 arch:all 的 opencc-jieba-data 兩個套件,內嵌 cppjieba 的理由記於 debian/README.source);Debian 端亦重新啟用了 autopkgtest。packaging/debian/SPLIT_PROPOSAL.md 隨提案落地移除。另外 1.4.1+ds1-8 修復了 .ocd2 被放進 Architecture: all 套件的問題:.ocd2 是依主機位元組序寫出的 marisa-trie 映像,所有架構都會拿到 arch:all buildd 上構建的小端序副本,opencc 在 s390x 上因而以 size > avail_ 失敗(Debian bug #1145010,由重新啟用的 s390x autopkgtest 揪出)。*.ocd2 已移回 arch:any 的 libopencc1.4、jieba_merged.ocd2 移回 arch:any 的 opencc-jieba;libopencc-data 與 opencc-jieba-data 現在只含 JSON 配置與純文字 jieba 詞典來源。
    • Debian 套件構建改在 debian:sid 容器中進行(同步來的打包以 unstable 為目標,Ubuntu LTS runner 無法滿足),並在 dpkg-buildpackage 前套用 debian/patches quilt series(自動跳過已在樹中的補丁);arm64 改用 ubuntu-24.04-arm runner 原生構建,取代先前的交叉構建(#1420)。
    • 新增 packaging/freebsd/:FreeBSD ports tree chinese/opencc 條目的參考副本,供上游審閱與準備提交給 port maintainer 的改動。
    • 新增精簡 C++ 源碼包發佈流程(release-source.yml):以 OPENCC_SOURCE_PACKAGE_PROFILE=opencc 產生僅含 C++ 核心的 CPack 壓縮包(不含 Node.js、Python、文檔、packaging 與 plugins),並以 CMake 與 Bazel 雙路徑冒煙測試後上傳至 draft release;為此保留 Bazel workspace 檔案與頂層 patches/,僅排除可能含 API key 的 .bazelrc.user。
    • 修正 cmake/GitVersion.cmake 的 fallback 版本號:1.4.1 發佈時仍停留在 1.4.0,導致從釋出的 tarball(無 git 資訊)構建時版本回報為 1.4.0;本次發佈同步將其更新至 1.4.2,並讓 scripts/compute-version.sh 的 fallback 與之一致(先前停留在 1.2.1)。因此 Debian 打包的 0010-fix-git-version-fallback.patch 對 1.4.2 已無作用而移除,0012-fix-legacy-dict-detection-on-big-endian.patch 亦已包含於本次發佈。
    • Windows 發佈自本版起啟用程式碼簽章憑證:可攜式 CLI 壓縮包中的執行檔,以及 win32-x64 npm 二進位(opencc.node、opencc-jieba.dll)皆經 Authenticode 簽章,簽章服務由 SignPath.io 免費提供、憑證由 SignPath Foundation 免費提供,發佈流程改用其 release-signing policy;相關聲明與簽章/隱私政策見 README 的「Code Signing 程式碼簽章」一節(#1458, #1459)。
  • 測試:
    • PrefixMatchTest 改用測試專屬的字典檔名,避免與 MarisaDictTest 在共享工作目錄下爭用同一個 dict.ocd2,該競爭會使並行 ctest(如 dh_auto_test 的 ctest -j8)偶發失敗。

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.hpp、src/PipelineConverter.cpp/.hpp、src/SingleStageConverter.cpp/.hpp、src/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-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_dict 的 ocd 轉換和 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.hpp、PhraseExtract.hpp、UTF8StringSlice.hpp、BinaryDict.hpp、DartsDict.hpp 不再安裝至 include/opencc/;DictGroup.hpp、MaxMatchSegmentation.hpp、MarisaDict.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.json、hk2sp.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)等單向轉換策略。
    • 新增 HKVariantsPhrases 與 TWVariantsPhrases 詞典,補充字級映射無法覆蓋的詞組例外(#1247);新增 s2hkp、hk2sp 轉換模式(#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)。
    • 移除 s2t、t2s、t2hk、t2tw、hk2t、jp2t、tw2t 七種配置中冗餘的 mmseg 步驟(對這些單階段配置,mmseg 與轉換本身等價),消除一次額外輸入掃描(#1362)。
  • C++ API:
    • SimpleConverter、Segmentation、Conversion 等主要介面新增 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-jieba 或 opencc-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