Forum: Ruby Change of behaviour for sleep(0) in 1.9

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
E1d641bfe4071a5413bac781f06d3fd1?d=identicon&s=25 Sean O'halpin (sean)
on 2009-03-31 17:04
(Received via mailing list)
Hi,

Just thought I'd share this to save anyone else the bafflement it caused
me.

In ruby 1.8.x and jruby, sleep(0) means do not sleep at all. In 1.9,
it appears to mean sleep forever.

In both cases, sleep with no arguments means sleep forever.

Perhaps differing interpretations of this ambiguous documentation from
ri?

"Zero arguments causes sleep to sleep forever."

Regards,
Sean
0f1f17ba297242e9d3c86d4cc0a6ea85?d=identicon&s=25 Iñaki Baz Castillo (Guest)
on 2009-03-31 19:41
(Received via mailing list)
El Martes 31 Marzo 2009, Sean O'Halpin
escribió:> Hi,
>
> Just thought I'd share this to save anyone else the bafflement it caused
> me.
>
> In ruby 1.8.x and jruby, sleep(0) means do not sleep at all. In 1.9,
> it appears to mean sleep forever.

I've tested it in Ruby 1.9.1 and sleep(0) means do not sleep at all.


> Perhaps differing interpretations of this ambiguous documentation from ri?
>
> "Zero arguments causes sleep to sleep forever."

This must be a doc bug.
E1d641bfe4071a5413bac781f06d3fd1?d=identicon&s=25 Sean O'halpin (sean)
on 2009-04-01 00:55
(Received via mailing list)
On Tue, Mar 31, 2009 at 6:41 PM, Iñaki Baz Castillo <ibc@aliax.net> wrote:
> El Martes 31 Marzo 2009, Sean O'Halpin escribió:
>> Hi,
>>
>> Just thought I'd share this to save anyone else the bafflement it caused
>> me.
>>
>> In ruby 1.8.x and jruby, sleep(0) means do not sleep at all. In 1.9,
>> it appears to mean sleep forever.
>
> I've tested it in Ruby 1.9.1 and sleep(0) means do not sleep at all.

Hmmm.  Just tested on Ubuntu 8.04 and sleep(0) works as expected in
all versions (i.e. it doesn't wait). However, this is what I get on
Mac OS X 10.4:

$ multiruby -rtimeout -e 'Timeout::timeout(2) { sleep(0) }'

[snip working versions]

VERSION = v1_9_1_0
CMD     = ~/.multiruby/install/v1_9_1_0/bin/ruby -rtimeout -e
Timeout::timeout(2) { sleep(0) }

-e:1:in `sleep': execution expired (Timeout::Error)
        from -e:1:in `block in <main>'
        from -e:1:in `<main>'

RESULT = 256

TOTAL RESULT = 1 failures out of 5

Passed: jruby-1.2.0RC2, jruby-1.1.6, v1_8_6_110, 1.8.7-p72
Failed: v1_9_1_0
$ uname -a
Darwin xxxx 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28
PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386

I guess I should file a bug report.

Regards,
Sean
0ec4920185b657a03edf01fff96b4e9b?d=identicon&s=25 Yukihiro Matsumoto (Guest)
on 2009-04-01 05:18
(Received via mailing list)
Hi,

In message "Re: Change of behaviour for sleep(0) in 1.9"
    on Wed, 1 Apr 2009 00:02:20 +0900, "Sean O'Halpin"
<sean.ohalpin@gmail.com> writes:

|Perhaps differing interpretations of this ambiguous documentation from ri?
|"Zero arguments causes sleep to sleep forever."

"Zero arguments" means "sleep", not "sleep(0)".  Disambiguation welcome.

              matz.
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2009-04-01 06:03
(Received via mailing list)
On Mar 31, 2009, at 11:17 PM, Yukihiro Matsumoto wrote:

> "Zero arguments" means "sleep", not "sleep(0)".  Disambiguation
> welcome.
>
>               matz.


"Called without an argument, sleep() will sleep forever."

The fastri output colors the first "sleep" as a Ruby item and leaves
the second "sleep" as a Human item. It also doesn't use the empty
parentheses, but they certainly help in email.

-Rob

Rob Biedenharn    http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
0ec4920185b657a03edf01fff96b4e9b?d=identicon&s=25 Yukihiro Matsumoto (Guest)
on 2009-04-01 06:17
(Received via mailing list)
Hi,

In message "Re: Change of behaviour for sleep(0) in 1.9"
    on Wed, 1 Apr 2009 13:02:58 +0900, Rob Biedenharn
<Rob@AgileConsultingLLC.com> writes:

|"Called without an argument, sleep() will sleep forever."

That sounds better.  Thank you.

              matz.
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2009-04-01 15:51
(Received via mailing list)
2009/4/1 Sean O'Halpin <sean.ohalpin@gmail.com>:
>
> Timeout::timeout(2) { sleep(0) }
> Failed: v1_9_1_0
Hm, works for me:

15:49:23 bas$ allruby -e 'puts Time.now; sleep 0; puts Time.now'
CYGWIN_NT-5.1 padrklemme1 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
Wed Apr 01 15:49:24 +0200 2009
Wed Apr 01 15:49:24 +0200 2009
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-cygwin]
2009-04-01 15:49:25 +0100
2009-04-01 15:49:25 +0100
15:49:25 bas$

Cheers

robert
E1d641bfe4071a5413bac781f06d3fd1?d=identicon&s=25 Sean O'halpin (sean)
on 2009-04-01 18:26
(Received via mailing list)
On Wed, Apr 1, 2009 at 2:50 PM, Robert Klemme
<shortcutter@googlemail.com> wrote:
>
> Hm, works for me:
>
> 15:49:23 bas$ allruby -e 'puts Time.now; sleep 0; puts Time.now'
> CYGWIN_NT-5.1 padrklemme1 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin

Looks like a Mac OSX thing then. I've filed a bug report. Is there
anyone else out there with ruby 1.9 on OSX (10.4 or 10.5) who can
confirm that this is a problem?
Eacf5ed623e72db0b87707baabd6f21a?d=identicon&s=25 Adam Gardner (adamgardner)
on 2009-04-01 19:17
Sean O'halpin wrote:
> On Wed, Apr 1, 2009 at 2:50 PM, Robert Klemme
> <shortcutter@googlemail.com> wrote:
>>
>> Hm, works for me:
>>
>> 15:49:23 bas$ allruby -e 'puts Time.now; sleep 0; puts Time.now'
>> CYGWIN_NT-5.1 padrklemme1 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin
>
> Looks like a Mac OSX thing then. I've filed a bug report. Is there
> anyone else out there with ruby 1.9 on OSX (10.4 or 10.5) who can
> confirm that this is a problem?

$ uname -a
Darwin Machine.local 8.11.0 Darwin Kernel Version 8.11.0: Wed Oct 10
18:26:00 PDT 2007; root:xnu-792.24.17~1/RELEASE_PPC Power Macintosh
powerpc

$ ruby-1.9 -v
ruby 1.9.1p0 (2009-01-30 revision 21907) [powerpc-darwin8.11.0]

$ ruby-1.9 -r Timeout -e 'Timeout.timeout(1) {sleep(0)}'
-e:1:in `sleep': execution expired (Timeout::Error)
        from -e:1:in `block in <main>'
        from -e:1:in `<main>'
$

Seems to be a problem here, too.
This topic is locked and can not be replied to.