ruby-trunk-changes 2021-01-02

今日は拡張ライブラリ bigdecimal の整数からの変換の最適化や Enumerable#compact や Enumerator::Lazy#compact のメソッド追加、Float のいくつかのメソッドの ruby 実装化などがありました。

[7156248137] Nobuyoshi Nakada 2021-01-01 14:32:07 UTC

組み込みメソッドの ruby 実装の builtin 関数呼び出しの命令をすりかえる compile_builtin_function_call() で __builtin.arg! の実装部分を compile_builtin_arg() に分離するリファクタリング

[5ee6830abe] Kenta Murata 2021-01-01 15:27:46 UTC

拡張ライブラリ bigdecimal のテストの BigDecimal.limit のテストメソッドの全体を BigDecimal.save_limit のブロックで括るように修正しています。このメソッド知らなかったな。

[4730efdd80] git 2021-01-01 15:46:41 UTC

version.h の日付更新

[448a67cd81] Kenta Murata 2020-12-31 19:13:12 UTC

拡張ライブラリ bigdecimal の Integer からの変換で 64 bits 整数からの変換で __builtin_clz や __builtin_clzl といったコンパイラの組み込み関数を利用した最適化などがありました。

[c2c0147538] Kenta Murata 2021-01-01 07:00:23 UTC

拡張ライブラリ bigdecimal のテストで RbConfig::LIMITS を利用するものは 2.4 以前では定数が存在しないので fiddle を使ってその環境での整数範囲を計算して代替する定数を定義するようにしています。

[830afd94fe] Kenta Murata 2021-01-01 16:03:32 UTC

拡張ライブラリ bigdecimal の ext/bigdecimal/depend の依存関係を更新しています。

[5aa28d9d6d] Nobuyoshi Nakada 2021-01-02 00:48:42 UTC

拡張ライブラリ bigdecimal の extconf.rb の x86intrin.h というヘッダの存在チェックを _lzcnt_u64() 関数の宣言が存在するかどうかまでチェックするようにしています。

[ef6ab776d5] Kenta Murata 2021-01-02 01:18:58 UTC

拡張ライブラリ bigdecimal の整数からの変換で使う x86intrin.h ヘッダを利用するかどうかの判定に defined(__x86_64__) の条件も追加しています。

[daec5f9edc] "S.H" 2021-01-02 02:39:07 UTC

Float#-@、Float#abs、Float#zero?、Float#to_f などの Float のメソッドをいくつか ruby 実装に移植しています。キーワード引数はないけど inline 化できるので高速化されるようです。 https://github.com/ruby/ruby/pull/4018 [ruby-core:101846] [Feature #17498]

[4182035e27] Takashi Kokubun 2021-01-02 02:41:20 UTC

make benchmark でベンチマーク実行時のオプションに -v を追加するようにしています。

[a6bbba1135] Kenta Murata 2021-01-02 03:06:14 UTC

448a67cd812d0be0a7f1cc871daa598c3b846143bigdecimal での整数の変換の高速化で __builtin_ctzll は SolarisSPARC アーキテクチャでは利用しないようにしています。

[4b6fd8329b] Nobuyoshi Nakada 2021-01-02 02:16:45 UTC

標準添付ライブラリ mkmf.rb の try_header メソッドを try_compile の alias に変更しています。宣言はあるけど実際には使えないみたいなことがあるのでその対策みたいです。

[f690eb34e2] Nobuyoshi Nakada 2021-01-02 03:11:52 UTC

GC で管理できる一時バッファ生成用の関数 rb_alloc_tmp_buffer2() で rb_alloc_tmp_buffer_with_count() に渡す count は VALUE 型の個数での計算なのに引数の count をそのまま渡していた不具合を修正しています。おそらく大部分の場合では余計に大きな領域を確保していたのでしょう(足りなかったケースが存在した可能性もある)。

[b8d33df1d9] zverok 2020-12-05 11:39:20 UTC

Enumerable#compact と Enumerator::Lazy#compact メソッドを追加しています。これまでは Array#compact しかなかったのか。 [ruby-core:100753] [Feature #17312]

[68ea7720b3] Nobuyoshi Nakada 2021-01-02 07:42:45 UTC

b8d33df1d9799cd04b92c1c28e42cc3028cc7524 で追加した Enumerable#compact と Enumerator::Lazy#compact について NEWS に追記しています。 [ruby-core:100753] [Feature #17312]