[#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: MenTaLguY <mental@...>
Date: 2007-08-22 18:45:02 UTC
List: ruby-core #11958
On Thu, 23 Aug 2007 00:57:01 +0900, "Francis Cianfrocca" <garbagecat10@gmail.com> wrote:
> Wouldn't Fibers make things harder for everything but Windows? Linux has
> no equivalent construct whatsoever.

Untrue: there's GNU pth, for instance.  Fibers (or equivalent) don't
require much in the way of kernel support and can generally be done as
a user library.  All you need is the ability to save/restore the stack and
register contents, which also happens to be the minimum requirement for
implementing threads the same way that Ruby 1.8 does them (though most
user-thread implementations swap the stack pointer rather than the
entire contents of the stack...).

The problem for JRuby is that the JVM doesn't offer such a facility, so
you're faced with a choice between using native Java threads, explicitly
calling into a scheduler with a continuation, doing bytecode rewriting
in a custom classloader to simulate such a facility by using exceptions to
unwind/restore the stack, or running a stack machine/interpreter atop the
JVM whose stack you can manipulate.  None of those options is especially
lightweight except explicit continuation-passing, but then that isn't
transparent to use.

> (Of course in the later Linux kernels, the Linux threads, which
> actually are LWPs, don't have nearly as much scheduling overhead as
> they used to.)

To the extent that the Linux kernel has had any thread support at all,
kernel threads have always been ordinary processes that share an address
space and file descriptor table.

Prior to the implementation of address space sharing, the only option
was manipulating the CPU state from user-space (as done by pth and I
_think_ the first Linux pthreads implementation), which even now has
less scheduling overhead than kernel threads (although process
scheduling under Linux is unusually cheap compared to most operating
system kernels).

Anyway, fibers can be a useful thing to have as a foundation for
lightweight concurrency, even in the presence of native threads (e.g. you
can have a worker thread per CPU, each one executing fiber-based tasks
from a work pool), although there are portability trade-offs with respect
to environments like the JVM.

-mental


In This Thread