C‑Kermit 11 リリース – 11年ぶりの新バージョンが4s5年目のプロトコルを復活させる
C‑Kermit 11 が提供するもの、そしてその重要性
C‑Kermit 11 は、フラッグシップである Kermit 実装の15年ぶりの新バージョンであり、45年目のシリアル・ファイル転送プロトコルを現代のセキュリティ、ネットワーク、およびテスト基準に合わせてアップグレードします。このリリースにより、Kermit は、レガシー・システムでの動作能力を維持しつつ、SSH へのラップ、組み込みファームウェアのアップデート、およびクロスプラットフォームの LAN 転送といった現代的なユースケースでの利用が可能になります。
歴史的背景:1981年のシリアル・ブリッジから今日のネットワーク化された世界へ
- In 1981 Frank da Cruz と Bill Catchings は、異種メインフレーム(DEC‑20, IBM)間のノイズの多いシリアル・リンクを介して、信頼性の高いファイル転送を可能にするために Kermit プロトコルを作成しました。
- 1982年までに Kermit は MS‑DOS と Unix に移植され、C 実装(C‑Kermit)がデファクト・スタンダードの参照実装となり、TCP サポート、対話型 CLI、および Lisp のようなスクリプト言語が追加されました。
- Kermit は、国際宇宙ステーション、ハリケーン・センサーのデータ収集、Boeing 787 の製造、および組み込みデバイスのファームウェア・アップデートを含む、重要なミッションで使用されてきました。
- 2011年にコロンビア大学が Kermit プロジェクトを中止した後、コードは BSD ライセンスの下で再ライセンスされ、Frank da Cruz によって 2025 年の引退まで維持されました。
数十年におよぶ C コードベースの近代化
セキュリティと信頼性の向上
- メモリ・セーフティに関する数多くのバグを修正し、後に
scpに適用されたセキュリティ強化と同様に、悪意のあるリモート・エクスプロイトに対する保護を追加しました。 - 曖昧なデフォルトの文字セット変換を、バイト単位で同一なバイナリ・モードに置き換え、歴史的なデータ・corruption(破損)の事例を排除しました。
ネットワークのアップグレード
- 条件付き IPv6 サポートを追加し、IPv6 接続性がないシステムのためのランタイム・フォールバックを提供します。
- ローカル IP アドレスを一覧表示する新しい
show interfacesコマンド(C‑Kermit 11)を導入し、LAN ベースの転送を簡素化しました。
テスト・インフラストラクチャ
- gKermit、eKermit、および最後のフル・リリース(C‑Kermit 9.0.302, 2011)との互換性チェックを含む、約 2,000 ケースをカバーする Python 駆動型のエンド・ツー・エンド・テスト・スイートを実装しました。
- macOS の
FIONREADの誤動作や NetBSD の PTY ドライバーの問題など、プラットフォーム固有のバグを修正しました。
コードベースのクリーンアップ
- 歴史的なリリースを Git にインポートし(元々は Jeffrey Altman が行いました)、不要な
#ifdefブロックを削除して、総行数を削減しました。 - Linux (x86_64, arm64), macOS, FreeBSD, NetBSD, OpenBSD, および、静的にリンクされた musl ベースの Linux バイナリをビルドする現代的な CI パイプラインを導入しました。
コミュニティの反応と議論からの洞察
"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 for embedded development" – voakbasda (HN comment) シリアル・コンソール自動化における継続的な関連性を強調しています。
"C‑Kermit can be used as a powerful SSH wrapper" – donflamenco (HN comment) 実用的なユースケース:Zmodem を必要とせず、開いた SSH セッション経由でのインライン・ファイル転送が可能であることを確認しています。
"C‑Kermit 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) C‑Kermit が BSD ライセンスであり、非常に軽量であるため、gKermit への需要が減少している理由を説明しています。
リリース・アセットと参加方法
- Download: Binaries と source tarballs は、Open Kermit ダウンロード・ページ https://www.openkermit.org/downloads/ で入手可能です。
- Contribute: プロジェクトは、GitHub リポジトリ https://github.com/OpenKermit/ckermit を通じて、パッチ、ドキュメント、およびテストの追加を歓迎しています。
- Mirroring: 公開ミラー・サイトは https://kermit.mirrors.quux.org/ に存在し、アーカイブ・スナップショットは Internet Archive に保存されています。
- Download: Binaries と source tarballs は、Open Kermit ダウンロード・ページ <https://www.openkermit.org/downloads/ > にて入手可能です。
- Contribute: リポジトリ https://github.com/OpenKermit/ckermit を通じて、パッチ、訳訳、ドキュメント, およびテストの追加を歓迎しています。