Hatena::ブログ(Diary)

PB memo このページをアンテナに追加 RSSフィード

2017-02-28 ruby-trunk-changes r57731 - r57744

[][]ruby-trunk-changes r57731 - r57744

今日は sdbm の default gem 化や Windows での SD カードスロットのドライブ利用時の不具合修正などがありました。

nobu: r57731 2017-02-27 22:22:05 +0900

make distclean 時に生成したドキュメント類も削除するようにしています。

shyouhei: r57732 2017-02-27 22:41:38 +0900

NEWS ファイルに r57384 で Random.raw_seed を Random.urandom に改名した件を追記しています。 [Bug #9569]

nobu: r57733 2017-02-27 22:52:07 +0900

rest keyword 引数(**kw のようにして Hash で任意のキーワード引数を受け取るやつ)の AST の構築で参照する子ノードを変更というか統一? しています。 https://github.com/ruby/ruby/pull/1529

nobu: r57734 2017-02-27 22:52:08 +0900

r57733 の追加修正。 --dump=parsetree で AST をダンプする時に rest keyword 引数の内容のダンプのインデントを開始する位置を変えています。

stomar: r57735 2017-02-28 03:07:11 +0900

Hash#dig の rdoc 用コメントの typo 修正と整形をしています。 [ruby-core:79221] [Bug #13148]

svn: r57736 2017-02-28 03:07:12 +0900

version.h の日付更新。

stomar: r57737 2017-02-28 03:26:22 +0900

拡張ライブラリ date の Date#<< や Date#>> の rdoc 用コメントでサンプルコードを追加して edge case の挙動について明示しています。というか Date にこんなメソッドあったのか…。 [ruby-core:79584] [Bug #13225]

nobu: r57738 2017-02-28 09:00:33 +0900

Makefile.in で cd コマンドを直接呼んでるところがあったので $(CHDIR) を利用するようにしています。

nobu: r57739 2017-02-28 10:10:38 +0900

numeric.c の Integer.sqrt のためのマクロ DEFINE_INT_SQRT() で int と double の精度の関係によって警告が出るようになっていたのを修正しています。

nobu: r57740 2017-02-28 11:58:12 +0900

Windows の古い VC で long long から double への変換ができないそうで(えー)、ULL_TO_DOUBLE() という unsigned long long から double への変換マクロを定義して bignum.c や numeric.c でこれを利用するようにしています。

nobu: r57741 2017-02-28 13:33:15 +0900

win32/win32.c の rb_w32_sysinit() で SetErrorMode() の呼び出しを新しい MSVCRT でも呼び出すようにしています。なんでかなーと思ったらチケットがおもしろくて、SDカードスロットのある機種で SD カードのドライブにアクセスした時にダイアログが出てしまうという挙動を抑制するためみたいです。 [ruby-dev:49988] [Bug #13254]

hsbt: r57742 2017-02-28 16:45:54 +0900

拡張ライブラリ sdbm に .gemspec ファイルを追加して default gem 化しています。 [ruby-core:79814] [Feature #13261]

nobu: r57743 2017-02-28 17:22:00 +0900

make clean-ext で default gem 化した拡張ライブラリの gems ディレクトリの下のディレクトリも削除するようにしています。

stomar: r57744 2017-02-28 19:41:03 +0900

標準添付ライブラリ mathn.rb の Math.rsqrt に rdoc 用の :nodoc: タグのコメントを追加しています。

2017-02-27 ruby-trunk-changes r57719 - r57730

[][]ruby-trunk-changes r57719 - r57730

今日は etc の default gem 化や拡張ライブラリまわりにビルドプロセスの整理の他、stomar さんの初コミットがありました。

stomar: r57719 2017-02-26 21:51:41 +0900

Integer.sqrt の rdoc 用コメントを追加しています。 stomar さんはドキュメントとかサイト(www.ruby-lang.org) で英訳とかよくしてくださってた方ですがコミッターになられたみたいですね。 [ruby-core:79762] [Bug #13251]

nobu: r57720 2017-02-27 09:53:26 +0900

NEWS ファイルに Integer.sqrt について追記しています。 [ruby-core:79623] [Feature #13219]

svn: r57721 2017-02-27 09:53:27 +0900

version.h の日付更新。

nobu: r57722 2017-02-27 14:14:30 +0900

Makefile.in の $LIBRUBY_A のターゲットで $PURIFY コマンド? によるライブラリの検証をしていたのを verify-static-library という独立したターゲットに分離しています。また標準添付ライブラリ mkmf.rb で .dSYM ディレクトリの削除を try_do から try_link0 に移動して try_link の時だけ削除するようにしています。

nobu: r57723 2017-02-27 14:55:32 +0900

r57722 の続き? 標準添付ライブラリ mkmf.rb の try_link0 で try_link で削除するようにしていた生成物を実行形式ファイル以外は全て削除するようにしています。実行形式ファイルは try_link で消すようにしています。try_link0 を try_constant でも使いまわしているのでそのためかなという気がします。

nobu: r57724 2017-02-27 14:58:31 +0900

拡張ライブラリ socket の extconf.rb のメッセージの typo を修正。

nobu: r57725 2017-02-27 15:31:25 +0900

make clean-ext で ext のサブディレクトリ内の exts.mk を削除するようにしています。

nobu: r57726 2017-02-27 15:39:28 +0900

make clean 時に macOS で生成される .dSYM ディレクトリや .timestamp ディレクトリを削除するようにルールを追加しています。

nobu: r57727 2017-02-27 16:37:55 +0900

標準添付ライブラリ mkmf.rb で clean のターゲットになる CLEANLIBS にビルドしない場合は TARGET_SO を追加しないようにしています。

nobu: r57728 2017-02-27 16:54:24 +0900

common.mk に clean-rubyspec というターゲットを追加して rubyspec の C-API のテストで生成されるオブジェクトファイル群を削除するようにしています。

nobu: r57729 2017-02-27 17:23:18 +0900

Makefile.in の clean-ext で ext/ 配下は exts.mk を submake を使って並列に実行できるようにしているみたいです。

hsbt: r57730 2017-02-27 18:20:39 +0900

拡張ライブラリ etc に .gemspec ファイルを追加して default gem 化しています。 [ruby-core:79795] [Feature #13256]

2017-02-26 ruby-trunk-changes r57715 - r57718

[][]ruby-trunk-changes r57715 - r57718

今日は不正なヒアドキュメントの記法を parse すると SEGV することがある不具合の修正や拡張ライブラリ win32ole の Windows nano server 対応などがありました。

suke: r57715 2017-02-26 07:28:22 +0900

拡張ライブラリ win32ole が Windows nano server (という環境があるみたいですね)でうまく動かないようなので、検出して初期化の方法を変えるようにしています。

svn: r57716 2017-02-26 07:28:23 +0900

version.h の日付更新。

nobu: r57717 2017-02-26 09:33:06 +0900

ヒアドキュメントの指定のトークンの不正な状態で終わってるスクリプトを parse すると SEGV する不具合を修正しています。発生条件はけっこう込み入っていて、インデント除去つきのヒアドキュメントのトークンにクオートされた文字列を使って、さらにその中に式展開が含まれているもので、トークンでちゃんと終端していない場合、です。実際これを踏むことはそうはなさそう。 [ruby-core:79772] [Bug #13253]

nobu: r57718 2017-02-26 18:33:17 +0900

node.c の dump_node(--dump=parsetree などのオプションで AST を表示する時に使う関数)で ||= や &&= などの演算子つき代入のメソッドの表示の typo 修正。 https://github.com/ruby/ruby/pull/1528

2017-02-25 ruby-trunk-changes r57708 - r57714

[][]ruby-trunk-changes r57708 - r57714

今日は Integer.sqrt の最適化などがありました。

nobu: r57708 2017-02-25 08:31:07 +0900

rb_big_isqrt() からおおまかな数値を推定する前処理の部分を estimate_initial_sqrt() という関数に切り出しています。 [ruby-core:79623] [Feature #13219]

svn: r57709 2017-02-25 08:31:08 +0900

version.h の日付更新。

normal: r57710 2017-02-25 11:31:03 +0900

NEWS ファイルに r57698 で String#-@ の実装が fstring を返すようになったことを追記しています。 [ruby-core:79747] [Feature #13077]

nobu: r57711 2017-02-25 11:59:47 +0900

.gdbinit の rp コマンドで Bignum を表示する時の処理を rp_bignum というコマンドに切り出して output/x でメモリのダンプとして数値部分を出力していたのを、上位バイト側から16進数で出力するように変更しています。

nobu: r57712 2017-02-25 13:13:42 +0900

bignum.c の bary_zero_p() で引数 xds に const 修飾子を追加しています。

nobu: r57713 2017-02-25 14:44:39 +0900

Integer.sqrt の最初のおおまかな数値を推定する処理(r57708 で estimate_initial_sqrt() として切り出された部分)の精度を改良しているそうです。 [ruby-core:79754] [Feature #13250]

nobu: r57714 2017-02-25 16:27:07 +0900

bignum.c で <=> や <=, ** などの演算子の ID を毎回 rb_intern() しているところがあったので、#include "id.h" して組み込みの ID を参照するようにしています。

2017-02-24 ruby-trunk-changes r57698 - r57707

[][]ruby-trunk-changes r57698 - r57707

今日は単項演算子の String#-@ が fstring を使うようにする変更や Integer.sqrt という整数平方根を求めるメソッドの追加などがありました。

normal: r57698 2017-02-24 10:01:23 +0900

String#-@ つまり単項演算子の - を文字列につけた時に dup+freeze するかわりに rb_fstring() を呼び出すようにしています。これにより頻繁に利用する文字列オブジェクトの slot を消費を抑えることができるように…とはいえリテラルなら "str".freeze で fstring 化できたと思うので、リテラル以外だと思うので、そんなにあるのかなぁ。という声を予想してかコミットログに詳しく use case が挙げられています。 [ruby-core:79663] [Feature #13077]

svn: r57699 2017-02-24 10:01:24 +0900

version.h の日付更新。

hsbt: r57700 2017-02-24 15:32:48 +0900

拡張ライブラリ psych を 2.2.3 に更新しています。 本体は変数名の spell の修正だけで、あとは gemspec ファイルで version を定数から取得するのをやめる変更などです。

hsbt: r57701 2017-02-24 15:48:55 +0900

拡張ライブラリ gdbm の gemspec ファイルを追加して default gem 化しています。 [ruby-core:79742] [Feature #13248]

hsbt: r57702 2017-02-24 15:50:43 +0900

fcntl の gemspec ファイルで gem 名が Fcntl になっていたので fcntl に修正しています。

hsbt: r57703 2017-02-24 16:39:37 +0900

標準添付ライブラリ rdoc を 5.1.0 に更新しています。 ChangeLog はこちら https://github.com/rdoc/rdoc/blob/master/History.rdoc#510--2017-02-24 parse 時に認識するタグ名の typo 修正や Windows でのエンコード関係の不具合修正などがあったみたいです。

hsbt: r57704 2017-02-24 16:55:50 +0900

doc/maintainers.rdoc と doc/standard_library.rdoc の r57701 で default gem 化した gdbm についての記述を移動しています。 [ruby-core:79742] [Feature #13248]

nobu: r57705 2017-02-24 17:36:16 +0900

Integer.sqrt という整数平方根を求めるメソッドを追加しています。 うーんなぜそんなものが必要なのか、と思いましたが、とても桁数の大きい整数平方根を求めようとすると浮動小数点数を経由すると精度が足りなくて変換する時点で情報が落ちてしまうので正確な値(結果が整数である場合でも)にならないという問題があり、それを回避するために専用の実装が必要だったということみたいです。なるほどー。 いつもの "Learn floating point." にならなかったということはなにか有力なユースケースが示されたのだと思いますが、チケットがとても長くてそれについてはよく読んでいません。 [ruby-core:79623] [Feature #13219]

nobu: r57706 2017-02-24 18:39:17 +0900

r57705 の続き。 Integer.sqrt に引数整数であることのチェックを追加しています。 [ruby-core:79623] [Feature #13219]

rhe: r57707 2017-02-24 20:33:06 +0900

r57384 で SecureRandom.raw_seed を SecureRandom.urandom に改名してましたが、Random.gen_random_openssl で raw_seed のほうをまだ呼んでいるところが残っていたので Random.urandom のほうを呼ぶように修正しています。 [ruby-core:61094] [Bug #9569]