Categories
Posts in this category
- A shiny perl6.org site
- Creating an entry point for newcomers
- Sprixel, a 6 compiler powered by JavaScript
- Another perl6.org iteration
- Blackjack and Perl 6
- Why I commit Crud to the Perl 6 Test Suite
- Report from the Perl 6 Hackathon in Copenhagen
- Custom operators in Rakudo
- Defined Behaviour with Undefined Values
- Dissecting the "Starry obfu"
- Perl 6: Failing Softly with Unthrown Exceptions
- The first Perl 6 module on CPAN
- Google Summer of Code Mentor Recap
- Building a Huffman Tree With Rakudo
- Immutable Sigils and Context
- Is Perl 6 really Perl?
- Perl 6: Lost in Wonderland
- Lots of momentum in the Perl 6 community
- Musing and the future of feather and the Pugs repository
- Musings on Rakudo's spectest chart
- My first executable from Perl 6
- Trying to implement new operators - failed
- Let's build an object
- Perl 6 is optimized for fun
- How to get a parse tree for a Perl 6 Program
- Perl 6 in 2009
- Perl 6 ticket life cycle
- The Perl 6 Advent Calendar
- How to Plot a Segment of a Circle with SVG
- Publicity for Perl 6
- Rakudo architectural overview
- Rakudo Rocks
- Rakudo "star" announced
- Rakudo's rough edges
- Rats and other pets
- Releasing Rakudo made easy
- Set Phasers to Stun!
- Starry Perl 6 obfu
- Recent Perl 6 Developments August 2008
- Strings and Buffers
- Subroutines vs. Methods - Differences and Commonalities
- A SVG plotting adventure
- A Syntax Highlighter for Perl 6
- Test Suite Reorganization: How to move tests
- The Happiness of Design Convergence
- Perl 6 Tidings from September and October 2008
- Perl 6 Tidings for November 2008
- Perl 6 Tidings from December 2008
- Perl 6 Tidings from January 2009
- Perl 6 Tidings from February 2009
- Perl 6 Tidings from March 2009
- Perl 6 Tidings from April 2009
- Perl 6 Tidings from May 2009
- Perl 6 Tidings from May 2009 (second iteration)
- Perl 6 Tidings from June 2009
- Perl 6 Tidings from August 2009
- Perl 6 Tidings from October 2009
- Timeline for a syntax change in Perl 6
- Visualizing match trees
- We write a Perl 6 book for you
- When we reach 100% we did something wrong
- Where Rakudo Lives Now
- Why was the Perl 6 Advent Calendar such a Success?
- What you can write in Perl 6 today
- Why you don't need the Y combinator in Perl 6
Sun, 03 May 2009
Rakudo's rough edges
Permanent link
Rakudo rocks, it has many cool and convenient features - but it also has its rough edges. Some things really need improvements.
The Rakudo developers know about these, but by shedding a light on these edges I hope that I motivate people to work on them, as well as giving fellow Rakudo users the feeling that they are not alone with their woes.
Here they are:
- Missing line numbers in error messages
- Can't initialize attributes in BUILD methods
- Performance
The first one is pretty obvious: While parse errors show a line number in the error message, other compile time errors and parse errors don't. When debugging a larger application that's really a pain. I've been told that this is very close to being implemented, and maybe it is at the time I get this blog post published, so here is hope.
If you've only toyed around with Rakudo a bit, you might not have hit the
second item on my list. Perl 6 has a rather sophisticated object model, and
Rakudo implements large parts of it. But in larger applications it still feels
a bit hacky because you can't use the BUILD submethod to set up
attributes, it dies with a Null PMC access. Therefore one has to
revert to custom init methods, and is always in danger of forgetting to call
it.
Performance again is very obvious: Rakudo has a startup time of nearly a second, and both execution and compilation is very slow. Thanks to module precompilation it is somewhat manageable in bigger projects, but it's still something that needs improvement. Thankfully Allison Randal is reworking the calling conventions in Parrot, and we can hope for some speedup there.
There are other things that could use some polishing, but which seem of somewhat lower priority to me:
- Syntax errors could be more specific.
- The error
say requires an argumentshould only appear for an otherwise syntactically correct statement, not if there's a syntax error later in the code - it is rather misleading in that case. - When the user lets his program
die(), parrot's stack trace should not be shown - if a stack trace is desirable, then one showing only Perl 6 routines. - A mechanism for controlling warnings would be very welcome.