[#33948] Schedule for the 1.8.7 release — "Akinori MUSHA" <knu@...>
Hi, developers,
[#33955] --encoding affects script encoding — sheepman <sheepman@...>
こんばんは sheepman です。
なかだです。
[#33962] Ruby1.9.0でのインタプリタ組み込みについての質問 — Masayuki Yamaguchi <Yamaguchi.Masayuki@...>
山口と申します。
[#33966] Re: [ruby-cvs:22881] Ruby:r15644 (trunk): * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_chomp): test — Tanaka Akira <akr@...>
In article <[email protected]>,
まつもと ゆきひろです
[#33974] Test::Unit::Collector::Dirがtest_*.rb以外集めてくれない — "Ken Date" <itacchi@...>
こんにちは、伊達です。
[#33983] Re: [ruby-cvs:22913] Re: Ruby:r15674 (trunk): * gc.c (add_heap): sort heaps array in ascending order to use — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
In article <[email protected]>,
[#34011] Should --verbose be equal to -v ? — Yugui <yugui@...>
Yuguiです。
まつもと ゆきひろです
西山和広です。
Yuguiです。
[#34020] MurmurHash problem — Nobuyoshi Nakada <nobu@...>
なかだです。
[#34030] uint32_t — KIMURA Koichi <kimura.koichi@...>
木村です。
[#34037] Ruby performance gains on SPARC — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#34067] Array#take,take_while,drop,drop_whlie — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34068] lgamma_r requires _REENTRANT on Solaris — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34077] 異なるエンコーディングだと同じバイト列でも==にならない件 — rubikitch@...
るびきちです。
[#34086] extend spawn to change attributes of child process. — Tanaka Akira <akr@...>
spaen, system, exec, IO.popen で、起動する子プロセスの属性を
[#34093] 拡張ライブラリ初期化中でのmodule_eval — Kouhei Sutou <kou@...>
須藤です。
[#34095] (再送) Cygwin で Resolv.getaddress が失敗する — Kouhei Yanagita <yanagi@...>
こんにちは。柳田です。
こんばんは、植田と申します。
柳田です。
[#34105] rational.rb, complex.rb and mathn.rb — Tadayoshi Funaba <tadf@...>
rational と complex が組み込みになったことで、lib/mathn.rb の意義は薄
現時点で rational.rb と complex.rb を残しているのは、それが無難だから
で、かなり選択肢を絞った叩き台です。
けいじゅ@いしつかです.
原です。
> 私も Complex の組み込みは Rational とは比較にならないくらい、仕様が決め
まつもと ゆきひろです
> Mathモジュールは伝統的にlibmのラッパーであったので、それを逸
原です。
> (1) (-8)**Rational(1,2) は複素数1.0+1.7320508*i
[#34109] LP64: date.rb:321:in `convert': integer 86400000000000 too big to convert to `int' (RangeError) — Tanaka Akira <akr@...>
LP64 なマシンで test-all が動かなくなっています。
[#34144] [質問2点] C からの定数参照 & thread switching コストの低減 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#34158] Complex組み込み — Masahiro TANAKA <masa16.tanaka@...>
Complexが組み込みになるそうですが、これはcomplex.rbを踏襲して、
原です。
> 今までの Complex は、complex.rb にほぼ残して、たとえば Rational 成分
原です。
> そうです。Complex が難しい、という話を書いておくと、
まつもと ゆきひろです
> |僕としては、/ 演算子の振舞いについて前向きに検討してほしいです。
まつもと ゆきひろです
> ふむ。では、/ のふるまいを
まつもと ゆきひろです
> |僕は、quo がいいと思います。
まつもと ゆきひろです
> となるようですが、別の実装として、
田中です。
> 最初に言っておきますが、気を悪くされたのならすみません。
村田です.
[#34159] ruby-trunk Marshal.dump bug — nagachika <rucila@...>
nagachika と申します。
[#34163] Array#shift/unshift の高速化 — wanabe <s.wanabe@...>
ワナベと申します。
[#34189] Re: [ruby-cvs:23106] Re: Ruby:r15866 (trunk): * numeric.c (num_quo): should convert its operand to Rational. — Tadayoshi Funaba <tadf@...>
間違って送ったので、再送。
> > > Log:
[ruby-dev:33985] Re: [ruby-cvs:22913] Re: Ruby:r15674 (trunk): * gc.c (add_heap): sort heaps array in ascending order to use
In article <[email protected]>, Yukihiro Matsumoto <[email protected]> writes: > |すでにほとんどソート済みの配列にたいしてはquick sortって不利では > |なかったかと思うのですが。というか、void*同士の減算は規格上は不 > |可では。 > > いや、気にならないでもなかったのですが、どうせそんなに大きな > 配列にはなりそうになかったので、効率は無視しました。実装して > くださったのでしたら断る理由はないのでコミットしてください。 その void* の減算は現実的に問題です。 手元の環境で、その変更以降、test-all で SEGV などの奇妙な挙 動が見られるのですが、原因がその減算でした。 以下のように assert をいれて確認したのですが、 Index: gc.c =================================================================== --- gc.c (revision 15675) +++ gc.c (working copy) @@ -413,12 +413,24 @@ rb_gc_unregister_address(VALUE *addr) } } +#include <assert.h> static int heap_cmp(const void *ap, const void *bp, void *dummy) { const struct heaps_slot *a = ap, *b = bp; + int ret; - return a->membase - b->membase; + ret = a->membase - b->membase; + if (a->membase < b->membase) { + assert(ret < 0); + } + if (a->membase > b->membase) { + assert(ret > 0); + } + if (a->membase == b->membase) { + assert(ret == 0); + } + return ret; } static void 手元の環境では、この減算で integer overflow が起きて、比較関 数として正しい値を返せていません。 Core was generated by `test/runner.rb test_gc(TestGc'. Program terminated with signal 6, Aborted. #0 0xb7f07410 in ?? () (gdb) up #1 0xbf9eb3e8 in ?? () (gdb) #2 0x00000006 in ?? () (gdb) #3 0x00007d30 in ?? () (gdb) #4 0xb7d7c811 in raise () from /lib/tls/i686/cmov/libc.so.6 (gdb) #5 0xb7d7dfb9 in abort () from /lib/tls/i686/cmov/libc.so.6 (gdb) #6 0xb7d75fbf in __assert_fail () from /lib/tls/i686/cmov/libc.so.6 (gdb) #7 0x08062a21 in heap_cmp (ap=0x819dc20, bp=0x819dc38, dummy=0x0) at gc.c:428 428 assert(ret > 0); (gdb) p ret $1 = -1360121024 (gdb) p a->membase $2 = (void *) 0xb79dc008 (gdb) p b->membase $3 = (void *) 0x8af8cc8 (gdb) p a->membase - b->membase $4 = -1360121024 (gdb) p a->membase > b->membase $5 = 1 (gdb) つまり、 a->membase が 0xb79dc008 で、 b->membase が 0x8af8cc8 ですから、 b->membase のほうが小さくて、正の値を返すべきですが、 -1360121024 という負の値を返しています。 この結果として、正しくソートが行われず、is_pointer_to_heap の2分探索がうまく動かずに不適切に偽を返し、回収すべきでない オブジェクトが回収され、SEGV を含むいろいろと奇妙な現象が起 こっています。 -- [田中 哲][たなか あきら][Tanaka Akira]