glibcに同じ機能の2つのバージョンがあるのはなぜですか? [閉鎖]

glibcに同じ機能の2つのバージョンがあるのはなぜですか? [閉鎖]

私はglibcのバージョン管理メカニズムをよく理解していません。

開発者は、ある時点で関数の新しいバージョンが必要であり、その関数がglibcで「逆互換」されなくなり、GLIBC_2.X新しいバージョンを導入する必要があると判断しますか?

関数プロトタイプの変更やAPIの変更の場合は理解していますが、何らかの理由がありますか?

つまり、fnmatch:

readelfglibc 2.19の出力を見ていますが、fnmatchの2つのバージョンが表示されます。

151: 000bff40   892 FUNC    GLOBAL DEFAULT   12 fnmatch@GLIBC_2.0
152: 000bff40   892 FUNC    GLOBAL DEFAULT   12 fnmatch@@GLIBC_2.2.3

しかし、glibcコードを見ると、まったく同じ機能であることがわかります。

versioned_symbol (libc, __fnmatch, fnmatch, GLIBC_2_2_3);
#  if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_3)
strong_alias (__fnmatch, __fnmatch_old)
compat_symbol (libc, __fnmatch_old, fnmatch, GLIBC_2_0);
#  endif

それでは、fnmatchにはなぜ2つのバージョンがありますか?開発者が機能の「新しいバージョン」をリリースする他の理由は何ですか?

関連情報