4

「 Ruby 1.9.2 で何が起こったのですか? 」という最近の質問で、MRI Ruby のバージョン番号について疑問に思いました。

MRI Ruby が使用するスキームは、semver.orgのものとは異なります。

MRI Ruby でバージョン管理はどのように機能し、メジャー (1)、マイナー (9)、ティーン (3)、およびパッチレベル (448) の値は何を意味しruby 1.9.3p448ますか? たとえば、パッチレベルの増加ではどのような変更が許可され、teeny の増加ではどのような変更が許可されますか?

4

2 に答える 2

5

(ここでの用語は、2.0.0 が構成されている従来のsemver.orgとは異なります。またはでMAJOR.MINOR.PATCH示されている Ruby スキームは、 のようにV2.0.0pxxx よりも多くなっています)version.htest_gem.rbMAJOR.MINOR.TEENY.PATCHLEVEL

以前は、マイナー バージョン番号が奇数の Ruby のバージョン番号は、実験的バージョンを意味していました。つまり、Ruby 1.7 は実験的なもので、Ruby 1.8 は製品版でした。
Ruby コア チームはこれを変更し、Ruby 1.9.0 の登場により、Ruby 1.9 はもはや実験的とは見なされなくなりましたが、実装が本番環境で使用できるようになるまでにはしばらく時間がかかる可能性があります。

現在、マイナー バージョンにはセマンティックの違いが含まれています。

一方、Ruby 1.9 は Ruby 1.8 と完全に下位互換性があるわけではありません。セマンティクスの一部が変更されました。たとえば、ブロック引数はブロックに対してローカルになり、ブロックのセマンティクスに微妙な変更が加えられています。この変更は、多くの既存の Ruby プログラムが Ruby 1.9 を利用するには、ある程度の変換が必要になることを意味します。

  • teeny ( 1.9.2など) は新機能を追加します

  • patchlevel は、ビルド番号に関するものであり、内部修正、セキュリティ修正を追加し、Ruby バージョンを「製品レベル」に昇格します ( 1.9.2-p290の場合と同様) 。

于 2013-07-18T05:56:57.657 に答える
1

Ruby 2.1.0 から準セマンティック バージョニングに変更されました。詳細についてはhttps://www.ruby-lang.org/en/news/2013/12/21/semantic-versioning-after-2-1-0/を参照してください。ただし、バージョン番号には次の意味があります。

MAJOR: increased when incompatible change which can’t be released in MINOR
    Reserved for special events
MINOR: increased every christmas, may be API incompatible
TEENY: security or bug fix which maintains API compatibility
    May be increased more than 10 (such as 2.1.11), and will be released every 2-3 months.
PATCH: number of commits since last MINOR release (will be reset at 0 when releasing MINOR)
于 2014-03-01T13:49:06.283 に答える