http://www.perlmonks.org?node_id=459750

First, I'd like to thank revdiablo++ for inspiring this meditation with his Why aren't you using Perl 6 yet?.

Way back when I first started Pugs, I made up this (Imaginary) Perl 6 Timeline to reflect my expectations. To me, that graph measures "interest level", and we are in the slowly bouncing back phase.

I think it's pretty safe to say that mass migration to Perl 6 will not happen until the Hey, what was the big deal? phase, i.e. when reasons to migrate from Perl 5 become as compelling as current reasons for migrating from Perl 4. Meanwhile, I'm trying to use Perl 6 in production right now, both for new projects and improving existing projects; Inline::Pugs and pugs.pm introduced in Pugs 6.2.5 are helpful here.

There are other more-or-less independent factors that, when happened, can increase my willingness to use Perl 6 in my projects. Here is my wishlist (a.k.a. todo list ;-)), ordered by descending importance:

  1. An improved Inline::Pugs so I can call Perl 5's DBI.pm from Perl 6 code, and manipulate Perl 6 objects from Perl 5.
  2. A fully working Perl 6 compilation backend to Parrot or C, so Perl 6 can run in a very competitive speed.
  3. A more stable core language definition, with both online and offline documentation.
  4. Unit tests for the language and the "core" modules/pragmas I'd use.
  5. A few really neat Perl 6 modules that simply can't be done in Perl 5. A robust Seaside/Halo implementation that makes Rails/Catalyst pale in comparison; a combinator library that can be used for formatting, parsing and template generation; et cetera.
  6. Shared introspection, threading and debugging support for Perl 5 and Perl 6, as offered by Ponie.
  7. A translator from Perl 5 code to Perl 6, to ease migration efforts.
  8. ...after those, a fully bootstrapped Perl 6 compiler written in Perl 6, and for Larry to call it Perl 6.0.0. :-)

I'd like to know what other monks think about this. Feel free to list your wishlists, by reordering the numbers above and/or adding more items.

Replies are listed 'Best First'.
Re: Your Perl 6 wishlist?
by chb (Deacon) on May 24, 2005 at 07:06 UTC
    I want a book. Made from dead trees. It should have the title 'Programming Perl6' and a friendly animal on the front cover. It shold be _the_ reference I can rely on for a couple of years.
Re: Your Perl 6 wishlist?
by gaal (Parson) on May 24, 2005 at 08:27 UTC
    Deployment

    1. I want it to be easy to deploy Perl6 apps in places where only a minimal Perl6 runtime exists, and little else.
    2. I'm hoping Parrot gets fast enough that I'd need to depend on fewer c libraries than I do today.
    3. I want standard module management tools.

    #1 and #3 are somewhat at odds? Sometimes I'm wishing the runtime would have a centralized registry of installed modules; but sometimes I want each app to insulate itself from the possible harm of others installing/upgrading modules. The system has to know how to have two versions of the same modules installed, and I have to learn how to use that effectively. We should lift the good things from Java (PAR++!) but avoid the bad ones (Multiple JVMs on the same machine--!)

    Dialects, refactoring

    1. A core tool that gracefully degrades source code to ASCII ('»' → '>>' etc.). The other way 'round might be fun, but is less important.
    2. Once upon a time I wanted a 'use stricter' pragma for Perl 5 I could use for pedagogic purposes. I hope I get that in Perl 6, though I'm not holding my breath.
    3. Oh, I want to resurface the idea of a fully decorated AST from which you can reconstruct source code, including comment and whitespace. This is immensely powerful for IDEs (credit to BrowserUk).
Re: Your Perl 6 wishlist?
by VSarkiss (Monsignor) on May 24, 2005 at 02:00 UTC

      Let's just be sure not to mention database independance anywhere this time. Because as we all have become painfully aware, DBI provides database driver independance, not database independance.

      $h=$ENV{HOME};my@q=split/\n\n/,`cat $h/.quotes`;$s="$h/." ."signature";$t=`cat $s`;print$t,"\n",$q[rand($#q)],"\n";
        My plans for a query rewriting mechanism in DBI (via a preparse method) never got off the ground in DBI v1. But DBI v2 will be implemented in Perl 6 and will, I expect, include at least the mechanism from the start. Tim Bunce - just passing through...
Re: Your Perl 6 wishlist?
by BrowserUk (Patriarch) on May 24, 2005 at 03:03 UTC

    I hate being the one to say these things.

    In no particular order:

  • 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.
  • 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.
  • 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.
  • 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.
  • That the test suit of Perl6 components didn't simply bypass tests on inconvenient platforms in order to produce nice "headline" figures.

    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "Science is about questioning the status quo. Questioning authority".
    The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.

      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.

        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?

    A reply falls below the community's threshold of quality. You may see it by logging in.
Pugs can use CPAN modules now!
by audreyt (Hermit) on May 25, 2005 at 03:59 UTC
    So, it seems that my wishlist #1 is shared by many monks. With help from clkao, I've just implemented it. To wit:
    use Digest--perl5; my $cxt = Digest.SHA1; $cxt.add('Pugs!'); # This prints: 66db83c4c3953949a30563141f08a848c4202f7f say $cxt.hexdigest;
    If you want to play along, build the Pugs from trunk, and run Makefile.PL with the PUGS_EMBED environment variable containing "perl5". There's many rough edges, but they will be fixed in short order. Tests and suggestions welcome!
Stale installed files
by mugwumpjism (Hermit) on May 24, 2005 at 00:41 UTC

    How about a `make test' that won't ever fall back on installed modules?

    That way, when idiots break modules in ext/ right before release, you won't have a situation where just about all core developers/smokers don't notice, and end up making a new release because of it.

    $h=$ENV{HOME};my@q=split/\n\n/,`cat $h/.quotes`;$s="$h/." ."signature";$t=`cat $s`;print$t,"\n",$q[rand($#q)],"\n";
Re: Your Perl 6 wishlist?
by mattr (Curate) on May 24, 2005 at 16:30 UTC
    It would be nice if you could tune a tradeoff between runtime intelligence and pure speed. Just how fast will it be?

    I am expecting parrot will be very fast, and it seems that perl 6 ought to be able to move more quickly if you are willing to sacrifice runtime "intelligence" and DWIMity. You could flag a critical spot for optimization.

    I know perl isn't about execution speed, but on the other hand, it ought to be possible to dial in blinding speed if needed. There are many reports related to parrot and perl6 about how it is extremely slow, it is extremely fast, you can restrict variables say to just integers, you have a JIT, etc.

    I'd like to know what the reality will be and when someone will stuff perl6 onto an FPGA! Then we'll take over the world, etc. To be serious, am I right in expecting that Perl 6 will be as fast but more advanced than Perl 5, whereas there will be the possibility of more parts of your program (or individual modules) running much faster due to precompilation? Will Perl6 be able to use modules written in other languages, or is this just a buzzword from the parrot project?

    Since we're on wishes, I'd also like an easy (no, *really* easy) way to package perl 6 programs/systems with the engine (parrot?) into a portable package. And one target should be J2ME for mobile phones.. how small can a perl6 program be with only files necessary to run it? Can a simple one be compiled to parrot and just that with a parrot engine? More ways to use perl for fun and profit, and more ways to spread into other domains - not just as the glue but also as functional replacements.

    Also I think the perl 6 and parrot team should steal some of those guys working on the new open java vm. We need fast, robust core code and the world does not need more java! ("Hey, you said this was a flame retardant suit right?")

      As to the deployment, I think you'll be happy to learn that Parrot is intended to support what you're asking for. For more information, see this subthread. Elian is Dan Sugalski, who was the lead Parrot designer until just recently.

Re: Your Perl 6 wishlist?
by Anonymous Monk on May 23, 2005 at 23:51 UTC
    * Easy and capable nci handling. clkao
Re: Your Perl 6 wishlist?
by JanneVee (Friar) on May 24, 2005 at 11:42 UTC
    My wish is a simple one(yeah right, it isn't that simple), a powerful and robust module for statistics and math.
      Perl isn't Mathematica, nor does it have the statistical analysis tools of C (eg. ROOT), but the Math:: namespace houses a couple of powerful tools! Anyhow, a package that can do a lot of math related things is extremely difficult to design.

        I've seen them, used them(mostly PDL) and I know that is extremely difficult to design. Further I know that perl isn't mathematica. But the nice thing about perl is that it is quite handy when you want to parse large textfiles of data and calculate something on that data without the need to break out in a separate software to do the "hard" stuff on it.

        Also, I do believe that this thread was started what we monks would wish for in Perl6 and not what is available in Perl 5. I thought that math module adapted for Perl6 would be a nice addition.

Re: Your Perl 6 wishlist?
by Anonymous Monk on May 24, 2005 at 14:33 UTC
    Some things that would really get me to use Perl 6 is complete support for output to Parrot, and the ability to call Perl 6 code from Perl 5 and Perl 5 code, modules and XS modules from Perl 6. The last is partly at least the domain of those connecting Perl 5 to Parrot, such as the Ponie project. I depend on a lot of Perl 5 XS modules which interface to C code and I would need to be able to use those from Perl 6, and I also want to be able to use all of the modules in CPAN, either if they are written in Perl 5 or Perl 6, no matter whether I am using them from Perl 5 or Perl 6. I would like to see Perl 5 and Perl 6 coexist beside each other and share the same community of modules and benefit from each others inertia.
Re: Your Perl 6 wishlist?
by adrianh (Chancellor) on May 24, 2005 at 15:32 UTC
    I'd like to know what other monks think about this. Feel free to list your wishlists, by reordering the numbers above and/or adding more items.

    Top of my list would be: Another eight hours in the day. Another day in each week. Another week in each month. Another month in each year. That way I might have the spare time to play with Perl 6 properly :-)

      Another eight hours in the day. Another day in each week. Another week in each month.
      No! Then we'd only get paid half as often! ;)

      ----------
      My cow-orkers were talking in punctuation the other day. What disturbed me most was that I understood it.

Re: Your Perl 6 wishlist?
by pernod (Chaplain) on May 26, 2005 at 09:20 UTC

    Devel::Cover in Perl 6 would be fantastic. I know Paul Johnson got warnocked on the perl6-compiler list when he mentioned this some time ago, but his ideas in that message are very interesting.

    pernod
    --
    Mischief. Mayhem. Soap.

      perl6-compiler is about 1% of the day-to-day development... :-)

      pjcj and I has discussed this on #perl6, and Pugs now has range information for every single token in the source file (that's why it can report errors down to column number ranges), and pjcj thinks it's probably sufficient for Devel::Cover to harness from.

Interactive Debugger / Debugging hooks!
by mugwumpjism (Hermit) on May 26, 2005 at 03:00 UTC

    Don't know why I didn't think of this before, but the thing I miss most about pugs is no -d. Yes, I know that you can use say at strategic places, and re-run the program, but I really like interactive debuggers. Maybe it was all that time spent with DOS debug pulling apart my old XT's BIOS and hack 8086 machine code, or the extensive use of gdb to debug my C++ programs at university. I've just always been a debugger person.

    $h=$ENV{HOME};my@q=split/\n\n/,`cat $h/.quotes`;$s="$h/." ."signature";$t=`cat $s`;print$t,"\n",$q[rand($#q)],"\n";
Re: Your Perl 6 wishlist?
by Cap'n Steve (Friar) on May 25, 2005 at 06:51 UTC
    I just want everything in 5.8 that's marked as experimental to work, specifically the compiler/bytecode features. It doesn't take much to keep me happy.