ruby-trunk-changes r53302 - r53319

今日は恒例の matz による RUBY_VERSION の更新があり、trunk は 2.4.0 になりました。これで最新の Ruby は 2.4.0 となります。
また今日は svn さんとの攻防も見所でした。

matz: r53302 2015-12-25 21:40:38 +0900

matz による RUBY_VERSION を 2.4.0 に更新するコミットです。RUBY_API_VERSION_MINOR も 4 に更新されています。リリース後の恒例行事ですね。

nobu: r53303 2015-12-25 22:43:29 +0900

version.h の RUBY_RELEASE_DATE を RUBY_RELEASE_YEAR, RUBY_RELEASE_MONTH, RUBY_RELEASE_DAY などのマクロ定数を元にして生成させるようにしています。
これが svn さんとの攻防の始まりになろうとは…。

svn: r53304 2015-12-25 22:43:39 +0900

svn さんによる version.h の日付更新、なのですが判定が暴走していて RUBY_RELEASE_MONTH_STR や RUBY_RELEASE_DAY_STR が 1桁の時に先頭に 0 をつけるための定義部分の "0" を現在の月/日に更新してしまっています。 svn さんの逆襲がはじまる…。

nobu: r53305 2015-12-25 22:48:38 +0900

r53304 の svn さんの暴走の対策として文字列リテラルの "0" ではなく STRINGIZE(0) を使うようにしています。しかし…。

svn: r53306 2015-12-25 22:48:56 +0900

対策もむなしく(というか考えてみたら当然のような気もしますが) STRINGIZE(0) の 0 の部分が置換されてしまいました。

nobu: r53307 2015-12-25 22:53:06 +0900

r53306 のさらに対策で、RUBY_RELEASE_MONTH_STR と RUBY_RELEASE_DAY_STR の先頭に 0 を追加するための定義で #define と 0 を含む展開後の定義部分に改行を入れて同じ行にならないようにしています。おそらく svn さんは RUBY_RELEASE_{YEAR,MONTH,DAY} という文字列と数字が並んでいる行をみつけるとその数字部分を置換するという挙動をしているのだと思われます。
これで人類が bot に勝った、かと思われたものの…。

svn: r53308 2015-12-25 22:53:27 +0900

また置換されてしまいました。svn bot さんは行継続を認識しているようですね。賢い…。

nobu: r53309 2015-12-25 22:57:38 +0900

r53308 のさらに対策で、"0" のところを別の行で ZERO_STR というマクロを定義してこれを使うようにしています。こうして nobu vs svn の戦いには終止符が打たれたのでした。

nobu: r53310 2015-12-25 23:46:27 +0900

r53303 の RUBY_RELEASE_DATE の定義方法の変更に追随して win32/setup.mak で verconf.mk を生成する時に STRINGIZE() の定義を追加したりしています。

nobu: r53311 2015-12-25 23:50:26 +0900

r53303 と r53310 のさらに追加で win32/setup.mak で $ 記号のエスケープ追加と、verconf.mk 生成時のシェルによるリダイレクトを追記ではなく上書きするようにしています。

nobu: r53312 2015-12-26 00:02:14 +0900

r53310, r53311 のさらに追加変更で win32/setup.mak で verconf.mk の生成時に RUBY_RELEASE_DATE を直接定義するのではなく RUBY_RELEASE_{YEAR,MONTH,DAY} を定義するようにしています。

svn: r53313 2015-12-26 00:02:19 +0900

version.h の日付更新。

nobu: r53314 2015-12-26 01:24:43 +0900

RUBY_PROGRAM_VERSION というのを RUBY_API_VERSION の定義から自動的に生成させるようにしています。 RUBY_API_VERSION は拡張ライブラリの互換性の判定のために使われますが(インストール先ディレクトリ名に含まれる)、RUBY_PROGRAM_VERSION って何を意味するものでしたっけ?

nobu: r53315 2015-12-26 11:26:40 +0900

miniinit.c の Init_enc() で Encoding の alias 定義に BINARY と ASCII (それぞれ ASCII-8BIT と US-ASCII の別名)を追加しています。 miniruby でも使えるようにしています。 [ruby-core:72481] [Bug #11872]

naruse: r53316 2015-12-26 18:25:58 +0900

tool/post-commit.sh を追加しています。 svn repository のサーバからコピーしてきたそうです。

svn: r53317 2015-12-26 18:26:08 +0900

r53316 で追加した tool/post-commit.sh の svn property 設定。

kou: r53318 2015-12-26 18:33:43 +0900

標準添付ライブラリ xmlrpc で XMLRPC::Client#do_rpc の async 引数が真の時に Net::HTTP を作成する時に Net::HTTP::SSL_ATTRIBUTES にある SSL 関係のオプションも全て複製するようにしています。 [Bug #11489]

naruse: r53319 2015-12-26 19:01:35 +0900

tool/post-commit.sh を追加した r53316 を revert して削除されています。このスクリプトは別途サーバでバージョン管理されていたようです。