ruby-trunk-changes 2019-06-26

今日は Coroutine の ucontext 実装の追加や irb の auto indent の修正などがありました。

[0b57f9b25d] aycabta 2019-06-25 13:00:29 UTC

irb の auto indent のための対応するトークンのインデントレベルを計算する処理で else, rescue, ensure, when, in などのブロックの途中(?)に出現するキーワードの時も対応する begin や switch のインデントレベルを参照するようにしています。

[57e1a69ea3] aycabta 2019-06-25 13:07:32 UTC

irb の auto indent のための処理がさらに追加されています。めちゃ大変そうだこれ……。しかし auto indent は嬉しいのでいい感じになって欲しいですね。

[730aeb2523] Yusuke Endoh 2019-06-25 14:31:49 UTC

518adcca0a2c611c4a94eaa778f9dcec4aff03f9 および dbe232e24e56cb200b8e5b78062c8a2784a792e9 の arm32 での Coroutine 実装と Linux でこれを使うようにする変更を revert しています。 CI でエラーになっていたとのこと。

[0bd5f846df] Jeremy Evans 2019-06-24 20:55:31 UTC

doc/syntax/assignment.rdoc に Kernel#eval でのローカル変数への代入が通常のローカル変数(parse 時点で確保される)と違う点を追記しています。 [ruby-core:80253] [Bug #13337]

[dd57442f74] git 2019-06-25 16:53:19 UTC

0bd5f846df2f6268f653773e0cd4a20e2a944646 の行末の空白除去。

[0aa8c3d88b] git 2019-06-25 16:53:22 UTC

version.h の日付更新

[0f28094201] Jeremy Evans 2019-06-25 18:18:08 UTC

0bd5f846df2f6268f653773e0cd4a20e2a944646 の doc/syntax/assignment.rdoc へ追加したローカル変数の記述を少し変更しています。

[cfa1a18431] aycabta 2019-06-25 23:07:58 UTC

57e1a69ea38d30bc249553e5fe15295ae0f5af81 で irbデバッグ用の出力が残ったままだったので削除しています。

[e478671e19] Hiroshi SHIBATA 2019-06-26 00:23:02 UTC

d7887b05d810e7e3188d25ed91364d5850d92cd7 の Psych.dump で例外を dump した時の rubyspec のテストを追随させていましたが、ruby のバージョンで分けるようにしています。

[ea8bc6822d] Nobuyoshi Nakada 2019-06-25 23:37:14 UTC

irb の auto indent のコードでまだデバッグ用のメッセージ出力が残ってたので削除しています。

[a3d1cacda6] Nobuyoshi Nakada 2019-06-25 23:43:08 UTC

0b57f9b25d43c2efec8ac17c0c03ce9fa461937a の irb の auto indent の処理で else などと同様に elsif キーワードも処理するようにしています。

[51361272f9] Jeremy Evans 2019-06-25 17:59:26 UTC

r66844 で tool/rbinstall.rb でインストール先に既に default gem の gemspec ファイルがあったら一度削除するようにしていましたが、この時 configure の --dest-dir の指定を加味して掃除するディレクトリを決めるように修正しています。

[6df1814c08] Yusuke Endoh 2019-06-26 05:08:10 UTC

730aeb2523fadd816b07e0e5322fb79841efc709 で revert された 518adcca0a2c611c4a94eaa778f9dcec4aff03f9 および dbe232e24e56cb200b8e5b78062c8a2784a792e9 のリトライ。 arm32 の COROUTINE_REGISTERS を1減らしたり arm32 版実装のアセンブラを変更したりしています。

[fe0ddf0e58] Nobuyoshi Nakada 2019-06-26 06:01:01 UTC

irb の行継続の判定で ensure の次が行継続と判定されていたので修正しています。

[04bc4c0662] John Hawthorn 2019-06-25 16:01:57 UTC

String オブジェクトは freeze するともうバッファを変更しなくなるので、(バッファをヒープに確保している場合) capa を実際のサイズ(+終端の NUL 文字ぶん)のサイズに切り詰めるということをしていて、rb_fstring() で(String#-@ で) fstring 化した時にこのバッファの切り詰め処理が行なわれていなかったのでここでもするようにしています。 https://github.com/ruby/ruby/pull/2256

[a84a99ffab] Yusuke Endoh 2019-06-26 07:01:45 UTC

Array のテストで GC を何度も強制的に実行するテストが時間がかかるため子プロセスを起動してそこで実施するようにしています。

[6c6bf9ffcb] Samuel Williams 2019-06-24 11:54:19 UTC

Coroutine 実装に ucontext(3) を利用した実装を追加して、ネイティブの実装が使えないときにこれを利用するようにしています。ついでに構造体の名前変更(というか typedef をやめる)があったりしてメインの変更がよくわからないですが、これでもう Fiber の実装は常に Coroutine 実装になったのかな。そうはなってなさそう。 FIBER_USE_COROUTINE が偽の時の実装と ucontext 利用時の Coroutine 実装は違うのかな?

[28eeaed8a9] Yusuke Endoh 2019-06-26 08:22:46 UTC

6df1814c08df93bbc0b3e7a73649bcf82e126064 の arm32 版 Coroutine 実装の修正も revert されています。まだ armv7l-linux での CI が失敗した模様。

[ba17127e99] aycabta 2019-06-26 09:41:42 UTC

irb の auto indent で end などのブロックを閉じるトークンが行頭に来た時のインデントレベルを減らす修正。

[acb67472c7] Samuel Williams 2019-06-26 10:02:19 UTC

6df1814c08df93bbc0b3e7a73649bcf82e126064 の arm32 版の Coroutine の実装は再適用しつつ、configure 時に armv7 linux 環境ではこれを使わず ucontext 実装の Coroutine を利用するようにしています。