Linuxカーネルが「パブリックAPI」に互換性のない変更を導入しましたか?

Linuxカーネルが「パブリックAPI」に互換性のない変更を導入しましたか?

私は、互換性のない「パブリックAPI」の変更が発生したときにメジャーバージョン番号を変更する必要があるという意味のあるバージョン管理を理解したいと思います。私の思考実験は、Linuxカーネル番号が何であるかを理解しようとすることでした。私が知る限り、メジャーバージョンのアップグレードはランダムだからです。

私はLinuxの内部に慣れていないので、ご了承ください。私が理解したのは、この「パブリックAPI」は次sys_writeのCシステムコールのセットになることです。sys_mmapバイナリ互換性を決定するために使用されるABI。 ~からシステムコール_64.tblこれには約400のシステムコールが含まれ、その一部は廃止されました。それともここにリストされているすべてがAPIですか?カーネルAPI

システムコール定義を想定すると、Linuxがシステムコールインターフェイスに以前のバージョンと互換性のない変更を導入したことがありますか?それでは、メジャーバージョン番号は何百または数千になるのでしょうか?

ベストアンサー1

明確にするために、カーネルはセマンティックバージョン管理に従わないことに言及する価値があります。主な障害物は任意です。

システムコールに関して互換性のない変更、つまり削除が発生しました。マニュアルsyscallsページ削除された未使用の呼び出しを一覧表示します。これだけでもnon-1を要求するのに十分です。Xセマンティックバージョン管理ルールが適用される場合のバージョン番号。

カーネルAPIではなく、カーネルに残る必要があるのは、変更された場合にプログラムを破壊する可能性があるすべてです。これには、システムコールの定義だけでなく、データ構造、/procファイル名と内容、ioctl呼び出し、さらにはシステムの動作も含まれます。カーネルAPIは意図せずに変更されることがよくあり、これらの変更は通常戻ります(したがって、欠落している主な変更として処理され、次にセマンティクスバージョン管理で変更されます)。

おすすめ記事