[#38371] Re: [ruby-cvs:30538] Ruby:r23320 (trunk): * lib/set.rb (SortedSet#add): Do not let an uncomparable object — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
At Mon, 4 May 2009 23:44:22 +0900,
遠藤です。
At Fri, 8 May 2009 02:00:10 +0900,
[#38372] making install-sh more descriptive — "Yugui (Yuki Sonoda)" <yugui@...>
install-shが空になって久しい(r520)です。
[#38382] [Bug #1442] indentation check and coverage for toplevel do not work — Yusuke Endoh <redmine@...>
Bug #1442: indentation check and coverage for toplevel do not work
[#38390] [Bug:1.8] Tempfile and extended Enumerable — Tanaka Akira <akr@...>
1.8.8dev で、以下のように、Enumerable に each2 を定義し、
[#38392] Enumerable#gather_each — Tanaka Akira <akr@...>
ときに、複数行をまとめて扱いたいことがあります。
ujihisaと申します。
まつもと ゆきひろです
At Sun, 10 May 2009 06:00:08 +0900,
In article <E1M2t0u-0000Aa-Sd@x61.netlab.jp>,
まつもと ゆきひろです
In article <E1M4oSd-00005c-WB@x61.netlab.jp>,
In article <873ab3531u.fsf@fsij.org>,
まつもと ゆきひろです
At Sat, 9 May 2009 15:30:20 +0900,
In article <86r5yy2nrg.knu@iDaemons.org>,
At Sun, 10 May 2009 10:08:47 +0900,
In article <86ocu132gq.knu@iDaemons.org>,
At Sun, 10 May 2009 15:57:33 +0900,
In article <86my9l2tts.knu@iDaemons.org>,
Haskell の groupBy と Python の groupby が似ている、という話
遠藤です。
In article <e0b1e5700905140800y6d701c6fj731a59ffd83b9d79@mail.gmail.com>,
[#38423] longlife gc — Narihiro Nakamura <authornari@...>
nariと申します.
[#38446] [Bug:1.9] exact Time and inexact Time — Yusuke ENDOH <mame@...>
遠藤です。
In article <e0b1e5700905132145i32bed2f0y80faef19c119824f@mail.gmail.com>,
遠藤です。
[#38463] SQLiteライブラリ — "NARUSE, Yui" <naruse@...>
成瀬です。
[#38486] [Bug #1483] some commands installed without program-suffix — Kazuhiro NISHIYAMA <redmine@...>
Bug #1483: some commands installed without program-suffix
[#38493] [Feature:trunk] enhancement of Array#drop — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
[#38518] [Bug:1.9] Enumerator.new { }.take(1).inject(&:+) causes stack overflow — Yusuke ENDOH <mame@...>
遠藤です。
[#38524] [Bug #1503] -Kuをつけた時、/[#{s}]/n と Regexp.new("[#{s}]",nil,"n") で実行結果が異なる — sinnichi eguchi <redmine@...>
Bug #1503: -Kuをつけた時、/[#{s}]/n と Regexp.new("[#{s}]",nil,"n") で実行結果が異なる
[ruby-dev:38521] Re: [Bug:1.9] Enumerator.new { }.take(1).inject(&:+) causes stack overflow
ささだです.
Yusuke ENDOH wrote::
> そこで、以下のように、yielder_new_i で proc メソッドを呼ぶことで
> バグは直りました。
似たような話なんですが,そもそも rb_iterate を使う場面じゃなさそうな.
Index: enumerator.c
===================================================================
--- enumerator.c (リビジョン 23496)
+++ enumerator.c (作業コピー)
@@ -718,12 +718,6 @@
}
static VALUE
-yielder_new_i(VALUE dummy)
-{
- return yielder_init(yielder_allocate(rb_cYielder), rb_block_proc());
-}
-
-static VALUE
yielder_yield_i(VALUE obj, VALUE memo, int argc, VALUE *argv)
{
return rb_yield_values2(argc, argv);
@@ -732,7 +726,7 @@
static VALUE
yielder_new(void)
{
- return rb_iterate(yielder_new_i, (VALUE)0, yielder_yield_i, (VALUE)0);
+ return yielder_init(yielder_allocate(rb_cYielder),
rb_proc_new(yielder_yield_i, 0));
}
/*
> 上に関係して、Ruby のソースコードには以下のアサーションが暗黙に
> 存在すると思ったのですが、正しいでしょうか。
>
> - passed_block が設定されたら、eval ループに戻る前に Ruby レベルの
> メソッドを呼んで passed_block を回収させないといけない
yes.
> - rb_iterate や rb_block_call の第一引数に渡される関数は、その中で
> Ruby レベルのメソッドを呼ばないといけない
yes.
> 後者は C API に関わる話なので、正しいようなら README.EXT に書き
> 加えた方がいいと思います。というか書き加えようと思います。
これは,実は 1.8 以前との非互換の問題だったんですよね.
これを真面目に解決しようとすると,このようなレアケースのためにブロック
をチェックする全てのコードに passed_block をチェックするように変更する必
要が出てきて,ちょっと現実的じゃないのです.
*フレームをその時だけいじっちゃう,という回避手段があるような,
嫌なところに波及しそうな.
例えば,rb_iterate は obsolete にしてしまって(制限付きで存在),
rb_block_call を使うようにして下さい,とドキュメントするのはどんなもんで
しょうか.
--
// SASADA Koichi at atdot dot net
// 久しぶりに Ruby のソースコードをいじった