ruby-trunk-changes 2019-08-27

今日は関数ポインタとして引数の数や型を明確にしない定義をしていたところをちゃんと定義するようにした修正や GC.compact 関連の不具合修正などがありました。

[ccc5b22a7f] Kazuhiro NISHIYAMA 2019-08-26 12:09:02 UTC

GitHub Actions の Ubuntu でのテスト時の -j オプションの値を nproc で検出したコア数を使うようにしています。 https://github.com/ruby/ruby/pull/2402

[caeafbe825] Jeremy Evans 2019-08-25 00:16:11 UTC

irbIRB::WorkSpace で irb_binding を再定義する時の private の位置がメソッドの中になっちゃってたので外に移動しています。

[7d9c3a5712] Jeremy Evans 2019-08-25 06:18:23 UTC

irbirb obj のように receiver となるオブジェクトを指定してサブ irb みたいなのをネストできますが、このオブジェクトが freeze されていたり BasicObject だったりして特異クラスの作成ができない場合にエラーになるので、delegator を使って回避するようにしています。あれやると特異メソッドが生えることになるのかー。 [ruby-core:79843] [Bug #13264]

[d5b237325b] git 2019-08-26 15:11:32 UTC

version.h の日付更新

[9c0cd6a09e] manga_osyo 2019-07-14 12:05:02 UTC

lib/reline2.rb に Reline2 っていうモジュールを追加しています。なんだとー!? というのはもちろんここから reline.rb の書き換えの布石で最終的には lib/reline.rb にマージされてます。

[f60e5a1f99] manga_osyo 2019-07-14 16:32:17 UTC

標準添付ライブラリ reline の Reline.test_mode メソッドの定義は lib/reline.rb ではなくテストのヘルパー test/reline/helper.rb でするように移動されています。

[afed2668a6] manga_osyo 2019-07-14 18:08:36 UTC

reline のテストで Reline の config および line_editor にアクセスする方法を修正。 private メソッドの core 経由で取得するように変更しています。

[298ac04710] manga_osyo 2019-07-14 18:10:26 UTC

というわけで 9c0cd6a09eff793356ddc65a76b3fc72c61fee05 で追加された Reline2 は削除されて Reline を置き換えている、ようです。

[195f545c14] manga_osyo 2019-07-16 12:05:27 UTC

lib/reline.rb の定数 Reline::Core::Windows の参照を Reline::Windows に修正。

[f33117fbc6] manga_osyo 2019-07-16 12:26:30 UTC

test/test_reline.rb を追加。主に Reline の特異メソッドのテストです。

[1ee9299bca] manga_osyo 2019-08-18 06:51:18 UTC

reline のテストで Windows での CI のエラー対応のため Reline.basic_word_break_characters や Reline.basic_quote_characters に指定するマルチバイト文字を変えています。なんで元のだとダメだったのかはよくわかりませんが。

[0295bffc96] manga_osyo 2019-08-18 06:59:42 UTC

f33117fbc6a8fb90f94bb9ff2a4d948a19933c2a で追加した test/test_reline.rb を test/reline/test_reline.rb に移動。

[50d4a77041] manga_osyo 2019-08-18 07:07:20 UTC

test/reline/test_reline.rb で Reline の特異メソッドに渡す文字列の Encoding を明示的に設定するようにしています。 Encoding::ASCII って US-ASCII の別名なんだ。知らなかった…。

[344f507e4e] manga_osyo 2019-08-23 16:34:00 UTC

lib/reline.rb の定数 ATTR_READER_NAMES および ATTR_ACCESSOR_NAMES に代入する配列を freeze していたのをやめています。

[3a4a58e2cc] aycabta 2019-08-26 16:42:41 UTC

拡張ライブラリ readline のテストで reline を使う場合に Reline.test_mode の呼び出しなどの準備を修正しています。

[d9bfbe363d] Aaron Patterson 2019-08-26 18:14:03 UTC

gc.c の gc_update_table_refs() で第2引数が NULL の時と要素数が 0 の時の早期 return をするようにしています。

[09d8e06b33] Aaron Patterson 2019-08-26 18:31:52 UTC

GC.compact でオブジェクト移動させた時の参照の追随の処理でオブジェクトのインスタンス変数のテーブルの処理を別のコールバック関数を用意して、キーは実際にはオブジェクトではないので書き換えは行わないようにしている、みたいですがコールバック関数から return ST_REPLACE してるのはいいのかな。

[d8bcede9c3] aycabta 2019-08-26 20:07:55 UTC

標準添付ライブラリ reline で forwardable の def_delegators のかわりに def_single_delegators を使うように変更しています。これなにが違うんだっけな。

[68207bb4fc] aycabta 2019-08-26 20:08:58 UTC

lib/reline.rb で無引数で private を呼んでそれ以降のメソッドを暗黙のうちに private にするのをやめて、def 文の前に private を書く(def 文は最近は Symbol を返すのでそれを private に渡すことになる)方式に変更しています。

[f2a5c50f94] aycabta 2019-08-26 20:10:25 UTC

lib/reline.rb でクラスメソッド定義には private による可視性の変更は効かないので削っています。

[978ff1ff3a] aycabta 2019-08-26 20:24:13 UTC

tool/sync_default_gems.rb による reline の同期時に lib/readline.rb も同期するようにしています。

[f13db4adde] aycabta 2019-08-26 20:33:27 UTC

標準添付ライブラリ reline の Reline::Core#may_req_ambiguous_char_width で accessor で参照されるために変数 ambiguous_width をインスタンス変数 @ambiguous_width に変更しています。

[9f0f777173] Aaron Patterson 2019-08-26 20:41:54 UTC

09d8e06b335d7647fa5e0385980ba3f1a67a592b と同様に T_CLASS だけでなく T_ICLASS のインスタンス変数テーブルでもキーは移動されたオブジェクトとたまたま同じ数値になってても参照を変更しないよう gc_update_tbl_refs() のほうを使うように修正しています。

[fd0a4a64a3] aycabta 2019-08-26 20:59:46 UTC

標準添付ライブラリ reline で Reline::Core から def_instance_delegators でインスタンスの readline メソッドを委譲する先を core からクラスメソッドに修正しています。

[744be55fad] aycabta 2019-08-26 21:30:32 UTC

reline の Reline::Core の readline メソッドの def_single_delegators が2回呼ばれてたので1つ削っています。

[2283411265] Nobuyoshi Nakada 2019-08-26 22:59:10 UTC

win32/win32.c の rb_w32_lseek() にライセンスを明記するコメントを追加しています。 [ruby-core:74724] [Bug #12230]

[76abd79629] Kazuhiro NISHIYAMA 2019-08-27 01:38:58 UTC

5e10cb04e88c8a95ee44f6cad2bdf264e0dff92a の CC に対応する C++コンパイラを検出する処理の再修正で1箇所 CXX への代入漏れと AC_CASE のマッチ条件の書きかたの修正。

[8eee3f3a36] Yusuke Endoh 2019-08-27 04:57:25 UTC

signal.c の ruby_abort() の NORETURN() つきの宣言を Solaris 環境では消すように preprocessor の分岐を追加しています。コンパイラ警告抑制のため。

[d53b669948] Yusuke Endoh 2019-08-27 05:05:20 UTC

compile.c で Solaris での警告抑制のため const 修飾子を削っています。

[2789bdddc7] Nobuyoshi Nakada 2019-08-27 05:20:07 UTC

vsnprintf.c で PRI_EXTRA_MARK というマクロをポインタとして扱ってるところが警告が出るようなので配列? として扱うようにしています。

[9bc1667a18] Nobuyoshi Nakada 2019-08-27 05:30:52 UTC

GitHub Actions でタスクの名前になんのテストか表示するようにしているようです。

[0c8525ecc9] Yusuke Endoh 2019-08-26 08:26:39 UTC

.github/workflows/coverage.yml というファイルを追加して、どうやら GitHub Actions でカバレッジを取るようにしたみたいです。 たぶん C のソースコードのほうのカバレッジ

[2fb723b8af] Nobuyoshi Nakada 2019-08-27 06:11:01 UTC

9bc1667a188392b94971b9b96507af76cbd5f413 の GitHub Actions のテストのタスクの名前に詳細を入れるのを revert しています。

[6007c7c366] 卜部昌平 2019-08-27 04:03:47 UTC

d5893b91faa7dc77ca6c9728d1054dabd757aead で削除された関数 rb_method_defined_by() の宣言を internal.h から削除しています。

[0c8592b9af] 卜部昌平 2019-08-27 05:11:02 UTC

f0e73fc9862c8d2c57a89349fb79012b826b8245 で rb_block_call_func_t という関数ポインタ型を導入したのに追随して rb_block_call() と rb_check_block_call() の引数もこの型名を利用するようにしています。

[7329b3339a] 卜部昌平 2019-08-26 04:30:04 UTC

で rb_block_call_func_t の定義に ANYARGS で任意の引数の関数ポインタを使うのは常にやめて RB_BLOCK_CALL_FUNC_STRICT を定義しておくようにしています。互換性のため(というか警告の抑制?)にやってたんだと思いますがもういいだろうってことですかね。

[b8fd2e83e7] 卜部昌平 2019-08-26 05:25:53 UTC

ifunc に関数ポインタを受け付ける rb_iseq_compile_ifunc() も任意の引数を受け付ける関数ポインタはやめてちゃんと型を定義するようにしているようです。

[3cae73133c] 卜部昌平 2019-08-26 05:42:08 UTC

rb_iterate() の引数も同様に適当な関数ポインタでなく rb_block_call_func_t を受け取るようにして、拡張ライブラリ openssl の ssl_npn_encode_protocol_i() の宣言も修正しています。

[5c7c2d9951] 卜部昌平 2019-08-26 05:51:00 UTC

rb_rescue() と rb_rescue2() も適当な関数ポインタでなくちゃんと引数の数を明記した関数ポインタ型を引数に受け取るようにしています。

[703783324c] 卜部昌平 2019-08-26 06:20:15 UTC

関数ポインタの型をちゃんとしようシリーズ。 rb_ensure() も修正しています。

[af5e256640] 卜部昌平 2019-08-26 06:27:48 UTC

関数ポインタの型をちゃんとしようシリーズ。rb_catch() と rb_catch_obj() も修正しています。

[bc3e7924bc] 卜部昌平 2019-08-26 06:35:28 UTC

関数ポインタの型をちゃんとしようシリーズ。rb_fiber_new() と rb_proc_new() も修正しています。

[e3fc30564e] 卜部昌平 2019-08-26 06:53:57 UTC

関数ポインタの型をちゃんとしようシリーズ。 thread_create_core() および rb_thread_create() も修正しています。

[6dd60cf114] 卜部昌平 2019-08-26 07:06:40 UTC

関数ポインタの型をちゃんとしようシリーズ。 st_foreach() も修正しています。

[78628618da] 卜部昌平 2019-08-27 03:21:36 UTC

関数ポインタの型をちゃんとしようシリーズ。今度は関数の引数じゃなくて struct st_hash_type という構造体の型の修正です。

[ae2dc3f217] 卜部昌平 2019-08-27 02:16:52 UTC

関数ポインタの型をちゃんとしようシリーズ。rb_define_virtual_variable() と rb_define_hooked_variable() の引数の修正です。しかしなんか $ を名前に含む関数が定義されているのがこれ大丈夫なのかな。

[50f5a0a8d6] 卜部昌平 2019-08-27 02:53:39 UTC

関数ポインタの型をちゃんとしようシリーズ。 rb_hash_foreach() の引数も修正しています。

[79d280a5e8] 卜部昌平 2019-08-27 03:08:32 UTC

関数ポインタの型をちゃんとしようシリーズ。 obj_ivar_each() および gen_ivar_each()、rb_ivar_foreach() の引数も修正しています。

[bd8dc2561d] 卜部昌平 2019-08-27 03:29:00 UTC

関数ポインタの型をちゃんとしようシリーズ。構造体 struct MEMO のメンバーの一部の関数ポインタの引数を(というか引数がない関数であることを)明記するようにしています。

[19b6678132] 卜部昌平 2019-08-27 03:40:06 UTC

関数ポインタの型をちゃんとしようシリーズ。rb_uninterruptible() の引数も修正しています。

[1663d347c9] 卜部昌平 2019-08-27 05:21:18 UTC

ae2dc3f217ba9f181471f39a7e5ce72a28b27c2a で関数名に $ が入ってるの大丈夫かなって思ったらどうもやっぱり駄目な環境があったようで削っています。

[3ac0b75c45] Yusuke Endoh 2019-08-27 07:39:42 UTC

.github/workflows/doxygen.yml というファイルを追加して GitHub Actions で doxygen によるドキュメント生成を走らせるようにしています。 https://github.com/ruby/ruby/pull/2406

[d806078237] Kazuhiro NISHIYAMA 2019-08-27 09:46:16 UTC

3ac0b75c456fa1d16c133cef2f47b7361cf651c5 の doxygen 実行する GitHub Actions で apt-get で graphviz をインストールしておくように修正しています。

[eaff19de2b] Takashi Kokubun 2019-08-27 14:41:51 UTC

e3fc30564e9466d6926f9d25a090dcf787bd5c33 の rb_thread_create() の引数の関数ポインタの型の修正に追随して thread_spec_rb_thread_create() からの呼び出し部分でキャストを追加しています。 https://github.com/ruby/ruby/pull/2404

[2cd68a38d9] Nobuyoshi Nakada 2019-08-27 14:42:56 UTC

tool/lib/vcs.rb で VCS::SVN.short_revision で結果を Integer に変換するように修正しています。

[3bed468e88] Takashi Kokubun 2019-08-27 14:49:24 UTC

.github/workflows/doxygen.yml にコピーしたまま残ってたとおぼしき strategy の設定を削除しています。

[4209066f0e] Takashi Kokubun 2019-08-27 14:52:31 UTC

3bed468e8864f3ac4332a08b6c95b1a542aa23dd と同様に .github/workflows/coverage.yml からも strategy の設定を削除しています。またデバッグ用の GITHUB_CONTEXT を表示するタスクも削除しています。

[6a0d2bc2af] Nobuyoshi Nakada 2019-08-27 15:09:01 UTC

rubyspec の C API のテスト用の拡張ライブラリで今日の関数ポインタの型を厳密にする変更への追随。

[9928a6a367] git 2019-08-27 15:12:01 UTC

version.h の日付更新

[dd032a5fb4] Takashi Kokubun 2019-08-27 15:13:54 UTC

GitHub Actions の coverage と doxygen のジョブで git clone の --depth オプションを 1 から 10 に増やしています。

[6454808c52] NAKAMURA Usaku 2019-08-27 15:19:25 UTC

tool/make-snapshot で revision が svn のものだった時には revision.h で RUBY_REVISION を整数として定義するように修正しています。