[#25272] [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Yui NARUSE <redmine@...>

Feature #2032: Change the license to "GPLv2+ or Ruby's original".

51 messages 2009/09/02
[#25368] [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Kazuhiko Shiozaki <redmine@...> 2009/09/04

Issue #2032 has been updated by Kazuhiko Shiozaki.

[#25461] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Gregory Brown <gregory.t.brown@...> 2009/09/07

On Fri, Sep 4, 2009 at 1:10 PM, Kazuhiko Shiozaki<redmine@ruby-lang.org> wrote:

[#25463] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Yukihiro Matsumoto <matz@...> 2009/09/08

Hi,

[#30610] [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Shyouhei Urabe <redmine@...> 2010/06/06

Issue #2032 has been updated by Shyouhei Urabe.

[#30611] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Yusuke ENDOH <mame@...> 2010/06/06

Hi,

[#30614] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Urabe Shyouhei <shyouhei@...> 2010/06/06

> To avoid enbugging a new bug, we must choose the another solutions.

[#30616] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Yusuke ENDOH <mame@...> 2010/06/06

2010/6/6 Urabe Shyouhei <shyouhei@ruby-lang.org>:

[#30652] Re: [Feature #2032] Change the license to "GPLv2+ or Ruby's original". — Urabe Shyouhei <shyouhei@...> 2010/06/08

(2010/06/06 20:27), Yusuke ENDOH wrote:

[#25285] [Feature #2033] Move Core Development to Git — Run Paint Run Run <redmine@...>

Feature #2033: Move Core Development to Git

75 messages 2009/09/02
[#25290] [Feature #2033] Move Core Development to Git — Yui NARUSE <redmine@...> 2009/09/02

Issue #2033 has been updated by Yui NARUSE.

[#25297] Re: [Feature #2033] Move Core Development to Git — Jon <jon.forums@...> 2009/09/02

> Some commiter of Ruby live on Windows.

[#25342] Re: [Feature #2033] Move Core Development to Git — Urabe Shyouhei <shyouhei@...> 2009/09/03

Jon wrote:

[#25343] Re: [Feature #2033] Move Core Development to Git — Michal Suchanek <hramrach@...> 2009/09/03

2009/9/4 Urabe Shyouhei <shyouhei@ruby-lang.org>:

[#25345] Re: [Feature #2033] Move Core Development to Git — Urabe Shyouhei <shyouhei@...> 2009/09/03

Michal Suchanek wrote:

[#25299] Re: [Feature #2033] Move Core Development to Git — Eric Hodel <drbrain@...7.net> 2009/09/02

On Sep 2, 2009, at 11:19, Run Paint Run Run wrote:

[#25306] [Feature #2034] Consider the ICU Library for Improving and Expanding Unicode Support — Run Paint Run Run <redmine@...>

Feature #2034: Consider the ICU Library for Improving and Expanding Unicode Support

16 messages 2009/09/03

[#25394] Unmaintained code (Was: Move Core Development to Git) — Eric Hodel <drbrain@...7.net>

On Sep 4, 2009, at 02:16, Urabe Shyouhei wrote:

10 messages 2009/09/05

[#25420] [Bug #2054] Onigurma Isn't Documented — Run Paint Run Run <redmine@...>

Bug #2054: Onigurma Isn't Documented

17 messages 2009/09/05

[#25442] turning off indentation warnings — Aaron Patterson <aaron@...>

Is there a way in 1.9 to turn off only indentation warnings? I like

19 messages 2009/09/06
[#25510] Re: turning off indentation warnings — Nobuyoshi Nakada <nobu@...> 2009/09/10

Hi,

[#25511] [Bug #2079] win32ole's OLEGEN does not create all classes needed when a TLB has more than one class defined — Bruno Antunes <redmine@...>

Bug #2079: win32ole's OLEGEN does not create all classes needed when a TLB has more than one class defined

18 messages 2009/09/10

[#25644] [Bug #2121] mathn/rational destroys Fixnum#/, Fixnum#quo and Bignum#/, Bignum#quo — Charles Nutter <redmine@...>

Bug #2121: mathn/rational destroys Fixnum#/, Fixnum#quo and Bignum#/, Bignum#quo

12 messages 2009/09/19

[#25709] [Bug #2131] f(not x) => syntax error — "James M. Lawrence" <redmine@...>

Bug #2131: f(not x) => syntax error

16 messages 2009/09/22

[#25769] A challenge: Enumerator#next in JRuby — Charles Oliver Nutter <headius@...>

I have a challenge for anyone who wants to discuss, propose

25 messages 2009/09/25
[#25782] Re: A challenge: Enumerator#next in JRuby — Tanaka Akira <akr@...> 2009/09/26

In article <f04d2210909251312q46bd51c0teacc4b0a8c417f0c@mail.gmail.com>,

[#25820] [Feature #2152] Split functionality of Float#inspect and Float#to_s — Roger Pack <redmine@...>

Feature #2152: Split functionality of Float#inspect and Float#to_s

32 messages 2009/09/28

[#25853] [Bug #2160] JSON can't parse input where top-level object is a string — caleb clausen <redmine@...>

Bug #2160: JSON can't parse input where top-level object is a string

11 messages 2009/09/29

[ruby-core:25778] Re: A challenge: Enumerator#next in JRuby

From: Charles Oliver Nutter <headius@...>
Date: 2009-09-26 00:50:19 UTC
List: ruby-core #25778
On Fri, Sep 25, 2009 at 6:43 PM, Brian Mitchell <binary42@gmail.com> wrote:
> Now it has been pointed out that Fibers are currently really slow. It
> is kind of sad that the current implementation has these limitations
> but there is no reason that certain platforms could use much more
> efficient code paths for faster fiber operation. Examples of how big
> of a difference this can make can be seen in projects like LuaJIT [1].

Note that the "Coco" project you mention appears to use setjmp and
save the C stack, similar to Continuations and
Enumerator#next/Generators in 1.8 and 1.9 and Fiber in 1.9.

The only implementations of fast coroutines I have know of are those
that are greatly simplified (Python's) or that pass all state along so
there's no stack-hopping (several FP langs).

> The fact that garbage may be referenced is really a bad side effect of
> keeping the iterator around far too long in some scope. I think this
> is a problem of both iterations, though dealing with native threads is
> certainly going to make thread management a harder problem.

The problem is a little more involved, unfortunately. We need to make
sure that the thread running the enumeration doesn't strongly
reference the enumerator itself. If we can guarantee that, then when
the enumerator is dereferenced and collected the thread can be
canceled and shut down. But relying on GC to shut down those threads
is going to be problematic in itself, even if we can avoid
accidentally rooting the enumerator itself.

But you are right about one aspect...if the enumerator stays
referenced, the "fiber-like" entity remains referenced and should stay
alive, and anything it references on its execution stacks must remain
referenced. I smell lots of opportunities for leaks :(

> For JRuby I would consider using a combination of the noted options
> rather than just one. First, I would keep optimized Enumerator objects
> for native type. This should be doable with most common collections
> avoid threads and expensive context switching. We all love speed for
> the common case. Next, I would consider having a thread pool around
> for spinning up new iteration fibers for the cases of non-native
> streams. I have the feeling that enumerators will become more
> commonplace in Ruby code so this might be a good pattern to support
> (generator - consumer pairs are quite useful).

We can create specialized enumerators for every implementation in
JRuby, and will likely do so to avoid an explosion of threads if
people start using Enumerator#next a lot. But we have to do that work,
and it will take some time. Right now if you run JRuby and use
Enumerator#next you'll see threads spin up...and never go away. It's a
known issue that will probably remain for 1.4RC1, but it has to be
fixed before 1.4 final.

As far as Fibers go: in 1.9 mode we do have a pool, and will probably
do something similar for Enumerator#next generators soon. But it still
limits how many you can be doing at the same time, and we're at the
mercy of the GC as to when we'll shut down threads and release
resources associated with them.

> Longer term, I would find it interesting to discuss ways we can
> express multi-stream operations in a safe way that allow the
> implementation to perform intelligent fetching and fusion operations.
> One thought is a list comprehension form which can help avoid common
> problems in reducing dynamically dispatched calls.

I'm open to having this discussion, certainly. And I'll say it
again..I agree that the generator/enumerator/coroutine model is very
useful; but allowing it over arbitrarily complex iteration logic and
requiring all implementations to support or emulate delimited
continuations is a serious problem today.

- Charlie

In This Thread