[#13161] hacking on the "heap" implementation in gc.c — Lloyd Hilaiel <lloyd@...>

Hi all,

16 messages 2007/11/01

[#13182] Thinking of dropping YAML from 1.8 — Urabe Shyouhei <shyouhei@...>

Hello all.

14 messages 2007/11/03

[#13315] primary encoding and source encoding — David Flanagan <david@...>

I've got a couple of questions about the handling of primary encoding.

29 messages 2007/11/08
[#13331] Re: primary encoding and source encoding — Yukihiro Matsumoto <matz@...> 2007/11/09

Hi,

[#13368] method names in 1.9 — "David A. Black" <dblack@...>

Hi --

61 messages 2007/11/10
[#13369] Re: method names in 1.9 — Yukihiro Matsumoto <matz@...> 2007/11/10

Hi,

[#13388] Re: method names in 1.9 — Charles Oliver Nutter <charles.nutter@...> 2007/11/11

Yukihiro Matsumoto wrote:

[#13403] Re: method names in 1.9 — "Austin Ziegler" <halostatue@...> 2007/11/11

On 11/11/07, Charles Oliver Nutter <charles.nutter@sun.com> wrote:

[#13410] Re: method names in 1.9 — David Flanagan <david@...> 2007/11/11

Austin Ziegler wrote:

[#13413] Re: method names in 1.9 — Charles Oliver Nutter <charles.nutter@...> 2007/11/11

David Flanagan wrote:

[#13423] Re: method names in 1.9 — Jordi <mumismo@...> 2007/11/12

Summing it up:

[#13386] Re: method names in 1.9 — Trans <transfire@...> 2007/11/11

[#13391] Re: method names in 1.9 — Matthew Boeh <mboeh@...> 2007/11/11

On Sun, Nov 11, 2007 at 05:50:18PM +0900, Trans wrote:

[#13457] mingw rename — "Roger Pack" <rogerpack2005@...>

Currently for different windows' builds, the names for RUBY_PLATFORM

13 messages 2007/11/13

[#13485] Proposal: Array#walker — Wolfgang Nádasi-Donner <ed.odanow@...>

Good morning all together!

23 messages 2007/11/14
[#13486] Re: Proposal: Array#walker — Wolfgang Nádasi-Donner <ed.odanow@...> 2007/11/14

A nicer version may be...

[#13488] Re: Proposal: Array#walker — Trans <transfire@...> 2007/11/14

[#13495] Re: Proposal: Array#walker — Trans <transfire@...> 2007/11/14

[#13498] state of threads in 1.9 — Jordi <mumismo@...>

Are Threads mapped to threads on the underlying operating system in

30 messages 2007/11/14
[#13519] Re: state of threads in 1.9 — "Bill Kelly" <billk@...> 2007/11/14

[#13526] Re: state of threads in 1.9 — Eric Hodel <drbrain@...7.net> 2007/11/14

On Nov 14, 2007, at 11:18 , Bill Kelly wrote:

[#13528] test/unit and miniunit — Ryan Davis <ryand-ruby@...>

When is the 1.9 freeze?

17 messages 2007/11/14

[#13564] Thoughts about Array#compact!, Array#flatten!, Array#reject!, String#strip!, String#capitalize!, String#gsub!, etc. — Wolfgang Nádasi-Donner <ed.odanow@...>

Good evening all together!

53 messages 2007/11/15
[#13575] Re: Thoughts about Array#compact!, Array#flatten!, Array#reject!, String#strip!, String#capitalize!, String#gsub!, etc. — "Nikolai Weibull" <now@...> 2007/11/15

On Nov 15, 2007 8:14 PM, Wolfgang N=E1dasi-Donner <ed.odanow@wonado.de> wro=

[#13578] Re: Thoughts about Array#compact!, Array#flatten!, Array#reject!, String#strip!, String#capitalize!, String#gsub!, etc. — Michael Neumann <mneumann@...> 2007/11/16

Nikolai Weibull schrieb:

[#13598] wondering about #tap (was: Re: Thoughts about Array#compact!, Array#flatten!, Array#reject!, String#strip!, String#capitalize!, String#gsub!, etc.) — "David A. Black" <dblack@...> 2007/11/16

Hi --

[#13605] Re: wondering about #tap (was: Re: Thoughts about Array#compact!, Array#flatten!, Array#reject!, String#strip!, String#capitalize!, String#gsub!, etc.) — Trans <transfire@...> 2007/11/16

[#13612] Re: wondering about #tap (was: Re: Thoughts about Array#compact!, Array#flatten!, Array#reject!, String#strip!, String#capitalize!, String#gsub!, etc.) — "David A. Black" <dblack@...> 2007/11/16

Hi --

[#13624] Re: wondering about #tap (was: Re: Thoughts about Array#compact!, Array#flatten!, Array#reject!, String#strip!, String#capitalize!, String#gsub!, etc.) — "Nikolai Weibull" <now@...> 2007/11/16

On Nov 16, 2007 12:40 PM, David A. Black <dblack@rubypal.com> wrote:

[#13632] Re: wondering about #tap — David Flanagan <david@...> 2007/11/16

David A. Black wrote:

[#13634] Re: wondering about #tap — "David A. Black" <dblack@...> 2007/11/16

Hi --

[#13636] Re: wondering about #tap — "Rick DeNatale" <rick.denatale@...> 2007/11/16

On Nov 16, 2007 12:40 PM, David A. Black <dblack@rubypal.com> wrote:

[#13637] Re: wondering about #tap — murphy <murphy@...> 2007/11/16

Rick DeNatale wrote:

[#13640] Re: wondering about #tap — Wolfgang Nádasi-Donner <ed.odanow@...> 2007/11/16

murphy schrieb:

[#13614] Suggestion for native thread tests — "Eust痃uio Rangel" <eustaquiorangel@...>

Hi!

12 messages 2007/11/16

[#13685] Problems with \M-x in utf-8 encoded strings — Wolfgang Nádasi-Donner <ed.odanow@...>

Hi!

11 messages 2007/11/18

[#13741] retry semantics changed — Dave Thomas <dave@...>

In 1.8, I could write:

46 messages 2007/11/23
[#13742] Re: retry semantics changed — "Brian Mitchell" <binary42@...> 2007/11/23

On Nov 23, 2007 12:06 PM, Dave Thomas <dave@pragprog.com> wrote:

[#13743] Re: retry semantics changed — Dave Thomas <dave@...> 2007/11/23

[#13746] Re: retry semantics changed — Yukihiro Matsumoto <matz@...> 2007/11/23

Hi,

[#13747] Re: retry semantics changed — Dave Thomas <dave@...> 2007/11/23

[#13748] Re: retry semantics changed — Yukihiro Matsumoto <matz@...> 2007/11/23

Hi,

[#13749] Re: retry semantics changed — Dave Thomas <dave@...> 2007/11/23

Re: Frightening retry behavior should be deprecated and removed

From: Evan Phoenix <evan@...>
Date: 2007-11-09 08:20:23 UTC
List: ruby-core #13333
On Nov 8, 2007, at 10:22 PM, David Flanagan wrote:

> Yukihiro Matsumoto wrote:
>> Hi,
>> In message "Re: Frightening retry behavior should be deprecated and  
>> removed"
>>    on Wed, 7 Nov 2007 16:05:42 +0900, Charles Oliver Nutter <charles.nutter@sun.com 
>> > writes:
>> |I do not believe a target method should be able to cause the  
>> caller |method to behave this way. I believe this behavior should  
>> be |deprecated/removed.
>> Since this feature is removed from 1.9, you can officially ignore  
>> this.
>> 							matz.
>
> It appears that retry can still do its magic re-evaluate the  
> expression that invoked the iterator thing.  But you can't hide the  
> retry in a method or lambda definition, it can only appear in a  
> block attached to the iterator, which makes it less frightening,  
> since the person writing the method invocation expression that may  
> be retried is the same person writing the retry statement.
>

Given the fact that retry in a method is gone, I believe we should  
eliminate it in a block too. Consider the following code:

def thing(a); yield; end
i = 1
(puts "suck #{i}"; 1).thing(i += 1) { retry }

# Prints suck 1, suck 2, suck 3, etc. to infinite.

Again, we have the same dangerous semantics Charlie outlined with the  
retry in a method.

The programmer locality is better since hopefully they wrote the  
retry. But then consider:

b = proc { retry }
def thing(a); yield; end
i = 1
(puts "suck #{i}"; 1).thing(i += 1, &b)

# Again, prints suck 1, suck 2, suck 3, etc. to infinite.

This has exactly the same problems the method retry does. Very  
dangerous, terrible locality.

Given the fact that retry in a block is used only one place ever I've  
seen (in drb to try a remote call again), it is again a scary corner  
that programmers don't go into.

Please lets eliminate retry anywhere but in an exception handler.

  - Evan

> Matz: would it be correct to say that retry is now only allowed in  
> rescue clauses and in blocks? And that it only works for local  
> invocations of blocks, not in invocations of Procs?
>
> This code still works in 1.9:
>
> $tries = 0
> (1..3).each { |x|
>  print x;
>  if x==3
>    if $tries < 3
>      $tries += 1
>      retry
>    end
>  end
> }
>
> But it doesn't work if we change the block to a Proc:
> $tries = 0
> (1..3).each &lambda{ |x|
>  print x;
>  if x==3
>    if $tries < 3
>      $tries += 1
>      retry
>    end
>  end
> }
>
> And the fake-out-a-looping method thing does not work.
>
> # Does not work in 1.9
> def repeat_while(x)
>  if x     # If the condition was not nil or false
>    yield  # Run the body of the loop
>    retry  # Retry and re-evaluate loop condition
>  end
> end
>
> x = 5
> repeat_while(x > 0) {
>  puts x
>  x -= 1
> }
>
>
>
>


In This Thread