Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re^2: Your Perl 6 wishlist?

by mugwumpjism (Hermit)
on May 24, 2005 at 07:31 UTC ( #459834=note: print w/replies, xml ) Need Help??

in reply to Re: Your Perl 6 wishlist?
in thread Your Perl 6 wishlist?

One of the great things about pugs development is that when you wish for things, half the time, they've already been done.

Let's examine your post in a constructive fashion and try to extract from it wishlist items that he can use to effectively enhance the project, which is what autrijus was looking for.

  • The vaguest feeling that Perl6 syntax was entering the "clean up, clarify, rationalise and document phase" rather than the "throw it in and see if it flies" phase.

This is exactly what pugs was built to achieve; after all, most of Perl 6 syntax has already been defined in the Apocalypse and Synopsis documents on You can write Perl 6 programs today, and so long as you're not using any of the features that are still being "cleaned up, clarified, rationalised and documented", they will continue to work when Perl 6.0.0 is released.

I assume that you couldn't possibly be asking that all new development of language features must stop, or that all new features must release a specified stage before a release could be made with all features marked as "stable". After all, even Perl 5.8.6 has many features labeled as "experimental".

So the first one can be crossed off!

  • Some idea that some consideration was being given to ensure that the underpinning of the language (Parrot) will be capable of delivering the semantics of the language in something approaching real-time.

Perhaps you missed the part where Mandelbrot demo surpassed Perl 5 performance via parrot ?

This is great; you'd like some indication, which has already been given, so this one can be checked off.

  • That one of those charged with specifying those unerpinnings had actually attempted to use the existing implementations of them before blythly spec'ing that the replacement should work the same way as the previous implementations.

This point refers to things that happened in the past, so sadly regardless of whether or not it is true or how much everyone would desired it to be different, it cannot be so.

Unless, that is, you can build a time machine.

Perhaps you would like to clarify this point, as myself and several others are not quite sure what you mean. Maybe we are ourselves missing some historical context.

  • Some signs the runtime library for Perl6 will be architected to reflect it's cross-platform aspirations by virtualisation of it's requirements, rather than taking a mid-1980s standard and then force-fitting it upon every other platform.

The good news is that we have already thought of these virtualised requirements from very early days! Perl 6 has been designed and built with a high level of independance at each level. This means that your statement "the runtime library for Perl6" is actually a junction that refers to any(@perl6_runtimes).

Several people seem to have the idea that Perl 6 == Parrot. Not at all, parrot is just a virtual machine that was started around the same time, with providing a good platform for Perl 6 in mind. We have started from the bottom up with parrot, and the top down with Pugs. This has proven to be successful, as we have a prototype rules engine called PGE which is written in PIR!

So, Parrot might be written in C and this might not be cross-platform enough for you. But we can also go straight to Haskell, which is a self-hosting compiler and not a "mid-1980's standard". Also, we can target IMC, which you could in principal write a compiler to go to any target language or virtual machine from.

So this means we can target:

  • parrot directly via the platform-independant Parrot Bytecode
  • the platform-independant IMC language, for which there is imcc to go to parrot bytecode
  • C, via Haskell and Jhc/grim
  • Haskell, which is itself written in haskell and can even compile to bare metal

Again, we have found that there is a wishlist item which is already fulfilled! Hooray!

  • That the test suit of Perl6 components didn't simply bypass tests on inconvenient platforms in order to produce nice "headline" figures.

I'm not sure if you're asking for tests that are expected to fail to be run anyway. Actually in the Pugs code base, this happens anyway, and unexpected success is reported as such. So another item that can be crossed off! Even though, I don't think there are any such tests in that state in Pugs at the moment.

In the parrot run-time, these tests are not bypassed, their failures are noted and documented during development so that others porting to the platform may come along later and go straight to them. The test suite correctly notes that the tests are expected to fail, and does not run them. So they are not simply bypassed! In fact, it makes a good way to track the progress of porting to those platforms.

OK, so out of five points we crossed off four and need a time machine to change the past for the last one!

Thanks for your input!

$h=$ENV{HOME};my@q=split/\n\n/,`cat $h/.quotes`;$s="$h/." ."signature";$t=`cat $s`;print$t,"\n",$q[rand($#q)],"\n";

Replies are listed 'Best First'.
Re^3: Your Perl 6 wishlist?
by Anonymous Monk on Mar 24, 2012 at 10:14 UTC

    OK, so out of five points we crossed off four and need a time machine to change the past for the last one! Thanks for your input!

    And yet, here we are. And where is Pugs, Parrot, Perl6, AudreyT, or Mugwumpism .....

    And whose still here?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://459834]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (10)
As of 2018-06-18 16:42 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (110 votes). Check out past polls.