[Stackless] Ann: Stackless Perl 4.0

Christian Tismer tismer at tismer.com
Tue Apr 1 03:29:40 CEST 2003


Dear Python/Perl Community,

Insiders have known this from the beginning, and they were waiting
for this to happen for much too long time:

Stackless 3.0 has been dead-born from the beginning.
The new live language is Stsckless Perl 5.0!

This is not due to the nature of Stackless, it is due to the
nature of Python. There is a better language than Python,
and its name is PERL!

Python has always been a recursively implemented language.
Perl has been stackless from the very early days.

My brain has always been thinking the Python way.
But my heart always was beating the Perl rhythm & $blues.
Now my time has come, and there is again

A BIG CHANGE OF STACKLESS:

Finally, after all the years of development, it became
not only natural but also consequent, to abandon the very
hard way of merging the principles of Stackless Python 1.0
and 2.0 into 3.0. Instead, I invented Stackless Perl 5.0.

================================================================
Stackless Perl 5.0

The implementation was incredibly simple. I just had to drop
95 percent of my C implementation for Stackless Python 3.0,
change the object model, and to invent three new Perl objects.
These are:

stackless::tasklet
   (about 20 methods)
stackless::channel
   (about 120 methods)
stackless::continuation
   (about 4 methods)

The latter is a re-incarnation of an old idea, which was most
popular in many Scheme dialects, but seems to me most appropriate
in the Stackless Perl context.
There are now infinitely countable ways to express new ways to express 
new or existing control structures by Perl continuations. This is an
incredible, outstanding feature, which clearly contradicts the Python
"one size fits all" paradigm.
Or was it "there is only one way to do it"? (What to do, at all?)

Stackless Perl has Default UNIVERSAL methods, for example:

isa(tasklet)

     isa returns true if its object is blessed into a subclass of tasklet

isa is also exportable and can be called as a sub with two arguments. 
This allows the ability to check what a reference points to. Example

     use UNIVERSAL qw(isa);

     if(isa($ref, 'tasklet')) {
         #...
     }

can(become)

     can check to see if its object has a method called become, if it 
does then a reference to the sub is returned, if it does not then undef 
is returned.

And so on. The number of well-formed examples is so incredible large.
Isn't that just great! ? Oh, I love it so much. Such a match!

Another very relevant example is the solution to *all* existing PEP308
proposals: The stackless Perl dynamic syntax parser has been extended in
a way that covers every possible PEP 308 alternative to implement
ternary operators in a completely individual way:
Every individual is now able to spell her/his own way of understanding
the myriads of possible solutions to implement the different
incarnations of $if expr $elif expr $else expr $endif Perl constructs
and their relatives, in any imaginable and unimaginable perlish way.
This is of course due to the radical use of continuations, together with
dynamic syntax rules.
I have to admit that this example code took me another two days, and
three days of theoretically testing every thinkable implementation
possible.

There is no single way to say it. Just say it. 100 Python people will
just say "say what?" or "ni!". 10000 Perl people will love and support
my message. Messias, you did so absolutely right, finally!
Isn't that amount of love and support worth a paradigm change?

I'm very happy that I became converted to this remarkable
language in such a short time. It took me only two days to do the
whole implementation (that is, abandoning almost all of the code).
I will spend the next six months doing the debugging, and the next
10 years doing the porting:

I'm now happy to tell this to all my customers and sponsors:
After having ported all your code from Stackless Python 1.0 to 2.0
and almost to 3.0, I now would like to be paid for porting your
whole Python application to Stackless Perl 5.0. I know you are happy
with this since you knew from the beginning, that this would be most
effective in the first place. Sorry for messing with Python for all
the years. This was a major design flaw, that I realized a few days
before. This principle of very fast design changes makes Open Source
so attractive to me.

Downloads are avaliable here: http://stackless.apriperl.org

This was a statement about Stackless Perl 5.0, just an intermediate
step towards Stackless Perl 6.0, which will make use of the
outstanding feature of white space overloading with continuations.
This feature will be presented on the Python/Perl Integration
marathon sprint session in August 2005 in Luxemburg.
Please apply early, this is a really small country.

BTW., can any knowleadgeable body please give me a crash course in Perl
programming? I would like to be able to produce some testing code, but
I didn't have the time to RTFM, yet. :-)

cheers -- chris at stackless.apriperl.org

p.s.: This message was intentionally not cross-posted, since most
readers will be assimilated to the Perl community anyway, the
sooner or later...

-- 
Christian Tismer             :^)   <mailto:tismer at tismer.com>
Mission Impossible 5oftware  :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34  home +49 30 802 86 56  pager +49 173 24 18 776
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/


_______________________________________________
Stackless mailing list
Stackless at www.tismer.com
http://www.tismer.com/mailman/listinfo/stackless




More information about the Stackless mailing list