[#18974] Perl/Python/Ruby common backend (Perl6) — ptkwt@...1.aracnet.com (Phil Tomson)

There is a thread about using .NET's CLR as a backend for Ruby, but how

17 messages 2001/08/01

[#19064] ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...>

17 messages 2001/08/03
[#19184] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Fri, 3 Aug 2001, David Alan Black wrote:

[#19185] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...> 2001/08/06

Hello --

[#19186] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Mon, 6 Aug 2001, David Alan Black wrote:

[#19125] My 1st look @ ruby: No prototypes and problem with String#gsub — stesch@... (Stefan Scholl)

My first ruby program:

23 messages 2001/08/04

[#19192] Some remarks from a nembie in Ruby — Renaud HEBERT <renaud.hebert@...>

After having read the book "Programming Ruby: The Pragmatic Programmer's

38 messages 2001/08/06

[#19269] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — ptkwt@...1.aracnet.com (Phil Tomson)

In article <72X97.12093$9i1.972452@e420r-atl1.usenetserver.com>,

50 messages 2001/08/07
[#19349] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Mathieu Bouchard <matju@...> 2001/08/08

[#19456] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Harry Ohlsen <harryo@...> 2001/08/09

Ned Konz wrote:

[#19451] Re: Help! I'm still confused about threadin g in the ML — "Morris, Chris" <chris.morris@...>

> Is there an Outlook option to turn on In-Reply-To or References

14 messages 2001/08/09
[#19453] Re: Help! I'm still confused about threadin g in the ML — Dave Thomas <Dave@...> 2001/08/09

"Morris, Chris" <chris.morris@snelling.com> writes:

[#19506] the way class variables work — David Alan Black <dblack@...>

Hello --

51 messages 2001/08/10
[#19511] Re: the way class variables work — Chris Uzdavinis <chris@...> 2001/08/11

David Alan Black <dblack@candle.superlink.net> writes:

[#19524] order and freedom in Ruby (was: Re: Re: the way class variables work) — David Alan Black <dblack@...> 2001/08/11

Hello --

[#19517] Why not?: Assigning to self — furufuru@... (Ryo Furue)

Hi there,

55 messages 2001/08/11
[#19689] Re: Why not?: Assigning to self — Ron Jeffries <ronjeffries@...> 2001/08/14

On 13 Aug 2001 20:59:54 -0700, furufuru@ccsr.u-tokyo.ac.jp (Ryo Furue)

[#19694] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 05:09 am, Ron Jeffries wrote:

[#19695] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19696] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 07:51 am, you wrote:

[#19697] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19700] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 08:27 am, you wrote:

[#19701] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19703] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:05 am, Guy Decoux wrote:

[#19704] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19708] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:27 am, you wrote:

[#19709] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19713] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:45 am, you wrote:

[#19750] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/15

Hi,

[#19819] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/15

On Tuesday 14 August 2001 08:14 pm, matz wrote:

[#19852] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19857] Re: Why not?: Assigning to self — "Florian G. Pflug" <fgp@...> 2001/08/16

On Thu, Aug 16, 2001 at 11:05:59AM +0900, Yukihiro Matsumoto wrote:

[#19858] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19867] Re: Why not?: Assigning to self — "Pit Capitain" <pit@...> 2001/08/16

Just a followup at (my) current end of the thread:

[#19550] Forced garbage collection — Lars Christensen <larsch@...>

14 messages 2001/08/11
[#19562] Re: Forced garbage collection — "Nat Pryce" <nat.pryce@...13media.com> 2001/08/12

From: "Lars Christensen" <larsch@cs.auc.dk>

[#19551] /.ed again — Tobias Reif <tobiasreif@...>

Ruy gets slasdotted again ;)

19 messages 2001/08/11

[#19650] Ruby Newbie mailing list — Michael Pence <mikepence@...>

Hello all.

14 messages 2001/08/13
[#19656] RE: Ruby Newbie mailing list — "Louis Brothers" <lcb134@...> 2001/08/13

We had a similar discussion on the OmniWeb Objective-C mailing list not to

[#19659] Re: Ruby Newbie mailing list — Michael Pence <mikepence@...> 2001/08/13

I appreciate your references to Objectionable-C ;-)

[#19685] Compiling Ruby with cygwin and Tk support — Manuel Zabelt <ng@...>

Hello!

13 messages 2001/08/14

[#19718] General (GUI/license) questions — Ryan Tarpine <rtarpine@...>

First: Kero commented in the description of his new Ruby Agenda program

18 messages 2001/08/14

[#19755] "new" returning nil: how to report the failure of object creation — furufuru@... (Ryo Furue)

Hi there,

14 messages 2001/08/15

[#19758] The GUI poll is in, and the results are surprising — Dave Thomas <Dave@...>

40 messages 2001/08/15
[#19774] Re: The GUI poll is in, and the results are surprising — Lars Christensen <larsch@...> 2001/08/15

On Wed, 15 Aug 2001, Dave Thomas wrote:

[#19784] Re: The GUI poll is in, and the results aresurprising — "Lyle Johnson" <ljohnson@...> 2001/08/15

> Please don't forget what Ruby is all about in this discussion! I think

[#19824] Ruby GUI — "Hal E. Fulton" <hal9000@...>

The concept of a new GUI is somewhat appealing,

16 messages 2001/08/15

[#20033] Ruby Article — Joshua Drake <jd.nospam@...>

Hello,

38 messages 2001/08/20

[#20127] Another Possible RCR - Wrappers via Mixins — Stephen White <spwhite@...>

The main difference between mix-ins and multiple inheritence is (to my understanding) that parent classes do not call child code, but mix-ins do.

15 messages 2001/08/22

[#20135] Bruce Eckel's criticism of Ruby — Ned Konz <ned@...>

Python.org links to http://www.mindview.net/Etc/notes.html#Ruby , saying

24 messages 2001/08/22

[#20183] ++ Operator — kamphausen@... (SKa)

Dear Community,

35 messages 2001/08/23
[#20234] Re: ++ Operator — Dave Thomas <Dave@...> 2001/08/24

matz@ruby-lang.org (Yukihiro Matsumoto) writes:

[#20236] Re: ++ Operator — matz@... (Yukihiro Matsumoto) 2001/08/24

Hi,

[#20209] In Ruby 0 is true but nil is false.. or how to shoot yourself?.. — Guillaume Cottenceau <gc@...>

I have a simple Audio-CD database (using CSV format). I was writing a

11 messages 2001/08/23

[#20254] File.readline(s) — Michael Husmann <michael.husmann@...>

I am reading a 55MB ASCII file by using File.readline(s) which takes on

14 messages 2001/08/24

[#20303] New Windows InstallShield version of Ruby — Andrew Hunt <andy@...>

19 messages 2001/08/24

[#20307] Backwards language — "Sean Middleditch" <elanthis@...>

Greetings,

30 messages 2001/08/24

[ruby-talk:19392] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?)

From: "David Simmons" <pulsar@...>
Date: 2001-08-08 20:38:06 UTC
List: ruby-talk #19392
"Mathieu Bouchard" <matju@sympatico.ca> wrote in message
news:N%6c7.21330$5j7.1828908@e420r-atl1.usenetserver.com...
>
>
> (2-in-1 reply)
>
>
> On Wed, 8 Aug 2001, A Bull in the China Shop of Life wrote:
> > All this debate about Python vs Ruby is of questionable value IMO,
they're
>
> This is not a Python vs Ruby debate, it's a comparison of features for the
> sole purpose of knowing better what would need to be in a multi-language
> VM to support Ruby.

Since this is the topic, I've included a posting (for reference) that I made
to the "language-dev" group at netthink.co.uk.

<POST-BEGIN>
Mailing-List: contact language-dev-help@netthink.co.uk; run by ezmlm
Precedence: bulk
Delivered-To: mailing list language-dev@netthink.co.uk
Received: (qmail 2348 invoked from network); 7 Aug 2001 21:34:02 -0000
Received: from unknown (HELO qks.com) (157.22.131.5)
  by 212.135.138.134 with SMTP; 7 Aug 2001 21:34:02 -0000
Received: from ROADWARRIOR.qks.com (157.22.131.30) by qks.com
 with ESMTP (Eudora Internet Mail Server 1.3.1); Tue, 7 Aug 2001
14:42:31 -0700
Message-Id: <5.0.2.1.2.20010807131832.0350b420@mail.qks.com>
X-Sender: pulsar@mail.qks.com
X-Mailer: QUALCOMM Windows Eudora Version 5.0.2
Date: Tue, 07 Aug 2001 14:33:54 -0700
To: language-dev@netthink.co.uk
From: David Simmons <pulsar@qks.com>
Subject: Targetting the JVM/IL
Mime-Version: 1.0
Content-Type: multipart/alternative;
        boundary="=====================_134114666==_.ALT"

Hi All,

I'm new to this group but I have tried to review the couple hundred or so
posts that have been made so far.

A little background on me and my work...

I've been a dynamic language designer and VM architect for the last decade
or so. By training I'm actually an Electrical Engineer with specialization
in VLSI design and Digital Logic. But I long ago switched to being focused
almost exclusively on software engineering.

I've have many years of extensive experience [largely focused on Japanese]
providing globalization facilities, services, and frameworks across three
significantly different platforms [MacOS, Win32, Unix/Linux]. I served for
some time on the LI18NUX standards group.

Since 1999 I've been involved with building dynamic language services for
Microsoft's .NET platform and have pushed/pulled necessary elements from
Microsoft to make it possible to support acceptable dynamic dispatch
performance.

Of all the languages currently built for .NET my work on SmallScript
(Smalltalk) is [as far as I am aware] the only language to employ a complete
dynamic language MOP and dispatching system. It is also of note that I was a
speaker at last years PDC on .NET, and I regularly meet with and talk to
most of the other 3rd party .NET language implementors.

I've been focused on dynamic languages for a very long time. I built my
first [from scratch] scripting language implementation as an onboard
[downloadable/updatable from a PDP/bsd machine over the network] specialized
basic dialect in the late 70's are part of my work in designing and building
network packet switching, routing and debugging hardware for the NBS (NIST)
arpa-net facilities.

I've been involved and focused on scripting languages since the early 90's
where we [QKS] worked closely [as part of a universal virtual machine
effort] with Apple and Kaleida on numerous technologies including OpenDoc,
SK8, ScriptX, AppleScript, HyperTalk, etc, and to significantly lesser
degree with Dylan/MacLisp efforts.

Very little of my work has ever been published (by me) in academic journals
or publications because I've generally been too busy with business issues,
designs, implementation, or deployment. Some things can be found in various
books or on the web by searching for keywords like: QKS, Quasar, Agents,
AOS, SmalltalkAgents, STA, SmallScript. Much of this information was focused
in the MacOS community throughout the early to mid 90's and is hard to find
or access. Hopefully, over the next few years I'll get a chance to republish
material from our books/manuals and other materials I have.
===

That said, it has been my experience so far, that current .NET versions are
significantly lacking in technology to provide hi-performance execution of
scripting languages. The future versions of .NET are entirely different
question. However, .NET has some crucial technical facilities that make it
capable of supporting dynamically dispatched languages far better than Java.
But, it still seriously lags behind the performance and capabilities that
can be achieved in a VM designed to support dynamic dispatch and dynamic
languages. These comments are based directly on my work with Microsoft for
developing a Smalltalk implementation for .NET.

My most recent work includes the 4th generation design of the AOS Platform
[dynamic language] VM. AOS is an acronym for Agents Object System. Its
typical performance is about 1-2x faster than IBM's VisualAge VM, and 10-30%
faster than Cincom [ParcPlace] VisualWorks VM.

There is at least another generation of work to be done on the AOS VM before
I would consider it highly tuned. But as it stands it typically executes
code at speeds that are within 1-2X of C.  More global optimizations and
extended adaptive compilation and inlining are required to go beyond this
level of performance.

Based on various Micro benchmarks or specific code examples I've seen posted
for Ruby, Python, and Perl benchmarks I can roughly rank the performance of
each of those systems for generic code operations. Ruby seems to have the
best overall performing execution, followed by Python, and then pulling in
last is Perl. Again, this is very subjective and real quantitative analysis
is lacking. Furthermore, I am sure that each language has some aspects where
that are superior ("sweet" spots) in terms of performance or expressability.

However, in the cases I've examined so far, the equivalent SmallScript code
ran at an order of magnitude (10 times) faster on my VM. Some tests were
100's or thousands of times faster on my VM. Keep in mind that Smalltalk and
hence my SmallScript examples, did not need or use any statically declared
type information.

Some of the more important samples were the collection frameworks for hashed
collections such as sets, maps (dictionaries), etc.
---

That said, my goal here is not some kind of language/vm competition/contest
[I will rapidly bow out from such situations]. The goal of my providing this
information and the point I'm trying to make is to share my knowledge and
help others understand what is possible for a dynamic language VM.

To help put some of this in perspective I need to give you a rundown of some
of the relevant features in the AOS Platform VM.

a) unified object model based on a fully dynamic MOP architecture supporting
arbitrary schema restructuring in real time. These facilities all operate
down to the per/object level. So it is efficient and straightforward to add
variables, methods, interfaces, properties to individual objects.

b) optional type system services

c) optional multi-method dispatch

d) transparent ffi marshalling [typical rates are in the 10's of millions of
calls per second].

e) first class abstract, pure, and concrete mixin interfaces.

f) first class namespace system, including dynamic selector namespaces
(scoped methods). The dynamic dispatch and binding facilities are
state-of-the-art and include many features not available in other languages.
These include many features for reflective programming,
proxy/agent/distributed techniques, aspect oriented/style programming, and
object/relational mapping.

g) first class module system to describe units of deployment, integration,
versioning, and linking [more formal than loose packages -- which are also
available]. This technology is focused on enabling dynamic modification to
complex live running systems in an engineered manner that also supports
sandbox techniques.

h) basic object property system. Allows adding/removing arbitrary groupable
sets of properties (attributes/fields) to an object.

i) pre-emptively multi-threaded with hi-performance developer definable
synchronization services and thread local state and binding mechanisms.

j) hi-performance sandbox facilities. Supporting an unlimited set of
composable sandboxes that can be designed by the developer.

k) built in object model semantics for globalization support of code-pages,
unicode, etc.

l) intrinsic language support (and jit optimization) for regular expressions
as closures.

m) the AOS Platform [VM, compilers, core frameworks] delivers/deploys as a
single shared-library file of roughly 600kb.

*) there are currently a number of language ports underway for the core AOS
Platform [which, as the website indicates, the core AOS Platform will be
free (no-licensing-fees)].

The .NET deployment mechanism is actually based on AOS Platform cross-jitter
technology which converts AOS Platform IL into .NET IL using the AOS
Platform's object model reflection services.

This means that *any* language which compiles for the AOS Platform, can have
its compiled code re-targeted for deployment, integration, or source level
debugging on .NET without ever building any DotNet specific facilities.
=====

Having said all the above, it is my observation/belief that the biggest
technical design issue for a common runtime mechanism involves the language
semantics issues of deterministic finalization. I.e., reference-counting
versus automatic-gc.

My goals are quite mixed, and I recognize that my commercial goals may be at
odds one way or another with open source views and goals of those within
this discussion group.

But, at the end of the day, I'm a hardcore fan of dynamic/scripting
languages and I have the experience/confidence to help me understand that
great strides can be achieved from where such languages are today -- i.e.,
they can be made to more than compete with the likes of Java.

I am an evangelist for pushing dynamic/scripting languages and working to
help the developer communities understand they can have all the benefits of
static languages and the flexibility, scalability, and ease of use of
dynamic languages. I believe most of you, if not all of you, share that
sentiment or desire to one degree or another?

Best Regards,

-- Dave S. [QKS]

SmallScript for the AOS & .NET Platforms
pulsar@qks.com | http://smallscript.net
1-800-296-1339 [1-650-560-4837]

<POST-END>

>
>
> On Wed, 8 Aug 2001, Piers Cawley wrote:
> > Mathieu Bouchard <matju@sympatico.ca> writes:
> > > Ruby has this thing called "mixins" that afaik is not in Python
> (unless
> > > it's quite recent) and is not in Perl.
> > You can 'sort of' do mixins with perl
> >     BEGIN {
> >         do "Module.pm" || die "Couldn't load module";
> >     }
> > just make sure that 'Module.pm' doesn't have a package declaration. As
> > you can no doubt see from its cumbersome syntax, mixins are not
> > generally used within perl.
>
> That's way too sort-of to be called "mixins" and AFAIK offers no advantage
> over Perl's multiple inheritance. Am I right ?
>
> Anyway the issue is, in a Perl/Python/Ruby VM, mixins with Ruby-style
> inheritance is required, and so we'd have to make sure Damian's NEXT
> proposal goes through.
>
>
> matju
>
>


In This Thread

Prev Next