[#35789] [Ruby 1.9 - Bug #407] (Open) String#<< — Shyouhei Urabe <redmine@...>

チケット #407 が報告されました。 (by Shyouhei Urabe)

13 messages 2008/08/06

[#35845] [Bug #437] test_strftime(TestTime) fails on Solaris — Shugo Maeda <redmine@...>

Bug #437: test_strftime(TestTime) fails on Solaris

24 messages 2008/08/13
[#35855] Re: [Bug #437] test_strftime(TestTime) fails on Solaris — "Shugo Maeda" <shugo@...> 2008/08/15

前田です。

[#35856] Re: [Bug #437] test_strftime(TestTime) fails on Solaris — SATOH Fumiyasu <fumiyas@...> 2008/08/15

さとうふみやす @ OSS テクノロジです。

[#35857] Re: [Bug #437] test_strftime(TestTime) fails on Solaris — Yukihiro Matsumoto <matz@...> 2008/08/15

まつもと ゆきひろです

[#35870] Re: [Bug #437] test_strftime(TestTime) fails on Solaris — "Shugo Maeda" <shugo@...> 2008/08/18

前田です。

[#35863] Refactoring of enumerating prime numbers — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

20 messages 2008/08/16
[#35865] Re: Refactoring of enumerating prime numbers — keiju@... (keiju ISHITSUKA) 2008/08/17

けいじゅ@いしつかです.

[#35867] Re: Refactoring of enumerating prime numbers — "Yugui (Yuki Sonoda)" <yugui@...> 2008/08/17

Yuguiです。

[#35875] Re: Refactoring of enumerating prime numbers — keiju@... (keiju ISHITSUKA) 2008/08/19

けいじゅ@いしつかです.

[#35877] Re: Refactoring of enumerating prime numbers — Nobuyoshi Nakada <nobu@...> 2008/08/19

なかだです。

[#35882] Re: Refactoring of enumerating prime numbers — keiju@... (石塚圭樹) 2008/08/20

けいじゅ@いしつかです.

[#35904] [Feature:1.9] pack format 'm' based on RFC 4648 — "Yusuke ENDOH" <mame@...>

遠藤です。

14 messages 2008/08/21
[#36442] [Feature #471] pack format 'm' based on RFC 4648 — Yuki Sonoda <redmine@...> 2008/09/22

チケット #471 が更新されました。 (by Yuki Sonoda)

[#35906] %N for Time#strftime — "Shugo Maeda" <shugo@...>

前田です。

13 messages 2008/08/21

[#35986] 1.9と1.8で、delegateのインスタンスのクラス名の違う — Fujioka <fuj@...>

xibbarこと藤岡です。

17 messages 2008/08/26
[#35987] Re: 1.9と1.8で、delegateのインスタンスのクラス名の違う — Yukihiro Matsumoto <matz@...> 2008/08/26

まつもと ゆきひろです

[#35991] Re: 1.9と1.8で、delegateのインスタンスのクラス名の違う — keiju@... (石塚圭樹) 2008/08/26

けいじゅ@いしつかです.

[#35994] Re: 1.9と1.8で、delegateのインスタンスのクラス名の違う — Fujioka <fuj@...> 2008/08/27

藤岡です。

[#35998] Re: 1.9と1.8で、delegateのインスタンスのクラス名の違う — keiju@... (石塚圭樹) 2008/08/27

けいじゅ@いしつかです.

[#36066] Numeric#scalar? — Tadayoshi Funaba <tadf@...>

1.9 の Numeric#scalar? について、適当でないのでは (real? などのほうがい

24 messages 2008/08/31
[#36069] Re: Numeric#scalar? — Shin-ichiro HARA <sinara@...> 2008/08/31

原です。

[#36104] Re: Numeric#scalar? — Tadayoshi Funaba <tadf@...> 2008/09/02

> やはり、scalar? はずれているんじゃないかな。real? の方がいい

[#36122] Re: Numeric#scalar? — Shin-ichiro HARA <sinara@...> 2008/09/03

原です。

[#36133] Re: Numeric#scalar? — Tadayoshi Funaba <tadf@...> 2008/09/03

> ここで、scalar? を疑問視する理由を復習すると、たとえば、「複

[#36173] Re: Numeric#scalar? — Tadayoshi Funaba <tadf@...> 2008/09/05

1.9.1 までに時間がないので scalar? だけ何とかしたいと思っていましたが、

[#36183] Re: Numeric#scalar? — "Shugo Maeda" <shugo@...> 2008/09/06

前田です。

[#36186] Re: Numeric#scalar? — Shin-ichiro HARA <sinara@...> 2008/09/06

原です。

[ruby-dev:35988] Re: block parameter for Delagator

From: "Yusuke ENDOH" <mame@...>
Date: 2008-08-26 14:34:37 UTC
List: ruby-dev #35988
遠藤です。

2008/08/26 16:33 Keiju ISHITSUKA <keiju@ishitsuka.com>:
> --
> require "delegate"
>
> d1 = SimpleDelegator.new([1,2])
> d2 = SimpleDelegator.new([3,4])
>
>
> [d1, d2].each{|a, b| p a, b}
> --
>
> Ruby1.8では, 配列の要素が, 各a, b に代入されます.
> Ruby1.9 では, a だけに d1, d2代入され, b は nil になります.
>
> これって, 1.9 の仕様です? 言語の仕様? or Delegator の仕様?


バグかどうかはわかりませんが直してみました。
が、以下のコードが 3 倍遅くなりました。どんなもんでしょう。

$ time ./ruby.org -e '([1] * 5000000).each {|a, b| a }'

real    0m1.180s
user    0m0.740s
sys     0m0.430s

$ time ./ruby.new -e '([1] * 5000000).each {|a, b| a }'

real    0m3.420s
user    0m2.930s
sys     0m0.480s


一応パッチです。

Index: vm_insnhelper.c
===================================================================
--- vm_insnhelper.c	(revision 18871)
+++ vm_insnhelper.c	(working copy)
@@ -704,6 +704,7 @@
 	int i;
 	int argc = orig_argc;
 	const int m = iseq->argc;
+	VALUE ary;

 	th->mark_stack_len = argc;

@@ -714,8 +715,7 @@
 	 */
 	if (!(iseq->arg_simple & 0x02) &&
 	    (m + iseq->arg_post_len) > 0 &&
-	    argc == 1 && TYPE(argv[0]) == T_ARRAY) {
-	    VALUE ary = argv[0];
+	    argc == 1 && !NIL_P(ary = rb_check_array_type(argv[0]))) {
 	    th->mark_stack_len = argc = RARRAY_LEN(ary);

 	    CHECK_STACK_OVERFLOW(th->cfp, argc);


> また, 1.8 の様に振る舞うようにDelegator似のクラス側で対応することって出
> 来ますでしょうか?

たぶん、できないような気がします。

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

In This Thread