[#39810] 2.0 feature questionnaire — SASADA Koichi <ko1@...>

I made a questionnaire "What do you want to introduce in 2.0?" in my

59 messages 2011/10/01
[#39822] Re: 2.0 feature questionnaire — Jeremy Kemper <jeremy@...> 2011/10/02

2011/10/1 SASADA Koichi <ko1@atdot.net>:

[#39827] Re: 2.0 feature questionnaire — Yukihiro Matsumoto <matz@...> 2011/10/02

Hi,

[#40324] Re: 2.0 feature questionnaire — Charles Oliver Nutter <headius@...> 2011/10/25

2011/10/1 SASADA Koichi <ko1@atdot.net>:

[#39823] Discussion results — SASADA Koichi <ko1@...>

Hi,

34 messages 2011/10/02
[#39840] Re: Discussion results — Intransition <transfire@...> 2011/10/02

I did not have the fortune of attending the discussion, but I would

[#39844] Re: Discussion results — Yukihiro Matsumoto <matz@...> 2011/10/02

Hi,

[#39851] Re: Discussion results (here documents with indents) — "Martin J. Dürst" <duerst@...> 2011/10/03

Hello Matz,

[#39862] Re: Discussion results (here documents with indents) — Yusuke Endoh <mame@...> 2011/10/03

Hello,

[#39874] Re: Discussion results (here documents with indents) — Trans <transfire@...> 2011/10/03

On Mon, Oct 3, 2011 at 8:16 AM, Yusuke Endoh <mame@tsg.ne.jp> wrote:

[#39915] [Ruby 1.9 - Feature #5400][Open] Remove flip-flops in 2.0 — Magnus Holm <judofyr@...>

29 messages 2011/10/04

[#39957] [Ruby 1.9 - Bug #5407][Open] Cannot build ruby-1.9.3-rc1 with TDM-GCC 4.6.1 on Windows XP SP3 — Heesob Park <phasis@...>

11 messages 2011/10/05

[#39993] [Ruby 1.9 - Feature #2348] RBTree Should be Added to the Standard Library — David Graham <david.malcom.graham@...>

10 messages 2011/10/06

[#40037] [Ruby 1.9 - Bug #5422][Open] File.fnmatch != Dir.glob # {no,sets} — Suraj Kurapati <sunaku@...>

14 messages 2011/10/07

[#40073] [Ruby 1.9 - Feature #5427][Open] Not complex patch to improve `require` time (load.c) — Yura Sokolov <funny.falcon@...>

31 messages 2011/10/09

[#40090] [Ruby 1.9 - Bug #5433][Open] PTY.spawn Kernel panic on macos lion — Gamaliel Toro <argami@...>

14 messages 2011/10/10

[#40188] [Ruby 2.0 - Feature #5454] keyword arguments — Yukihiro Matsumoto <matz@...>

16 messages 2011/10/17
[#40189] Re: [Ruby 2.0 - Feature #5454] keyword arguments — Evan Phoenix <evan@...> 2011/10/17

This looks very interesting=21 Would someone be willing to translate to e=

[#40191] Re: [Ruby 2.0 - Feature #5454] keyword arguments — Yutaka Hara <yutaka.hara@...> 2011/10/18

Hi,

[#40192] Re: [Ruby 2.0 - Feature #5454] keyword arguments — Yukihiro Matsumoto <matz@...> 2011/10/18

Hi,

[#40259] Counseling — Perry Smith <pedzsan@...>

Ruby and I are back in counseling... Its always the same thing with =

21 messages 2011/10/21
[#40263] Re: Counseling — "Haase, Konstantin" <Konstantin.Haase@...> 2011/10/21

What's your $LC_CTYPE? What OS are you on?

[#40264] Re: Counseling — Gon軋lo Silva <goncalossilva@...> 2011/10/21

Hi all,

[#40266] Re: Counseling — Bill Kelly <billk@...> 2011/10/21

Gon軋lo Silva wrote:

[#40271] Can rubygems save us from "binary-compatibility hell"? — Yusuke Endoh <mame@...>

Hello, rubygems developers --

17 messages 2011/10/22

[#40290] [ruby-trunk - Feature #5474][Assigned] keyword argument — Yusuke Endoh <mame@...>

36 messages 2011/10/23
[#40298] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Yukihiro Matsumoto <matz@...> 2011/10/24

Hi,

[#40414] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Charles Oliver Nutter <headius@...> 2011/10/26

More refinement below. I think we're on a good path here.

[#40416] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Yukihiro Matsumoto <matz@...> 2011/10/26

Hi,

[#40418] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Joshua Ballanco <jballanc@...> 2011/10/26

On Wed, Oct 26, 2011 at 2:08 PM, Yukihiro Matsumoto <matz@ruby-lang.org>wrote:

[#40425] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Yukihiro Matsumoto <matz@...> 2011/10/27

Hi,

[#40311] [ruby-trunk - Feature #5478][Open] import Set into core, add syntax — Konstantin Haase <Konstantin.Haase@...>

33 messages 2011/10/24

[#40312] [ruby-trunk - Feature #5479][Open] import StringIO into core, add String#to_io — Konstantin Haase <Konstantin.Haase@...>

9 messages 2011/10/24

[#40316] [ruby-trunk - Feature #5481][Open] Gemifying Ruby standard library — Hiroshi Nakamura <nakahiro@...>

86 messages 2011/10/24
[#40334] [ruby-trunk - Feature #5481] Gemifying Ruby standard library — Lucas Nussbaum <lucas@...> 2011/10/25

[#40322] [ruby-trunk - Feature #5482][Open] Rubinius as basis for Ruby 2.0 — Thomas Sawyer <transfire@...>

19 messages 2011/10/25

[#40356] JIT development for MRI — Carter Cheng <cartercheng@...>

Hello,

25 messages 2011/10/25
[#40390] Re: JIT development for MRI — SASADA Koichi <ko1@...> 2011/10/26

Hi,

[#40394] Re: JIT development for MRI — Carter Cheng <cartercheng@...> 2011/10/26

Dear Koichi SASADA,

[#40395] Re: JIT development for MRI — Carter Cheng <cartercheng@...> 2011/10/26

I noticed that you used context threading in YARV. Do you have some analysis

[#40417] Re: JIT development for MRI — SASADA Koichi <ko1@...> 2011/10/26

Thanks for reference.

[#40423] Re: JIT development for MRI — Carter Cheng <cartercheng@...> 2011/10/26

Thanks Koichi.

[#40412] [ruby-trunk - Bug #5486][Open] rb_stat() doesn’t respect input encoding — Nikolai Weibull <now@...>

15 messages 2011/10/26

[#40462] [ruby-trunk - Bug #5492][Open] MinGW Installation with Ruby 1.9.3rc1 Broken — Charlie Savage <cfis@...>

14 messages 2011/10/27

[#40573] [ruby-trunk - Bug #5530][Open] SEEK_SET malfunctions when used with 'append' File.open mode — "Joshua J. Drake" <ruby-lang.jdrake@...>

17 messages 2011/10/31

[#40586] [ruby-trunk - Feature #5531][Open] deep_value for dealing with nested hashes — Kyle Peyton <kylepeyton@...>

19 messages 2011/10/31

[ruby-core:40351] Re: 2.0 feature questionnaire

From: Charles Oliver Nutter <headius@...>
Date: 2011-10-25 13:24:32 UTC
List: ruby-core #40351
On Tue, Oct 25, 2011 at 7:31 AM, Michal Suchanek <hramrach@centrum.cz> wrot=
e:
>> Shouldn't local variable encapsulation be sacred?
>>
>> Get rid of it.
>
> No, thanks.
>
> You need to pass variables into blocks.
>
> Would you have to explicitly declare passed variables?
>
> That's kind of non-ruby.
>
> There are very few places where declarations are needed, and adding to
> that would be sad.
>
> While declarations have their place in programming the languages using
> them aren't Ruby.
>
> Yes, Java does, for sure.

You totally missed the point. You do know what's meant by "Proc binding", r=
ight?

I'm not saying to get rid of closed-over variables or require you to
declare what variables a block has access to...that would be idiotic.
I'm saying a Proc should not be usable as the binding for a subsequent
eval. Read my example again. Currently in Ruby, whether you access the
local variables from the block or not, anyone can take your block (as
a proc) and eval code against it to access all closed-over state: the
current object, local variables, constants...everything. It's a big
fat encapsulation hole that has the additional bonus of making it much
harder to optimize around closed-over variables.

And I don't understand why you even bring up Java. Aren't we talking
about Ruby here?

>> I've had an alternate idea to accomplish something like a compromise, bu=
t
>> I'm still a ways away from having anything like a patch.
>> The idea is this: make Proc#freeze snapshot all bindings.
>> Essentially, telling a Proc to freeze would cause all bindings in the pr=
oc
>> to be evaluated and replaced with their value at that moment. These valu=
es,
>> themselves, would then be frozen, and references to the original code bl=
ocks
>> could be released. Requiring an extra method call to accomplish this is
>> slightly inconvenient, but it would keep Ruby 2.0 "backwards compatible"=
 (in
>> quotes because really? does anybody sensible actually abuse proc binding=
s
>> like this?). The hope would be that eventually everyone would get into t=
he
>> habit of freezing their procs and eventually this could become the defau=
lt
>> behavior.
>
> Maybe you could go a step further and make auto-freeze the default and
> only add a switch to make the bindings non-frozen for compatibility if
> somebody really needs that.
>
> But I do abuse non-frozen bindings regularly.
>
> When I need an accumulator for results that calculated inside a block
> I declare a variable just before the method call that uses the block.
>
> something like:
>
> str =3D ""
>
> some_stuff.do.something.that.gets.me.an.io{|io|
> =C2=A0 =C2=A0begin
> =C2=A0 =C2=A0 =C2=A0 =C2=A0loop do
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0str << (io.readpartial READSIZE)
> =C2=A0 =C2=A0 =C2=A0 =C2=A0end
> =C2=A0 =C2=A0rescue EOFError
> =C2=A0 =C2=A0end
> }

Again, you've missed the point.

If this "binding" were frozen, your code would not change at all. You
don't assign any variables from the enclosing scope...you modify a
value in the "str" variable, but the "str" variable itself is never
written.

And you're not using a "binding" here at all. The binding we're
talking about is the one used by eval calls, not normal block/closure
variable access. Because every block can be used as an eval binding,
it has to carry with it all enclosing state. See my reply above for
the long description and re-read my example.

- Charlie

In This Thread