C‑Kermit 11 發布 – 首次在 15 年後推出的新版本,復興一項 45 年歷史的協議
C‑Kermit 11 提供了什麼以及為什麼重要
C‑Kermit 11 是旗艦 Kermit 實作在 15 年來的首個新版本,將一項 45 年歷史的序列檔案傳輸協議提升至現代的安全、網路與測試標準。此發布使 Kermit 能夠用於當代使用情境——SSH 包裝、嵌入式韌體更新以及跨平區域網路傳輸——同時保留其在舊系統上運行的歷史能力。
歷史背景:從 1981 年的序列橋接到今天的網路世界
- 在 1981 年,Frank da Cruz 與 Bill Catchings 創建了 Kermit 協議,以便在異質大型機(DEC‑20、IBM)之間的嘈雜序列鏈路上實現可靠的檔案傳輸。
- 到 1982 年,Kermit 已被移植到 MS‑DOS 與 Unix,而 C 實作(C‑Kermit)成為事實上的參考實作,加入了 TCP 支援、互動式 CLI 以及類似 Lisp 的腳本語言。
- Kermit 已被用於多項高調任務——包括國際太空站、颶風傳感器資料收集、波音 787 製造以及嵌入式設備的韌體更新。
- 在哥倫比亞大學於 2011 年取消 Kermit 專案後,該程式碼重新授權為 BSD 授權,並由 Frank da Cruz 維護直至他在 2025 年退休。
現代化數十年老舊的 C 程式碼基礎
安全與可靠性改進
- 修復了眾多記憶體安全漏洞,並加入防禦惡意遠端利用的保護措施,鏡像後續針對
scp所套用的安全加固。 - 取消了模糊的預設字元集轉換,改用位元相同的二進位模式,消除了歷史資料損毀案例。
網路升級
- 加入了條件式 IPv6 支援,並在系統缺乏 IPv6 連線時提供運行時回退。
- 引入了新的
show interfaces指令(C‑Kermit 11)以列出本機 IP 位址,簡化區域網路傳輸。
測試基礎設施
- 實作了以 Python 驅動的端到端測試套件,涵蓋約 2 000 個案例,包括與 gKermit、eKermit 以及最後一次完整發行(C‑Kermit 9.0.302,2011)的相容性檢查。
- 發現並修復了平台特定的錯誤,例如 macOS
FIONREAD行為異常與 NetBSD PTY 驅動問題。
程式碼基礎清理
- 將歷史版本匯入 Git(最初由 Jeffrey Altman 完成),並移除死掉的
#ifdef區塊,減少總行數。 - 採用現代 CI 流程,在 Linux(x86_64、arm64)、macOS、FreeBSD、NetBSD、OpenBSD 上建置,並產出基於 musl 的靜態靜態二進位檔連結 Linux 二進位檔。
社區反應與討論見解
"I enjoy working in a legacy C codebase" – John Goerzen (author of the release) 作者指出,儘管程式碼歷史悠久,但其針對 VMS、OS/2 與 pre‑ANSI 編譯器的設計賦予了它意外的優雅。
"I’m a gray‑beard and still use Kermit regularly for embedded development" – voakbasda (HN comment) 凸顯了其在序列主控台自動化方面的持續相關性。
"C‑Kermit can be used as a powerful SSH wrapper" – donflamenco (HN comment) 確認了一個實用用例:在開啟的 SSH 工作階段內進行內嵌檔案傳輸,無需 Zmodem。
"Kermit source code remains the high‑water mark… for how many different, incompatible, non‑standard platforms one piece of software can support" – jonathaneunice (HN comment) 凸顯了該專案在歷史可移植性方面的成就。
"There’s not as much demand for gKermit now that C‑Kermit is BSD‑licensed and tiny" – John Goerzen (HN comment) 說明了為什麼輕量級的 gKermit 分支可能會看到較少的關注。
發布資產與如何參與
- 下載:二進位檔與原始碼 tarball 可在 Open Kermit 下載頁面取得 https://www.openkermit.org/downloads/。
- 貢獻:專案歡迎透過 GitHub 倉庫 https://github.com/OpenKermit/ckermit 提交補充、文件及測試增補。
- 鏡像:公開鏡像位於 https://kermit.mirrors.quux.org/,且封存的快照存放於 Internet Archive。
獻給 Frank da Cruz
C‑Kermit 11 獻給 Frank da Cruz,他自 1981 年 Kermit 設計起至 2025 年開源移交,直接參與 Kermit 長達 44 年。此獻詞指出,沒有其他開源專案曾見過如此長期的創始人參與。
為何此發布對歷史協議的未來很重要
- 保存:透過將程式碼移入現代版本控制系統並加入 CI,該項目保護了一項具有歷史重要性的協議,防止其逐漸腐朽。
- 互通性:更新的預設值與 IPv6 支援確保 Kermit 仍能作為舊硬體(例如 HP 48 計算機)與現代網路之間的橋樑。
- 安全:解決記憶體安全與遠端程式碼執行風險,使 Kermit 在關鍵環境(如韌體燒錄與傳感器資料採集)中使用變得安全。
- 社區活力:長期使用者與新來者的熱情回應顯示了一個健康的生態系統,能夠支撐未來的開發。
結論
C‑Kermit 11 透過修復安全漏洞、加入 IPv6、現代化測試套件以及清理程式碼基礎,復興了一項 45 年歷史的檔案傳輸協議,從而確保 Kermit 同時對懷舊愛好者與當代開發者保持實用工具的地位。