[#11890] Ruby and Solaris door library — "Hiro Asari" <asari.ruby@...>

Hi, there. This is my first patch against ruby. I think I followed

19 messages 2007/08/13
[#11892] Re: Ruby and Solaris door library — Daniel Berger <djberg96@...> 2007/08/14

Hiro Asari wrote:

[#11899] pack/unpack 64bit Integers — Hadmut Danisch <hadmut@...>

Hi,

13 messages 2007/08/14
[#11903] Re: pack/unpack 64bit Integers — Brian Candler <B.Candler@...> 2007/08/15

On Wed, Aug 15, 2007 at 06:50:01AM +0900, Hadmut Danisch wrote:

[#11948] Fibers in Ruby 1.9? — David Flanagan <david@...>

I just noticed that my ruby1.9 build of August 17th includes a Fiber

22 messages 2007/08/22
[#11949] Re: Fibers in Ruby 1.9? — Daniel Berger <djberg96@...> 2007/08/22

David Flanagan wrote:

[#11950] Re: Fibers in Ruby 1.9? — "Francis Cianfrocca" <garbagecat10@...> 2007/08/22

On 8/22/07, Daniel Berger <djberg96@gmail.com> wrote:

[#11952] Re: Fibers in Ruby 1.9? — MenTaLguY <mental@...> 2007/08/22

On Wed, 22 Aug 2007 20:50:12 +0900, "Francis Cianfrocca" <garbagecat10@gmail.com> wrote:

[#11988] String#length not working properly in Ruby 1.9 — "Vincent Isambart" <vincent.isambart@...>

I saw that Matz just merged his M17N implementation in the trunk.

17 messages 2007/08/25
[#11991] Re: String#length not working properly in Ruby 1.9 — "Michael Neumann" <mneumann@...> 2007/08/25

On Sat, 25 Aug 2007 10:54:20 +0200, Yukihiro Matsumoto

[#11992] Re: String#length not working properly in Ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/08/25

Hi,

[#12042] Encodings of string literals; explicit codepoint escapes? — David Flanagan <david@...>

This message contains queries that probably only Matz can answer:

16 messages 2007/08/31
[#12043] Re: Encodings of string literals; explicit codepoint escapes? — Yukihiro Matsumoto <matz@...> 2007/08/31

Hi,

Re: Fibers in Ruby 1.9?

From: SASADA Koichi <ko1@...>
Date: 2007-08-27 16:29:58 UTC
List: ruby-core #12012
Hi,

Charles Oliver Nutter wrote:
> Is there any documented specification for Fibers yet? I've got basic
> Fibers working in JRuby using native threads (first two tests in your
> test_fiber pass), but I'm not clear on the semantics of a few methods. I
> also don't have it working for a "normal" thread to participate as a
> fiber (i.e. Fiber.current only works within an explicitly-created fiber
> at the moment).
> 
> There are also some interesting questions I have to resolve regarding
> fibers in a concurrent native-threaded VM.
> 
> Pointers to documentation would be appreciated :)

I think Fiber class is not needed for most of people.  Because 1.9
support Enumerator as outer iterater (I'm not sure about this
nameing) such as Java's Iterator or Python's Generator or Ruby's
'generator' library and so on.

  en = 3.times # Calling Fixnum#times without
               # block return Enumerator
  p en.next #=> 0
  p en.next #=> 1
  p en.next #=> 2
  p en.next #=> call exception: StroIteration

  en.rewind
  loop{
    p en.next #=> 0, 1, 2
  } # loop method catch StopIteration

Main purpose of Fiber is to realise outer iterator.  In fact,
Enumerator#next using Fiber.  So I think ruby/test_enumerator.rb is
more important test than implement Fiber's methods.


BTW, I can't summarise Fiber's document because I must write doctor
thesis (it's about Ruby/YARV) :)  So please wait for middle of Sep.
Can Matz or someone write it?


Easy instruction:
=================

Fiber#resume
  Resume Fiber's context.

Fiber.yield(...)
  return values to resuming context.

example:
  f = Fiber.new{
    Fiber.yield 1
    Fiber.yield 2
    Fiber.yield 3
  }
  f.resume #=> 1
  f.resume #=> 2
  f.resume #=> 3

Fiber.current
  return current fiber.

Fiber#alive?
  return if this fiber is alive or not.

Fiber#transfer
  tranfer fiber context.  This method break resume/yield
(parent/child) relation, so we shouldn't use it (this method is
similar to callcc).

example:
  f1 = Fiber.current
  f2 = Fiber.new{
    f3.transfer 10
  }
  f3 = Fiber.new{|e|
    f1.transfer e + 20
  }
  p f1.resume #=> 30


fiber.so
  If you require fiber.so, above Fiber methods are added.
  This library is for professional (for what?).

continuation,so
  If you require continuation.so, callcc is available.
  I want to rename this library as unsafe/continuation.so
  or somthing.



Regards,
-- 
// SASADA Koichi at atdot dot net

In This Thread