[#31320] Import RubyGems to Ruby 1.9 — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
なかだです。
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
In article <E1Ika5D-0007fc-GG@x31>,
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
In message <471447D5.5050902@sarion.co.jp>
咳といいます。
Rubygems は、基本的に他のパッケージシステムから包みやすい作り
In message <868x62huhe.knu@iDaemons.org>
At Wed, 17 Oct 2007 22:04:23 +0900,
Tuesday 16 October 2007 14:09:13 に NAKAMURA, Hiroshi さんは書きました:
-----BEGIN PGP SIGNED MESSAGE-----
押田です。
Sunday 21 October 2007 00:17:43 に NAKAMURA, Hiroshi さんは書きました:
> ちなみに「ruby/1.9.1の標準添付からどのライブラリを外すか?」という議論も
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
ささだです。
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
> U parsearg, tadf
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
[#31323] Bignum#to_s の Karatsuba 基数変換による高速化 — "Kenta Murata" <muraken@...>
むらけんです.
まつもと ゆきひろです
むらけんです.
まつもと ゆきひろです
遠藤です。
むらたです.
遠藤です。
むらたです.
[#31333] Invalid error message by illegal regexp — KIMURA Koichi <kimura.koichi@...>
木村です。
[#31351] set_trace_func NULL pointer given — eklerni <eklerni@...>
From:eklerni
[#31357] invalid string for Date.parse — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
> となります。どうも、junではじまっているので6月とみなしている
なかだです。
[#31371] simultaneous exceptions dump core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
ささだです。
遠藤です。
[#31376] Re: [ ruby-Bugs-9490 ] Date module, step method, infinite loop if +step+ is 0 should raise an exception? — Urabe Shyouhei <shyouhei@...>
rubyforgeで表題の件が卜部にassignされてるのですが、どうしましょう。
Date のほうで、合せたらいいというのなら、それでいいと思います。
[#31377] Re: [ ruby-Patches-11719 ] add a :passive option to open-uri's open method — Urabe Shyouhei <shyouhei@...>
rubyforgeで表題の件が卜部にassignされてるのですが、どうしましょう。
In article <46BE0E9B.70309@ruby-lang.org>,
[#31397] File exists - /tmp/bootstraptest.tmpwd — Tanaka Akira <akr@...>
ひとつのマシンで、あるユーザが btest した後、他のユーザが
ささだです。
In article <46C18A65.7030209@atdot.net>,
[#31407] [BUG] Stack consistency error (sp: 11, bp: 12) — Tanaka Akira <akr@...>
以下のようにすると Stack consistency error になります。
[#31448] Ruby's (new) Bizarre Operator(s) — Nobuyoshi Nakada <nobu@...>
なかだです。
まつもと ゆきひろです
バンサンです。
[#31462] Dir.mktmpdir for 1.8 — Tanaka Akira <akr@...>
Dir.mktmpdir を 1.8 に入れたいんですが、どうでしょう?
まつもと ゆきひろです
In article <E1IMCUq-00083X-Uo@x31>,
[#31470] nested fiber invocation — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#31473] setter of $! — SASADA Koichi <ko1@...>
ささだです。
[#31475] lambda {|(v0,v1),v2|}.call([1],2) — Tanaka Akira <akr@...>
以下の例は ArgumentError になりません。
ささだです。
[#31502] {|(a,a)|} — Tanaka Akira <akr@...>
以下がエラーになりません。
[#31522] a, a = 1, 2 — Tanaka Akira <akr@...>
ふと気がついたんですが、a, a = 1, 2 とすると、1.8 と 1.9 で
こんにちは、なかむら(う)です。
[#31525] いくつかのバグ報告と提案(5点) — eklerni <eklerni@...>
From:eklerni
なかだです。
まつもと ゆきひろです
[#31539] strtod の精度 — Satoshi Nakagawa <snakagawa@...>
中川といいます。
まつもと ゆきひろです
中川です。
中川です。
まつもと ゆきひろです
中川です。
中川です。
まつもと ゆきひろです
In article <EEC70971-AED4-4830-801B-A507561AEDCD@infoteria.co.jp>,
[#31576] test/win32ole — SASADA Koichi <ko1@...>
ささだです.
[#31583] Fiber reviesed — SASADA Koichi <ko1@...>
ささだです.
遠藤です。
ささだです.
遠藤です。
ささだです.
[#31625] IO.sysdup2, IO.sysdup, IO.sysclose — Tanaka Akira <akr@...>
redirect の処理をちょっと書いてみたところ、
まつもと ゆきひろです
In article <E1IOaVr-0001Yu-4H@x31>,
In article <87d4xc97ml.fsf@fsij.org>,
[#31646] Re: [ruby-cvs:20498] Ruby:r13261 (trunk): * encoding.c: provide basic features for M17N. — Tanaka Akira <akr@...>
In article <200708250329.l7P3TjNP004245@ci.ruby-lang.org>,
まつもと ゆきひろです
[#31651] rb_enc_mbclen — Tanaka Akira <akr@...>
rb_enc_mbclen のインターフェースは GB18030 などで困るんじゃ
[ruby-dev:31508] Re: nested fiber invocation
ささだです。
Yukihiro Matsumoto wrote:
> まつもと ゆきひろです
>
> 遠藤さんから
>
> http://d.hatena.ne.jp/ku-ma-me/20070817/p2
>
> で指摘されているのですが、Enumerator#nextの内側でさらに
> Enumerator#nextが呼ばれると、エラーになります。デバッガで追い
> かけると rb_fiber_yield() から渡した値と違うもの(yieldされた
> 値?)が帰ってきているようです。
>
> def (o = Object.new).each
> yield 0
> p [1,2,3].to_enum.next
> end
>
> p o.to_enum.next # => double.rb:6:in `<main>': unhandled exception
>
> current fiberをyieldしているはずなのに、FIXNUMの0(yieldした
> 値?)が渡される。0はFiberではないのでTypeError例外が発生して
> いる。
>
> 私のFiberの知識ではここまでが限界でした。これはバグでしょう
> か、それとも制限とすべきでしょうか。できれば、ネストできない
> と言う制限はない方がうれしいのですが。
>
> まつもと ゆきひろ /:|)
こんな感じでどうでしょう。つまり、ブロックの最後も rb_fiber_yield
で戻るようにしましょうって感じで。
Index: enumerator.c
===================================================================
--- enumerator.c (リビジョン 13113)
+++ enumerator.c (作業コピー)
@@ -13,6 +13,7 @@
************************************************/
#include "ruby/ruby.h"
+#include "debug.h"
/*
* Document-class: Enumerable::Enumerator
@@ -42,6 +43,7 @@
VALUE fib;
VALUE next;
VALUE dst;
+ VALUE has_next;
};
static void
@@ -237,6 +239,7 @@
if (argc) ptr->args = rb_ary_new4(argc, argv);
ptr->fib = 0;
ptr->next = ptr->dst = Qnil;
+ ptr->has_next = Qnil;
return enum_obj;
}
@@ -381,19 +384,20 @@
next_i(VALUE curr, VALUE obj)
{
struct enumerator *e = enumerator_ptr(obj);
+ e->dst = curr;
- e->dst = curr;
rb_block_call(obj, rb_intern("each"), 0, 0, next_ii, obj);
- return e->next;
+ e->has_next = Qfalse;
+ rb_fiber_yield(e->dst, 1, &e->next);
}
static void
next_init(VALUE obj, struct enumerator *e)
{
VALUE curr = rb_fiber_current();
-
e->dst = curr;
e->fib = rb_block_call(rb_cFiber, rb_intern("new"), 0, 0,
next_i, obj);
+ e->has_next = Qtrue;
rb_fiber_yield(e->fib, 1, &curr);
}
@@ -416,16 +420,18 @@
{
struct enumerator *e = enumerator_ptr(obj);
VALUE curr, v;
+ curr = rb_fiber_current();
- curr = rb_fiber_current();
if (!e->fib) {
next_init(obj, e);
}
- if (!rb_fiber_alive_p(e->fib)) {
+
+ if (!e->has_next) {
e->fib = 0;
e->next = e->dst = Qnil;
rb_raise(rb_eStopIteration, "Enumerator#each reached at end");
}
+
v = rb_fiber_yield(e->fib, 1, &curr);
return v;
}
@@ -441,11 +447,7 @@
enumerator_next_p(VALUE obj)
{
struct enumerator *e = enumerator_ptr(obj);
-
- if (!e->fib) {
- next_init(obj, e);
- }
- return rb_fiber_alive_p(e->fib);
+ return e->has_next;
}
/*
--
// SASADA Koichi at atdot dot net