Status of Cardinal (was Re: Proposal to create a new mailing list)

[deleted] Cardinal (Ruby on Parrot, which may or may not be dead)

It's not dead, it's pining for the fjords. No, actually, Kevin Tew, the
maintainer, has been bogged down with school related issues the
last two months, but has told me that he's chomping at the bit to
start chasing Cardinal again.

You can track his progress at:
   http://http://cardinal2.rubyforge.org/

(The original cardinal project appears to be dead, and Kevin's had
no luck raising the maintainer to get the project transferred -- if
anyone's up to helping with with that, Kevin would probably
appreciate it.)

···

On 12/30/06, Gregory Seidman <gsslist+ruby@anthropohedron.net> wrote:

[deleted]
--Greg

--
thanks,
-pate
-------------------------

I think Ruby/Parrot is pretty interesting. Anyone else interested
enough to put some time into it?

···

On 12/30/06, pat eyler <pat.eyler@gmail.com> wrote:

On 12/30/06, Gregory Seidman <gsslist+ruby@anthropohedron.net> wrote:
> [deleted] Cardinal (Ruby on Parrot, which may or may not be dead)

It's not dead, it's pining for the fjords. No, actually, Kevin Tew, the
maintainer, has been bogged down with school related issues the
last two months, but has told me that he's chomping at the bit to
start chasing Cardinal again.

You can track his progress at:
   http://http://cardinal2.rubyforge.org/

(The original cardinal project appears to be dead, and Kevin's had
no luck raising the maintainer to get the project transferred -- if
anyone's up to helping with with that, Kevin would probably
appreciate it.)

>[deleted]
> --Greg
>
--
thanks,
-pate
-------------------------
http://on-ruby.blogspot.com

Francis Cianfrocca wrote:

> [deleted] Cardinal (Ruby on Parrot, which may or may not be dead)

It's not dead, it's pining for the fjords. No, actually, Kevin Tew, the
maintainer, has been bogged down with school related issues the
last two months, but has told me that he's chomping at the bit to
start chasing Cardinal again.

You can track his progress at:
   http://http://cardinal2.rubyforge.org/

(The original cardinal project appears to be dead, and Kevin's had
no luck raising the maintainer to get the project transferred -- if
anyone's up to helping with with that, Kevin would probably
appreciate it.)

>[deleted]
> --Greg
>
--
thanks,
-pate
-------------------------
http://on-ruby.blogspot.com

I think Ruby/Parrot is pretty interesting. Anyone else interested
enough to put some time into it?

Well ... I'm not! Don't you think jRuby, Rubinius, "Microsoft Ruby", and YARV are enough? jRuby and "Microsoft Ruby" have industrial support, Rubinius and YARV have vibrant communities and core teams of excellent hackers. The other two -- Cardinal and the vmgen/Forth version, whose name I've forgotten -- have languished as half-person projects.

At one point I considered reviving the vmgen one because I'm a Forth hacker (I know Forth better than I know C, in fact), but once I learned that YARV had adopted direct threading and a stack machine -- the two core ideas behind vmgen -- I abandoned that idea in a big hurry. Parrot is a *register* machine because it caters to assembler programmers who grew up on things like the Motorola 68000 and System\360, not because that's the "right way" to build a virtual machine for dynamic languages. :slight_smile:

···

On 12/30/06, pat eyler <pat.eyler@gmail.com> wrote:

On 12/30/06, Gregory Seidman <gsslist+ruby@anthropohedron.net> wrote:

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

Exactly. I wasn't going to chime in until someone broke the ice.. but
the Parrot team basically can't explain the design rationale. It's
even featured in a solid book about virtual machines, along with a
narrative that amounts to: "Uhh.. umm.. this is certainly an
interesting way to go about it."

From Ruby's perspective, it also has the odd feature of having
separate registers for Strings and for Objects. *shudder*

Anyone who wants to hack on a Ruby VM will receive a warm welcome in
the arms of Rubinius. :slight_smile:

P.S. I have the utmost respect for Parrot's implementation team. It's
just not the VM I want to see for Ruby.

···

On 12/30/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

Francis Cianfrocca wrote:
> On 12/30/06, pat eyler <pat.eyler@gmail.com> wrote:
>> On 12/30/06, Gregory Seidman <gsslist+ruby@anthropohedron.net> wrote:
>> > [deleted] Cardinal (Ruby on Parrot, which may or may not be dead)
>>
>> It's not dead, it's pining for the fjords. No, actually, Kevin Tew, the
>> maintainer, has been bogged down with school related issues the
>> last two months, but has told me that he's chomping at the bit to
>> start chasing Cardinal again.
>>
>> You can track his progress at:
>> http://http://cardinal2.rubyforge.org/
>>
>> (The original cardinal project appears to be dead, and Kevin's had
>> no luck raising the maintainer to get the project transferred -- if
>> anyone's up to helping with with that, Kevin would probably
>> appreciate it.)
>>
>> >[deleted]
>> > --Greg
>> >
>> --
>> thanks,
>> -pate
>> -------------------------
>> http://on-ruby.blogspot.com
>>
>
> I think Ruby/Parrot is pretty interesting. Anyone else interested
> enough to put some time into it?
>
Well ... I'm not! Don't you think jRuby, Rubinius, "Microsoft Ruby", and
YARV are enough? jRuby and "Microsoft Ruby" have industrial support,
Rubinius and YARV have vibrant communities and core teams of excellent
hackers. The other two -- Cardinal and the vmgen/Forth version, whose
name I've forgotten -- have languished as half-person projects.

At one point I considered reviving the vmgen one because I'm a Forth
hacker (I know Forth better than I know C, in fact), but once I learned
that YARV had adopted direct threading and a stack machine -- the two
core ideas behind vmgen -- I abandoned that idea in a big hurry. Parrot
is a *register* machine because it caters to assembler programmers who
grew up on things like the Motorola 68000 and System\360, not because
that's the "right way" to build a virtual machine for dynamic languages. :slight_smile:

And another interesting idea bites the dust.

···

On 12/30/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

Francis Cianfrocca wrote:
> On 12/30/06, pat eyler <pat.eyler@gmail.com> wrote:
>> On 12/30/06, Gregory Seidman <gsslist+ruby@anthropohedron.net> wrote:
>> > [deleted] Cardinal (Ruby on Parrot, which may or may not be dead)
>>
>> It's not dead, it's pining for the fjords. No, actually, Kevin Tew, the
>> maintainer, has been bogged down with school related issues the
>> last two months, but has told me that he's chomping at the bit to
>> start chasing Cardinal again.
>>
>> You can track his progress at:
>> http://http://cardinal2.rubyforge.org/
>>
>> (The original cardinal project appears to be dead, and Kevin's had
>> no luck raising the maintainer to get the project transferred -- if
>> anyone's up to helping with with that, Kevin would probably
>> appreciate it.)
>>
>> >[deleted]
>> > --Greg
>> >
>> --
>> thanks,
>> -pate
>> -------------------------
>> http://on-ruby.blogspot.com
>>
>
> I think Ruby/Parrot is pretty interesting. Anyone else interested
> enough to put some time into it?
>
Well ... I'm not! Don't you think jRuby, Rubinius, "Microsoft Ruby", and
YARV are enough? jRuby and "Microsoft Ruby" have industrial support,
Rubinius and YARV have vibrant communities and core teams of excellent
hackers. The other two -- Cardinal and the vmgen/Forth version, whose
name I've forgotten -- have languished as half-person projects.

At one point I considered reviving the vmgen one because I'm a Forth
hacker (I know Forth better than I know C, in fact), but once I learned
that YARV had adopted direct threading and a stack machine -- the two
core ideas behind vmgen -- I abandoned that idea in a big hurry. Parrot
is a *register* machine because it caters to assembler programmers who
grew up on things like the Motorola 68000 and System\360, not because
that's the "right way" to build a virtual machine for dynamic languages. :slight_smile:

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

Francis Cianfrocca wrote:
>> > [deleted] Cardinal (Ruby on Parrot, which may or may not be dead)
>>
>> It's not dead, it's pining for the fjords. No, actually, Kevin Tew,
the
>> maintainer, has been bogged down with school related issues the
>> last two months, but has told me that he's chomping at the bit to
>> start chasing Cardinal again.
>>
>> You can track his progress at:
>> http://http://cardinal2.rubyforge.org/
>>
>> (The original cardinal project appears to be dead, and Kevin's had
>> no luck raising the maintainer to get the project transferred -- if
>> anyone's up to helping with with that, Kevin would probably
>> appreciate it.)
>>
>> >[deleted]
>> > --Greg
>> >
>> --
>> thanks,
>> -pate
>> -------------------------
>> http://on-ruby.blogspot.com
>>
>
> I think Ruby/Parrot is pretty interesting. Anyone else interested
> enough to put some time into it?
>
Well ... I'm not! Don't you think jRuby, Rubinius, "Microsoft Ruby", and
YARV are enough? jRuby and "Microsoft Ruby" have industrial support,
Rubinius and YARV have vibrant communities and core teams of excellent
hackers. The other two -- Cardinal and the vmgen/Forth version, whose
name I've forgotten -- have languished as half-person projects.

I guess it is very reasonable what you are saying and yet I`d wish to have
a SmallRuby, something squeakish you see. First that might really make the
difference for both languages and secondly it might as well turn out to be
faster and more agile than YARV or JRuby (well JRuby for sure as the used
language is just faster - Smalltalk just fits better to Ruby than Java).
If only I were (a) rich, (b) a genius and (c) three persons the project
would be rolling already :frowning:

Actually it would attack the two most criticised points of Ruby "speed" and
"IDE":slight_smile:

At one point I considered reviving the vmgen one because I'm a Forth

hacker (I know Forth better than I know C, in fact), but once I learned
that YARV had adopted direct threading and a stack machine -- the two
core ideas behind vmgen -- I abandoned that idea in a big hurry. Parrot
is a *register* machine because it caters to assembler programmers who
grew up on things like the Motorola 68000 and System\360, not because
that's the "right way" to build a virtual machine for dynamic languages.
:slight_smile:

Hmmm be careful about that statement I guess you know you might be wrong :wink:

···

On 12/30/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

> On 12/30/06, pat eyler <pat.eyler@gmail.com> wrote:
>> On 12/30/06, Gregory Seidman <gsslist+ruby@anthropohedron.net> wrote:

--

M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given
rabbits fire.

Cheers
Robert

--
"The real romance is out ahead and yet to come. The computer revolution
hasn't started yet. Don't be misled by the enormous flow of money into bad
defacto standards for unsophisticated buyers using poor adaptations of
incomplete ideas."

- Alan Kay

Francis Cianfrocca wrote:

Francis Cianfrocca wrote:
>> > [deleted] Cardinal (Ruby on Parrot, which may or may not be dead)
>>
>> It's not dead, it's pining for the fjords. No, actually, Kevin Tew, the
>> maintainer, has been bogged down with school related issues the
>> last two months, but has told me that he's chomping at the bit to
>> start chasing Cardinal again.
>>
>> You can track his progress at:
>> http://http://cardinal2.rubyforge.org/
>>
>> (The original cardinal project appears to be dead, and Kevin's had
>> no luck raising the maintainer to get the project transferred -- if
>> anyone's up to helping with with that, Kevin would probably
>> appreciate it.)
>>
>> >[deleted]
>> > --Greg
>> >
>> --
>> thanks,
>> -pate
>> -------------------------
>> http://on-ruby.blogspot.com
>>
>
> I think Ruby/Parrot is pretty interesting. Anyone else interested
> enough to put some time into it?
>
Well ... I'm not! Don't you think jRuby, Rubinius, "Microsoft Ruby", and
YARV are enough? jRuby and "Microsoft Ruby" have industrial support,
Rubinius and YARV have vibrant communities and core teams of excellent
hackers. The other two -- Cardinal and the vmgen/Forth version, whose
name I've forgotten -- have languished as half-person projects.

At one point I considered reviving the vmgen one because I'm a Forth
hacker (I know Forth better than I know C, in fact), but once I learned
that YARV had adopted direct threading and a stack machine -- the two
core ideas behind vmgen -- I abandoned that idea in a big hurry. Parrot
is a *register* machine because it caters to assembler programmers who
grew up on things like the Motorola 68000 and System\360, not because
that's the "right way" to build a virtual machine for dynamic languages. :slight_smile:

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

And another interesting idea bites the dust.

Well ... as the old saying goes, "Adding programmers to a late project makes it later." :slight_smile: I certainly don't want to discourage Kevin Tew from pursuing his goals with Cardinal, and I don't want to discourage anyone else who thinks it's "interesting". But I have my own languishing half-person projects to look after. :slight_smile: And I have confidence that at least jRuby, Rubinius and YARV are "good enough" without diluting the Ruby implementation space with Parrot or vmgen.

I'm less sure about "Microsoft Ruby" for a number of reasons:

1. Microsoft's attitude towards open source and software patents,
2. The fact that I haven't heard much about the .NET/CLR-based implementations since RubyConf 2006, unlike the others, which are regularly discussed here,
3. The difficulties Austin Ziegler and Curt Hibbs are having connecting with Microsoft over the issues associated with compiled Ruby extensions on the Windows platform,
4. The general feeling, as noted by Eric Raymond, that MacOS is the horse to beat in the race to the 64-bit desktop OS. Again, see

http://www.catb.org/~esr/writings/world-domination/world-domination-201.html

···

On 12/30/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

> On 12/30/06, pat eyler <pat.eyler@gmail.com> wrote:
>> On 12/30/06, Gregory Seidman <gsslist+ruby@anthropohedron.net> wrote:

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

Wilson Bilkovich wrote:

Exactly. I wasn't going to chime in until someone broke the ice.. but
the Parrot team basically can't explain the design rationale. It's
even featured in a solid book about virtual machines, along with a
narrative that amounts to: "Uhh.. umm.. this is certainly an
interesting way to go about it."

What's the name of the book? The only book I've seen is the O'Reilly book on Perl 6 and Parrot. That pretty much ignores Python, PHP and Ruby, of course. :slight_smile:

From Ruby's perspective, it also has the odd feature of having
separate registers for Strings and for Objects. *shudder*

IIRC they also have separate integer and float registers, just like many real machines. *That* -- a separate floating point stack vs. a single "parameter stack" -- was a big debate point in the discussions leading up to the ANS Forth standard, and in the end, the standard had to be written so either could be implemented.

Anyone who wants to hack on a Ruby VM will receive a warm welcome in
the arms of Rubinius. :slight_smile:

Well ... to repeat myself:
1. Adding programmers to a late project makes it later.
2. I have my own languishing half-person projects to look after.
3. I really really suck at C programming -- I can just barely read C.

P.S. I have the utmost respect for Parrot's implementation team. It's
just not the VM I want to see for Ruby.

P.P.S: What exactly *is* the status of Perl 6? :slight_smile:

···

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

Robert Dober wrote:

I guess it is very reasonable what you are saying and yet I`d wish to have
a SmallRuby, something squeakish you see. First that might really make the
difference for both languages and secondly it might as well turn out to be
faster and more agile than YARV or JRuby (well JRuby for sure as the used
language is just faster - Smalltalk just fits better to Ruby than Java).
If only I were (a) rich, (b) a genius and (c) three persons the project
would be rolling already :frowning:

Of the Ruby implementations, I'm guessing Rubinius is closest to a "SmallRuby" as you describe it. At least the way Evan Phoenix described it at RubyConf makes me think that. However, I'm not at all thrilled with the Squeak UI. It is so contrary to everything I do on a daily basis that I find it difficult to do any more than replay the built-in demos. And it's visually unappealing to me on top of that. Squeak is an exciting and interesting project -- it's just too far away from my default modus operandi.

Actually it would attack the two most criticised points of Ruby "speed" and
"IDE":slight_smile:

I haven't seen benchmarks from the jRuby people recently and I don't recall ever seeing any from Rubinius, but I think jRuby is even now faster than the standard C version on some benchmarks, and YARV is four times as fast as the standard C version on my "Matrix" benchmark, which (very indirectly) tests speed of "exact math".

Concerning IDEs, I've already said that I find the Squeak UI unusable, although I know I could learn it. But what's the motivation for learning Squeak? Aside from a rather nifty continuation-based web framework called Seaside, there's nothing written in Squeak that remotely resembles any of the projects that interest me -- computational finance, applied mathematics, performance engineering.

The only thing that I find *very* interesting in Squeak is Squeak's rather extensive built-in MIDI/audio capabilities. Squeak appears to be a fine platform for algorithmic composition and synthesis. But I'm so used to the Lisp and CSound (and Lilypond and Rosegarden and Alsa-jack) way of doing those things that it's a tradeoff between learning another way of doing something I already know how to do for the joy of learning or just getting stuff done. Once again, it's the triumph of "good enough" over "cool beyond words". :slight_smile:

Let's have a Ruby IDE that works the way Rubyists work -- integrated with Rspec/Rdoc/Ri/ZenTest/Rake/Hoe/Rubygems (and Rails/Mongrel -- let's not forget Rails). Again, that's probably a lot more like Rubinius and a lot less like jRuby or "Microsoft Ruby", which, after all, work the way Java programmers or .NET programmers work for the most part.

As an aside, perhaps the JVM is more than just a virtual machine -- at least that's the way it appears to me after seeing what jRuby is all about. It seems to me to be very much an "operating system" -- concurrency primitives, process, thread and memory management, windowing toolkit, mixing of languages (at least Ruby, Python, Java and C extensions), etc.

Hmmm be careful about that statement I guess you know you might be wrong :wink:

Yeah, I know -- there's no such thing as the one best way to do something. And there's nothing wrong with designing the Parrot virtual machine as a register machine because the majority of people who will be programming at that level are Motorola 68000 assembly programmers either. :slight_smile: But there *is* something wrong with implementing a *new* Ruby virtual machine in Forth or Pascal or pseudo-M68000 assembler when the majority of the people who will be programming at that level are C programmers. :slight_smile: C and the JVM and the CLR are "good enough", with the possible exception of concurrency primitives.

···

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

Robert Dober wrote:

I guess it is very reasonable what you are saying and yet I`d wish to have
a SmallRuby, something squeakish you see. First that might really make the
difference for both languages and secondly it might as well turn out to be
faster and more agile than YARV or JRuby (well JRuby for sure as the used
language is just faster - Smalltalk just fits better to Ruby than Java).

You do know that Smalltalk, even in its fastest incarnations, is still slower than Java, right? And Squeak is far from being one of the fastest incarnations.

···

--
Charles Oliver Nutter, JRuby Core Developer
Blogging on Ruby and Java @ headius.blogspot.com
Help spec out Ruby today! @ Welcome to headius.com
headius@headius.com -- charles.nutter@sun.com

Wilson Bilkovich wrote:
> Exactly. I wasn't going to chime in until someone broke the ice.. but
> the Parrot team basically can't explain the design rationale. It's
> even featured in a solid book about virtual machines, along with a
> narrative that amounts to: "Uhh.. umm.. this is certainly an
> interesting way to go about it."
What's the name of the book? The only book I've seen is the O'Reilly
book on Perl 6 and Parrot. That pretty much ignores Python, PHP and
Ruby, of course. :slight_smile:

Badly needed an additional editor to fix typos and other mistakes, but
is a very interesting book none the less.

> From Ruby's perspective, it also has the odd feature of having
> separate registers for Strings and for Objects. *shudder*
IIRC they also have separate integer and float registers, just like many
real machines. *That* -- a separate floating point stack vs. a single
"parameter stack" -- was a big debate point in the discussions leading
up to the ANS Forth standard, and in the end, the standard had to be
written so either could be implemented.

> Anyone who wants to hack on a Ruby VM will receive a warm welcome in
> the arms of Rubinius. :slight_smile:
Well ... to repeat myself:
1. Adding programmers to a late project makes it later.
2. I have my own languishing half-person projects to look after.
3. I really really suck at C programming -- I can just barely read C.

Well, I meant it as a general invite. :slight_smile:

P.P.S: What exactly *is* the status of Perl 6? :slight_smile:

I will let this link stand on its own, with.. no.. further.. commentary:
http://dev.perl.org/perl6/doc/design/syn/S05.html

···

On 12/30/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

I'm not jumping back into this in a big way, since it's obvious
Ruby-on-Parrot isn't intriguing to enough people to make it worth the
attention.

But on this point of register vs. stack machines. Most of the people
writing to the VM are language implementors, not ordinary users, and
they have a lot of sophisticated things to learn anyway. Most real
hardware supports the register-file model either natively, in
microcode, or with opcodes. I'm not convinced that the stack-based
model necessarily gives advantages over the register-based, and my
intuition says that other factors in the machine architecture are more
important.

Most of the recent work in VM optimization has taken place in the JVM
context, and involves extreme cleverness in regard to what code should
be compiled or recompiled to native opcodes, and when. But look at the
older literature, from before the release of Java, and you'll find a
lot of stuff that is probably more germane to dynamic-language
processing (much of it done in the Smalltalk context, but still
generic): things like detecting and hard-compiling code that is not
likely to be metaprogrammed, and tuning these code paths heuristically
during the run.

My bottom line is this: I don't care about Perl, not even a little
tiny bit. But I'm not convinced that we've asked enough questions
about the ideal VM characteristics for supporting highly-dynamic
languages. I know little about Rubinius and have not conversed with
Evan. I'm quite impressed with Charles' work to date on JRuby, but the
JVM may not be the ideal platform for running Ruby. I don't think
we've heard the last word.

And Ruby is in a distinct class compared to other dynamic languages
because of the unusual degree to which it encourages and benefits from
metaprogramming. No, that's not to say other languages can't do
similar things. It is to say that this is part of "the Ruby way," and
I find Ruby handicapped by the huge performance penalty that
metaprogramming often imposes.

Concurrency primitives: at the end of the day, there is only one
primitive that is really required, and it MUST be supplied by the
hardware, not the VM. That's the atomic check-and-set operation, of
course. Threading packages for C can be and often are supplied as
pure-userland libraries.

Robert Dober wrote:
> I guess it is very reasonable what you are saying and yet I`d wish to
have
> a SmallRuby, something squeakish you see. First that might really make
the
> difference for both languages and secondly it might as well turn out to
be
> faster and more agile than YARV or JRuby (well JRuby for sure as the
used
> language is just faster - Smalltalk just fits better to Ruby than Java).

You do know that Smalltalk, even in its fastest incarnations, is still
slower than Java, right?

oops I stepped on your feet, did I?
Did the JVM speed up so much or is my reference rotten, I am going to look
it up when back on work.
Forgive my ignorance I should have put a question mark behind my statement
but that holds for too many a things we think to know :frowning:
If the JVM has become that fast a Smalltalk VM should be able to become even
faster I guess.

I really dislike Java but even as biased as I am I recon JRuby must be a
hell of a project and very important for the community.
It is also my last trump when discussing Ruby with Java affacinados and it
is a very high trump.

But the motivation for JRuby holds for SmallRuby and looking at both
languages (J&S) Smalltalk seems to fit better. Now even the greates
Smalltalk fan ( and I am not ) could not immagine that a Smallruby would
ever have the usage of JRuby.

If Smalltalk will survive it will so in a niche I guess, it would be
wounderful if Ruby could exist in that niche, would it not?

And Squeak is far from being one of the fastest

incarnations.

That I have heard too, but I did only intent to use Squeak as a FE (and BE
too buit one could use any VM).

···

On 12/31/06, Charles Oliver Nutter <charles.nutter@sun.com> wrote:

--

Charles Oliver Nutter, JRuby Core Developer
Blogging on Ruby and Java @ headius.blogspot.com
Help spec out Ruby today! @ Welcome to headius.com
headius@headius.com -- charles.nutter@sun.com

Happy New Year

Robert

--
"The real romance is out ahead and yet to come. The computer revolution
hasn't started yet. Don't be misled by the enormous flow of money into bad
defacto standards for unsophisticated buyers using poor adaptations of
incomplete ideas."

- Alan Kay

On the other hand, a lot of people have flocked to Haskell simply to
hack on Pugs. I'm sure if a really good alt-lang-based ruby vm was
developed, people would learn said lang just to hack on it.

m.

···

On 12/31/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

Yeah, I know -- there's no such thing as the one best way to do
something. And there's nothing wrong with designing the Parrot virtual
machine as a register machine because the majority of people who will be
programming at that level are Motorola 68000 assembly programmers
either. :slight_smile: But there *is* something wrong with implementing a *new* Ruby
virtual machine in Forth or Pascal or pseudo-M68000 assembler when the
majority of the people who will be programming at that level are C
programmers. :slight_smile: C and the JVM and the CLR are "good enough", with the
possible exception of concurrency primitives.

Wilson Bilkovich wrote:

P.P.S: What exactly *is* the status of Perl 6? :slight_smile:

I will let this link stand on its own, with.. no.. further.. commentary:
http://dev.perl.org/perl6/doc/design/syn/S05.html

Holy Toledo!

<ducking>

Forth is looking better every day :slight_smile:

···

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

Francis Cianfrocca wrote:

But on this point of register vs. stack machines. Most of the people
writing to the VM are language implementors, not ordinary users, and
they have a lot of sophisticated things to learn anyway. Most real
hardware supports the register-file model either natively, in
microcode, or with opcodes. I'm not convinced that the stack-based
model necessarily gives advantages over the register-based, and my
intuition says that other factors in the machine architecture are more
important.

Well ... most of the interesting problems in this area are either NP-Complete or flat out unsolvable, so it boils down to questions of what reasonably good programmers can get done in reasonable amounts of time. For example, I think there's an awful lot of optimization in GCC that most of us could live very well without. Back in the "good old days", people used to compare compilers optimized for compile speed with compilers that worked hard to generate fast code, and the typical result was that there was only a factor of two improvement in run time speed from working hard to generate fast code.

But when the code in question is a language interpreter or run-time, that's another thing entirely. In that case, I think you *do* want to work hard to squeeze the most out of the hardware. I think you *do* want to do what the vmgen/gforth project does -- exploit things in GCC that aren't part of the C language standard to squeeze every last wasted cycle out of the "inner interpreter". And if it's more efficient to manage two or three stacks than dozens of registers, I think you want a stack machine and not a register machine.

And given that you've embraced a GCC dependency, I think you *do* want to go the extra step and put in assembly language kernels for x86, x86-64 and probably PPC and SPARC and ARM architectures as well. Why should a linear algebra library like Atlas, which runs continuously for hours on a problem, be allowed to do that and not a language interpreter, which also runs continuously for hours on a problem?

Most of the recent work in VM optimization has taken place in the JVM
context, and involves extreme cleverness in regard to what code should
be compiled or recompiled to native opcodes, and when.

Well, I'm not at all familiar with the Microsoft CLR, but I suspect they're got some equally bright folks hacking on it as well.

But look at the
older literature, from before the release of Java, and you'll find a
lot of stuff that is probably more germane to dynamic-language
processing (much of it done in the Smalltalk context, but still
generic): things like detecting and hard-compiling code that is not
likely to be metaprogrammed, and tuning these code paths heuristically
during the run.

I'm not at all familiar with any of that. My background is "VLIW", vector and parallel supercomputing and FORTRAN compilers for same. As an aside, it really saddens me that the current crop of pundits bemoans the ascendancy of multi-core processors with whining about "the applications aren't ready, the software isn't ready, the languages aren't ready, the operating systems aren't ready, programmers don't know how to deal with concurrency," etc., etc. Come on, people -- Gene Amdahl formulated Amdahl's Law in 1967! There are teraflop computing platforms operating *today*! The guts of multi-media -- digital signal and image processing -- have been parallelized and vectorized since the mid-1970s!

My bottom line is this: I don't care about Perl, not even a little
tiny bit. But I'm not convinced that we've asked enough questions
about the ideal VM characteristics for supporting highly-dynamic
languages. I know little about Rubinius and have not conversed with
Evan. I'm quite impressed with Charles' work to date on JRuby, but the
JVM may not be the ideal platform for running Ruby. I don't think
we've heard the last word.

Well ... maybe we haven't heard the "last" word, but we've certainly heard the directions of the four major Ruby implementors -- if there are indeed still four. I think when all the smoke clears, at least jRuby and YARV will still be standing and will be "for all practical purposes" equivalent in performance. Rubinius in some form or another will survive and thrive, though I'm not sure it will be as a virtual machine -- I think of it more as an IDE/OS in the same sense as Squeak is to Smalltalk.

And Ruby is in a distinct class compared to other dynamic languages
because of the unusual degree to which it encourages and benefits from
metaprogramming. No, that's not to say other languages can't do
similar things. It is to say that this is part of "the Ruby way," and
I find Ruby handicapped by the huge performance penalty that
metaprogramming often imposes.

This is where I think the edge goes to Rubinius.

Concurrency primitives: at the end of the day, there is only one
primitive that is really required, and it MUST be supplied by the
hardware, not the VM. That's the atomic check-and-set operation, of
course. Threading packages for C can be and often are supplied as
pure-userland libraries.

It's not just atomic check-and-set -- it's *all* of the conveniences people expect. Message passing, monitors, lightweight processes a la Erlang/Termite, drb, Rinda, starfish, high-speed numeric vector processing -- it *all* has to be there, either in the language or in a library and supported *efficiently* by the run time on the major operating systems and hardware. Otherwise, it violates the dictum that it's possible to write FORTRAN programs in any language. :slight_smile:

···

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

Martin DeMello wrote:

Yeah, I know -- there's no such thing as the one best way to do
something. And there's nothing wrong with designing the Parrot virtual
machine as a register machine because the majority of people who will be
programming at that level are Motorola 68000 assembly programmers
either. :slight_smile: But there *is* something wrong with implementing a *new* Ruby
virtual machine in Forth or Pascal or pseudo-M68000 assembler when the
majority of the people who will be programming at that level are C
programmers. :slight_smile: C and the JVM and the CLR are "good enough", with the
possible exception of concurrency primitives.

On the other hand, a lot of people have flocked to Haskell simply to
hack on Pugs. I'm sure if a really good alt-lang-based ruby vm was
developed, people would learn said lang just to hack on it.

m.

Can you quantify "a lot of people have flocked to Haskell simply to hack on Pugs"? How does that number compare with the number of people hacking on Parrot? How do these numbers stack up relative to the size of the Perl 5.8.x communities? I actually wandered to the Pugs and Parrot sites last night just to see what they were up to. They're both in Gentoo's Portage tree -- I could play with them if I wanted to, but I don't.

I think I have the GHC binary installed because it's required by Darcs and there are a couple of projects I hack on occasionally that are using Darcs. I think Haskell and Darcs and GHC and Pugs are all dead-ends and won't survive a "market shakeout", no matter how high their "quality" is on any metric. Haskell, GHC, Darcs and Pugs are deal-breakers for me.

More to the point, how does that compare with the size of the jRuby community, the YARV community and the Rubinius community relative to the whole Ruby community? My point here is, to quote Wirth, "Programming is decision-making." As a programmer, I made the decision not to pursue the Forth-based Ruby implementation (which is called Carbone, BTW) precisely because I already have a number of half-person projects languishing and I don't want to start (or take over) another one. I don't think it's realistic to expect a bunch of talented C hackers to run off and learn Forth to hack on a Forth-based Ruby, especially since vmgen itself is written in C! The icing on that particular cake is that ideas from vmgen/Carbone are making their way into YARV. Now if I could just convince Austin and Curt that gcc is "the one true way" on Windows ... :slight_smile:

···

On 12/31/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/

If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

>Yeah, I know -- there's no such thing as the one best way to do
>something. And there's nothing wrong with designing the Parrot virtual
>machine as a register machine because the majority of people who will be
>programming at that level are Motorola 68000 assembly programmers
>either. :slight_smile: But there *is* something wrong with implementing a *new* Ruby
>virtual machine in Forth or Pascal or pseudo-M68000 assembler when the
>majority of the people who will be programming at that level are C
>programmers. :slight_smile: C and the JVM and the CLR are "good enough", with the
>possible exception of concurrency primitives.

On the other hand, a lot of people have flocked to Haskell simply to
hack on Pugs. I'm sure if a really good alt-lang-based ruby vm was
developed, people would learn said lang just to hack on it.

That's the best part about rubinius. It is an alt-lang ruby vm, where
the alt-lang just happens to be ruby! Brilliant!

···

On Mon, Jan 01, 2007 at 11:18:22PM +0900, Martin DeMello wrote:

On 12/31/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:
m.

Robert Dober wrote:

oops I stepped on your feet, did I?
Did the JVM speed up so much or is my reference rotten, I am going to look
it up when back on work.
Forgive my ignorance I should have put a question mark behind my statement
but that holds for too many a things we think to know :frowning:
If the JVM has become that fast a Smalltalk VM should be able to become even
faster I guess.

See my comments and links on performance further down...

I really dislike Java but even as biased as I am I recon JRuby must be a
hell of a project and very important for the community.
It is also my last trump when discussing Ruby with Java affacinados and it
is a very high trump.

It's important not to think of JRuby in terms of Java, especially if you're a Rubyist or someone who dislikes Java. JRuby is Ruby, just on another VM and implemented under the covers in a different language. Don't equate JRuby and Java.

But the motivation for JRuby holds for SmallRuby and looking at both
languages (J&S) Smalltalk seems to fit better. Now even the greates
Smalltalk fan ( and I am not ) could not immagine that a Smallruby would
ever have the usage of JRuby.

The motivations for JRuby go well beyond those for a SmallRuby, largely because not only could it potentially be a "better Ruby" in some ways, but it would be a Ruby that could leverage the entire Java platform, now GPL and freely available. So there's two ways to think about JRuby: as an alternative implementation of Ruby and as an alternative language for the Java platform. Last I checked, there were still quite a few Java shops around :slight_smile:

If Smalltalk will survive it will so in a niche I guess, it would be
wounderful if Ruby could exist in that niche, would it not?

I think Ruby has the potential to be a "friendlier" Smalltalk, friendly enough that it could be Smalltalk design principals to a much wider development world. Ruby has taken the many of the best features of Smalltalk (and Lisp, and a few others) and made them usable in a friendly, fun context. That's no small feat.

And Squeak is far from being one of the fastest

incarnations.

That I have heard too, but I did only intent to use Squeak as a FE (and BE
too buit one could use any VM).

Here's a quick alioth shootout comparing VisualWorks Smalltalk (they claim it's comparable to Strongtalk) versus "Java JDK -server", whatever that is. Java comes out well ahead on almost every benchmark in terms of both performance AND memory use. I believe

http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=vw&lang2=java

Also versus GST Smalltalk (I'm not famiiar with it). Again Java comes out well ahead:

http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=gst&lang2=java

It's also very important to remember that the technologies in Strongtalk and Self live on in HotSpot; so it's not far off to say that Smalltalk technology is in play today to make Java run faster. If we can find good ways to leverage that technology from JRuby (and other dynlang impls) we may achieve what Parrot is still working on: a world-class VM for many dynamic languages.

···

--
Charles Oliver Nutter, JRuby Core Developer
Blogging on Ruby and Java @ headius.blogspot.com
Help spec out Ruby today! @ Welcome to headius.com
headius@headius.com -- charles.nutter@sun.com

You haven't established that it is more efficient. I'm completely
sympathetic to leveraging the strengths of particular hardware platforms as
available, but observe that most mainstream hardware is register-based.
High-quality register-based code is far harder to automatically generate
than stack-based (try it sometime), but you have more potential to squeeze
performance out of the machine by bypassing memory-bus cycles. Again, try it
sometime. It's not easy to do, and I surmise that some of the attractiveness
of the stack-based model comes from its simplicity. And also from the fact
that every register-based piece of hardware is different, so you're leaking
multiple abstractions into VM-level code where it arguably doesn't belong.
Does this make stack-based VMs axiomatically better-suited for dynamic
languages as opposed to languages like Java? I have no idea how to even
approach answering that question.

Concurrency primitives: all of the actual intra-process concurrency features
you mentioned can be implemented straightforwardly, given the availability
of the atomic check-and-set primitive. You mention a lot of things that
don't fall into this realm, and as a former language designer, I think there
is a stylistic tradeoff to be made among them. It may not necessarily make
sense to implement all of them.

···

On 12/31/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

>>> And if it's more efficient to
manage two or three stacks than dozens of registers, I think you want a
stack machine and not a register machine.
<<<