今日は 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]
svn: r55865 2016-08-12 00:00:11 +0900
version.h の日付更新。