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 への需要が減少している理由を説明しています。


リリース・アセットと参加方法


Sources