文章摘要
为庆祝Kermit诞生45周年,发布了15年来首个C-Kermit新版本。文章探讨了维护数十年历史的C语言代码库的挑战与经验。
文章总结
好的,这是根据您的要求,对原文主要内容进行的中文重述,已保留关键细节并删减了与主题无关的内容(如评论区、侧边栏等)。
标题:庆祝Kermit诞生45周年:15年来首个C-Kermit新版本发布(以及处理一个几十年前的C代码库)
1981年,不同厂商的计算机之间难以通信。为此,哥伦比亚大学的Frank da Cruz和Bill Catchings设计了一种名为Kermit的串行协议。该协议从一开始就具备高度适应性,能处理各种系统限制,例如一次只能处理96字节数据、通过7位链路传输8位文件、在不同字符集间转换,以及处理易出错的串行链路。
Kermit迅速普及,到1982年已被移植到MS-DOS和Unix。C-Kermit(用C语言实现的Kermit)后来成为其旗舰版本,增加了TCP支持、交互式命令行界面、强大的脚本语言,并为现代高速链路进行了优化。Kermit曾用于国际空间站、飓风期间的数据收集、邮政系统、波音787制造等多个领域。
如今,作者(John Goerzen)仍将其用作强大的SSH封装工具、BBS客户端,以及与其HP 48GX计算器交换数据等。它也被用于向嵌入式设备传输固件更新。
2011年,哥伦比亚大学终止了Kermit项目,并以BSD许可证将其作为开源软件发布。Frank da Cruz继续在哥伦比亚大学外维护Kermit,直至2025年退休。
作为Debian的Kermit维护者,作者注意到该项目在安全性和默认字符集/换行符转换方面已不符合现代期望。因此,他开始进行修补。尽管作者通常不喜欢处理老旧C代码库,但他发现C-Kermit的代码库设计优雅,并乐在其中。
在开发过程中,作者修复了大量潜在的安全问题,增加了IPv6支持(通过条件编译确保兼容性),并添加了包含近2000个测试用例的单元测试和端到端测试。他还发现并修复了可追溯至几十年前的错误,并增加了与旧版本的兼容性测试。
由于改动量巨大,作者在Open Kermit上启动了一个项目,以协调未来的公开开发。通过现代CI,他在Linux、macOS、FreeBSD、NetBSD和OpenBSD等多个平台上运行测试套件并构建二进制版本。
最后,作者将C-Kermit 11的发布献给了Frank da Cruz,以表彰他44年来对Kermit项目的直接参与和巨大贡献。
评论总结
根据评论内容,总结如下:
主要观点与论据:
Kermit的实用性与怀旧价值(评分:无)
- 多位用户回忆Kermit在早期网络环境中的关键作用,如通过拨号连接Sun服务器、嵌入式开发、同步远程数据等。
- 关键引用:
- "ckermit handled that itself, fun times."(jmclnx)
- "I am a gray beard and still use Kermit regularly for embedded development."(voakbasda)
Kermit的跨平台兼容性(评分:无)
- 用户称赞Kermit在多种不兼容系统上的支持能力,如AIX、VMS、非Unix平台,代码中大量
#ifdef体现了其高度可移植性。 - 关键引用:
- "Kermit source code remains the high-water mark... for how many different, incompatible, non-standard platforms one piece of software can support."(jonathaneunice)
- "Kermit was an extraordinary monument to portability."(jonathaneunice)
- 用户称赞Kermit在多种不兼容系统上的支持能力,如AIX、VMS、非Unix平台,代码中大量
Kermit在BBS时代的边缘地位(评分:无)
- 部分用户指出Kermit在BBS中未被广泛采用,尽管有早期协议如Punter、YMODEM等,但Kermit直到SuperKermit才与ZMODEM竞争。
- 关键引用:
- "Why wasn’t Kermit used by BBSes?... My first actual contact with it was uploading firmware."(kstrauser)
- "I remember mostly ignoring Kermit back in my BBSing days."(chipotle_coyote)
Kermit在困难连接中的可靠性(评分:无)
- 用户分享在复杂网络环境下(如通过IBM主机、VAX、Unix系统)Kermit成功传输文件的经历,凸显其鲁棒性。
- 关键引用:
- "Then I remembered Kermit, and its reputation for being able to handle difficult connections. It got the file through on its first try."(chipotle_coyote)
历史与许可轶事(评分:无)
- 提及Kermit名称经Henson Associates许可使用,以及相关历史资料链接。
- 关键引用:
- "the name Kermit is used by permission of Henson Associates, Inc."(SirFatty)
平衡性总结: - 正面观点:Kermit在嵌入式开发、跨平台兼容性、困难连接中表现卓越,被老用户视为经典工具。 - 负面/中性观点:在BBS时代未被广泛采用,部分用户认为其性能落后于ZMODEM等协议,但认可其在特定场景下的不可替代性。