github EasyIME/PIME v2.0.0-beta2

pre-release4 hours ago

PIME 2.0.0-beta2 測試版釋出

PIME 2.0.0-beta2 主要針對 2.0.0-beta 用戶回報的 Windows 10/11 穩定性問題、處理程序生命週期控制、IPC 通訊異常崩潰及各語言後端進行了大量修復與健全化。

核心與 Launcher 穩定性改善 (Process Lifecycle & IPC)

  • 防止後端行程繼承客戶端管道控制代碼:解決具名管道代碼洩漏與關閉延遲問題。
  • 增強行程監控與清理機制:透過 Windows Job Object 確保 Launcher 退出時確實終止後端行程。
  • 命令列參數處理修復:Launcher 改以 raw arguments 傳遞後端啟動參數,避免 Windows 下特殊字元逸出問題。
  • 多使用者/Session 隔離與強韌化:Watchdog 結束事件與 Mutex 依 Session 隔離,並修復使用者名稱取得邏輯。
  • 精確追蹤 Pending Requests:依 (client_id, seqNum) 追蹤未處理請求,並在後端重啟時正確處理客戶端斷線。

TSF 客戶端容錯與崩潰修復 (Client Robustness)

  • 修復 Launcher 異常時宿主崩潰:防止在 PIMELauncher 崩潰後應用程式按鍵時跟著崩潰。
  • RPC 例外處理與回應防護:修正收到 null 或格式異常 RPC 回應時的崩潰,並攔截 JSON 剖析例外。
  • 候選字與游標保護:限制候選字數量不超過按鍵數,並限制游標位置在組字區範圍內防止越界。
  • 多執行緒防護:針對語言列圖示快取加入保護鎖;管道 I/O 取消時等待非同步作業結束再返回。
  • 修正 API 介面型別:修正 PIMEClient::getPipeName 回傳型別錯誤問題。

輸入法模組與執行期修復 (IME Modules & Runtimes)

  • 新酷音 (Chewing):
    • 修復儲存設定時可能造成 config.json 被清空的問題。
    • 改用按鍵事件狀態取代 GetAsyncKeyState,提升按鍵處理精確度。
    • 移除 sys.path hack,修正 config_tool.py 模組引入問題。
    • 候選字選擇增加邊界防護,並在後端關閉時確實關閉 SQLite 連線。
  • CIN 基礎模組 / RIME:
    • 修復獨立打包 Python 環境下 configtool.py 找不到模組的問題 (#893, #908)。
    • 強化 RIME 對 OpenCC 模組的相容性引用。
    • 正則表達式改用 raw string 消除跳脫字元警告。
  • Node.js 輸入法模組:
    • 移除 emojime 過時的 devDependencies,修復現代 Node.js 環境建置失敗問題。
    • 建置流程導入 Webpack 打包與最小化 (bundle & minify),大幅精簡發行體積。
  • CIN 轉 JSON 工具:
    • cin2json 預設移除格式縮排以最小化輸出體積,減少記憶體與磁碟佔用。
  • 子模組更新:
    • 更新 libIME2 至最新版本。

建置與 CI

  • 建置系統全面採用現代化 CMAKE_MSVC_RUNTIME_LIBRARY 設定。
  • CI 簽章流程加入保護,若無憑證 Token 時可平順跳過簽章以確保建置暢通。

Don't miss a new PIME release

NewReleases is sending notifications on new releases.