ruby-trunk-changes r55852 - r55865

今日は Comparable#clamp メソッドの追加の他、cygwin のビルド修正、parse.y のリファクタリングなどがありました。

nobu: r55852 2016-08-10 20:11:36 +0900

r55849 の追加修正? cygwin で拡張ライブラリ win32/resolv のビルドに失敗していたのを修正しています。 iphlpapi.h を include する前に windows.h を include して NTDDI_VERSION というマクロを定義しておきます。また Win32::Error クラスの定義を削って Win32::Resolv::Error を利用するようにしています。 [ruby-core:76791] [Bug #12663]

nobu: r55853 2016-08-10 22:37:03 +0900

parse.y に代入文とその仲間達と後置 rescue の対応のためにルールを分割して command_rhs と arg_rhs というルールを追加しています。

marcandre: r55856 2016-08-11 03:17:41 +0900

標準添付ライブラリ prime で Prime.prime? の高速化のためループの展開の周期を 6 から 30 に増やしています。 [ruby-core:76802] [Feature #12665]

svn: r55857 2016-08-11 03:17:42 +0900

version.h の日付更新。

nobu: r55858 2016-08-11 10:24:24 +0900

parse.y で "::" という定数の区切り文字のトークンを生成する NEW_COLON{2,3} にさらに const_path_field()、top_const_field() という ripper 側の実装と共通の名前のマクロを定義して parser 側と ripper 側での preprocessor での分岐を減らすようにリファクタリングしています。

nobu: r55859 2016-08-11 11:12:57 +0900

parse.y に定数の代入についての処理を parser 側と ripper 側でどちらも const_decl() というマクロ/関数にまとめて、preprocessor 分岐を減らしています。

nobu: r55860 2016-08-11 11:20:34 +0900

正規表現のマッチ内容に関する $1, $2... などの変数への代入を構文エラーにする処理でも backref_assign_error() という共通の名前のマクロを用意して parser と ripper で preprocessor 分岐を不要にしています。

nobu: r55861 2016-08-11 11:32:19 +0900

同じく parse.y で代入文のルールで node_assign() というマクロが既に共通化されてたので parser と ripper の分岐をやめています。

nobu: r55862 2016-08-11 16:20:36 +0900

compar.c に '<=>' メソッドを rb_funcallv() で呼ぶだけの rb_cmp() 関数を定義して独自に ID を static 変数に持っておいたのをやめています。

nobu: r55863 2016-08-11 16:24:25 +0900

Comparable#clamp という新規メソッドが追加されています。 引数に min, max を受け取ってその範囲より外の値はそれぞれ min, max のどちらかに丸めるというものですね。比較さえできればいいので数値オブジェクトに限らず <=> メソッドがあれば(Comparable を include しておけば)使えるようです。 [ruby-core:66814] [Feature #10594]

kazu: r55864 2016-08-12 00:00:09 +0900

r55847 の ChangeLog エントリの typo 修正。

svn: r55865 2016-08-12 00:00:11 +0900

version.h の日付更新。