[#29270] Proposal: Module#thunk_method — Charles Oliver Nutter <headius@...>

Many people use define_method solely so they can define a new method

13 messages 2010/04/06

[#29293] URI.(un)escape deprecated? — Marc-Andre Lafortune <ruby-core-mailing-list@...>

Hi.

16 messages 2010/04/07
[#29366] Re: URI.(un)escape deprecated? — Tanaka Akira <akr@...> 2010/04/08

2010/4/7 Marc-Andre Lafortune <ruby-core-mailing-list@marc-andre.ca>:

[#29313] [Bug #3112] require "yaml" doesn't use psych as default — Usaku NAKAMURA <redmine@...>

Bug #3112: require "yaml" doesn't use psych as default

28 messages 2010/04/08
[#29315] [Bug #3112] require "yaml" doesn't use psych as default — Yui NARUSE <redmine@...> 2010/04/08

Issue #3112 has been updated by Yui NARUSE.

[#29336] Re: [Bug #3112] require "yaml" doesn't use psych as default — Aaron Patterson <aaron@...> 2010/04/08

On Thu, Apr 08, 2010 at 02:06:55PM +0900, Yui NARUSE wrote:

[#29395] [Bug #3119] [Patch] "IOError (closed stream)" error with tempfile unlink then close usage — Simon Nicholls <redmine@...>

Bug #3119: [Patch] "IOError (closed stream)" error with tempfile unlink then close usage

9 messages 2010/04/09

[#29427] [Bug #3124] SocketError on SnowLeopard (during make test-all) — Aaron Patterson <redmine@...>

Bug #3124: SocketError on SnowLeopard (during make test-all)

10 messages 2010/04/11

[#29462] [Feature #3131] add Kernel#Hash() method like Kernel#Array() — Suraj Kurapati <redmine@...>

Feature #3131: add Kernel#Hash() method like Kernel#Array()

10 messages 2010/04/11

[#29464] [Bug #3132] …/nokogiri-1.4.1/ext/nokogiri/nokogiri.bundle: [BUG] Bus Error — Ashley Williams <redmine@...>

Bug #3132: …/nokogiri-1.4.1/ext/nokogiri/nokogiri.bundle: [BUG] Bus Error

8 messages 2010/04/12

[#29486] [Bug #3140] gem activation has changed between 1.8 and 1.9 — Aaron Patterson <redmine@...>

Bug #3140: gem activation has changed between 1.8 and 1.9

102 messages 2010/04/13
[#31002] [Bug #3140] gem activation has changed between 1.8 and 1.9 — Aaron Patterson <redmine@...> 2010/07/02

Issue #3140 has been updated by Aaron Patterson.

[#31003] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Yusuke ENDOH <mame@...> 2010/07/02

Hi,

[#31005] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Yehuda Katz <wycats@...> 2010/07/02

We are about to ship a version of Ruby with a built in package manager with

[#29489] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Evan Phoenix <evan@...> 2010/04/13

After a brief discussion with Eric Hodel about this, there are a few questions before we can figure out how to solve this:

[#29513] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Evan Phoenix <evan@...> 2010/04/14

Is there any comment on this? This is a big bug in 1.9.2 that we'd like to get fixed as soon as we can, but I need some input on it.

[#29526] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Rich Kilmer <rich.kilmer@...> 2010/04/15

I wrote this original code in gem_prelude.

[#31104] [Bug #3140] gem activation has changed between 1.8 and 1.9 — Yusuke Endoh <redmine@...> 2010/07/07

Issue #3140 has been updated by Yusuke Endoh.

[#31108] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Roger Pack <rogerdpack2@...> 2010/07/07

> I've commited the patch to trunk.

[#31193] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Yusuke ENDOH <mame@...> 2010/07/11

Hi,

[#31223] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Roger Pack <rogerdpack2@...> 2010/07/12

> Roger, could you re-try to build from scratch? ould you apply

[#31215] [Bug #3140] gem activation has changed between 1.8 and 1.9 — Yehuda Katz <redmine@...> 2010/07/12

Issue #3140 has been updated by Yehuda Katz.

[#31218] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9 — Yukihiro Matsumoto <matz@...> 2010/07/12

Hi,

[#29528] [Bug #3150] net/https peer verification doesn't do anything — Hongli Lai <redmine@...>

Bug #3150: net/https peer verification doesn't do anything

11 messages 2010/04/15

[#29578] [Bug #3163] SyntaxError when using variable which is also a method in current scope with a Symbol argument — Benoit Daloze <redmine@...>

Bug #3163: SyntaxError when using variable which is also a method in current scope with a Symbol argument

17 messages 2010/04/17
[#29583] [Bug #3163] SyntaxError when using variable which is also a method in current scope with a Symbol argument — caleb clausen <redmine@...> 2010/04/18

Issue #3163 has been updated by caleb clausen.

[#29641] [Feature #3176] Thread#priority= should actually do something — caleb clausen <redmine@...>

Feature #3176: Thread#priority= should actually do something

28 messages 2010/04/19

[#29710] [Bug #3185] File.expand_path repeats forward slashes at the beginning of the path — Brian Ford <redmine@...>

Bug #3185: File.expand_path repeats forward slashes at the beginning of the path

10 messages 2010/04/21

[#29835] [Bug #3212] ConditionVariable may become inconsistent for interrupted threads — Sylvain Joyeux <redmine@...>

Bug #3212: ConditionVariable may become inconsistent for interrupted threads

24 messages 2010/04/28

[#29868] [Bug:trunk] assert now passes non-boolean result — Nobuyoshi Nakada <nobu@...>

Hi,

15 messages 2010/04/29

[ruby-core:29291] [Bug #3104] Random: seeding issues

From: Marc-Andre Lafortune <redmine@...>
Date: 2010-04-07 06:08:39 UTC
List: ruby-core #29291
Bug #3104: Random: seeding issues
http://redmine.ruby-lang.org/issues/show/3104

Author: Marc-Andre Lafortune
Status: Open, Priority: Normal
Assigned to: Nobuyoshi Nakada, Category: core, Target version: 1.9.2
ruby -v: ruby 1.9.2dev (2010-04-03 trunk 27200) [x86_64-darwin10.2.0]

I think there are a couple of very small errors with the seeding of the Random class.

1) Seeding sometimes ignores the high bit of seed data.

   Random.new((1<<64)-1).rand == Random.new((1 << 65) -1).rand 
    # => true, should be false

Probably some leftover code?

diff --git a/random.c b/random.c
index 02d081c..447e59f 100644
--- a/random.c
+++ b/random.c
@@ -411,8 +411,6 @@ rand_init(struct MT *mt, VALUE vseed)
         init_genrand(mt, buf[0]);
     }
     else {
-        if (buf[len-1] == 1) /* remove leading-zero-guard */
-            len--;
         init_by_array(mt, buf, len);
     }
     if (buf != buf0) xfree(buf);


2) Treatment of negative seed values is currently platform dependent for all negative fixnums. From the same negative seed, the random sequence can be different on 32 bit platforms than on 64 bit ones.

   Random.new(-1).rand == Random.new((1<<63) -1).rand 
   # => true on 64 bit platform, false on 32 bit
   Random.new(-1).rand == Random.new((1<<31) -1).rand 
   # => false on 64 bit platform, true on 32 bit

The simple solution below ignores the sign (which is what's done in case of negative Bignum). This means that the same values will result from seeding with x or -x. Another solution would be to use the lowest bit for the sign (for both fixnums and bignums) so as to avoid this collision, or raise an error in case of negative seeds.

diff --git a/random.c b/random.c
index 02d081c..272f7b5 100644
--- a/random.c
+++ b/random.c
@@ -367,6 +367,7 @@ rand_init(struct MT *mt, VALUE vseed)
 {
     volatile VALUE seed;
     long blen = 0;
+    long fixnum_seed;
     int i, j, len;
     unsigned int buf0[SIZEOF_LONG / SIZEOF_INT32 * 4], *buf = buf0;
 
@@ -374,9 +375,11 @@ rand_init(struct MT *mt, VALUE vseed)
     switch (TYPE(seed)) {
       case T_FIXNUM:
        len = 1;
-       buf[0] = (unsigned int)(FIX2ULONG(seed) & 0xffffffff);
+       fixnum_seed = FIX2LONG(seed);
+       if (fixnum_seed < 0) fixnum_seed = -fixnum_seed;
+       buf[0] = (unsigned int)(fixnum_seed & 0xffffffff);
 #if SIZEOF_LONG > SIZEOF_INT32
-       if ((buf[1] = (unsigned int)(FIX2ULONG(seed) >> 32)) != 0) ++len;
+       if ((buf[1] = (unsigned int)(fixnum_seed >> 32)) != 0) ++len;
 #endif
        break;
       case T_BIGNUM:


3) Finally, I was wondering if there wasn't a typo trashing some of the bits in the initial states when seeding with an array:

diff --git a/random.c b/random.c
index 02d081c..f3db095 100644
--- a/random.c
+++ b/random.c
@@ -151,7 +151,7 @@ init_by_array(struct MT *mt, unsigned int init_key[], int key_length)
         if (i>=N) { mt->state[0] = mt->state[N-1]; i=1; }
     }
 
-    mt->state[0] = 0x80000000U; /* MSB is 1; assuring non-zero initial array */
+    mt->state[0] |= 0x80000000U; /* MSB is 1; assuring non-zero initial array */
 }
 
 static void



These changes will surely create test failures which should be trivial to fix.


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next