[#47253] unexpected dependencies such as ext/-test-/num2int/depend describes num2int.o depends on numeric.c — Tanaka Akira <akr@...>
気がついたんですが、ext/-test-/num2int/depend など、
3 messages
2013/04/12
[#47310] RubySource.com からのインタビュー — Yusuke Endoh <mame@...>
遠藤です。ご無沙汰してます。
6 messages
2013/04/30
[#47326] Re: RubySource.com からのインタビュー
— Yusuke Endoh <mame@...>
2013/05/07
遠藤です。
[ruby-dev:47218] [Backport 200 - Backport #7947][Closed] Queue#clear の返り値が Queue 内部の配列になっている
From:
"nagachika (Tomoyuki Chikanaga)" <nagachika00@...>
Date:
2013-04-03 17:23:28 UTC
List:
ruby-dev #47218
Issue #7947 has been updated by nagachika (Tomoyuki Chikanaga). Status changed from Assigned to Closed 元の挙動はバグ扱いすべきものだとは思うので悩みましたけど、一応挙動が変化してしまうのでバックポートは見合わせようと思います。主なデメリットはメソッドチェーンができないということで、現在のバグに依存しているコードがある可能性と天秤にかけると 2.0.0 では互換性のほうに重きを置きたいと思います。 ---------------------------------------- Backport #7947: Queue#clear の返り値が Queue 内部の配列になっている https://bugs.ruby-lang.org/issues/7947#change-38181 Author: clicube (Hiroaki Yokose) Status: Closed Priority: Normal Assignee: nagachika (Tomoyuki Chikanaga) Category: Target version: ■現象 Queue#clear が def clear @que.clear end と実装されていて, Array#clear は self を返すので,結果的に内部の配列 @que が返っています. ■問題と思われること 1. 内部で使っている変数にアクセスできてしまいます. (これは instance_eval でアクセスしようと思えばできるわけですが) 2. Array も Queue も #push や #pop があるため, Queue#clear の返り値に対してメソッドチェーンで #push などを繋いだりすると, エラーが起こらないにもかかわらず内部の変数を直接書き換えてしまう可能性があると考えます. ■パッチについて 今回はQueue#clearで気づきましたが, QueueおよびSizedQueueのメソッドについて Array との対称性を考えると, ・Queue#push ・Queue#clear ・SizedQueue#push ・SizedQueue#clear は self が返るべきかと考えました. 以上4メソッドについて変更を加えるパッチを添付します. テストの実行結果は以下です. $ ./ruby -I./lib -I. test/thread/test_queue.rb Run options: # Running tests: Finished tests in 1.680776s, 7.1396 tests/s, 13.6842 assertions/s. 12 tests, 23 assertions, 0 failures, 0 errors, 0 skips ruby -v: ruby 2.0.0dev (2013-02-24 trunk 39476) [x86_64-darwin11.4.2] パッチのつくり方やテストの書き方/実行方法に自信がないのですが,これでいいのでしょうか. IRCで相談に乗っていただいた方々,ありがとうございました. -- http://bugs.ruby-lang.org/