The Raku Programming Language Collect, Conserve and Remaster Project
Originally published on 27 November 2008 by Jonathan Worthington.
Today was my weekly Vienna.pm-funded Rakudo Day, and I spent it digging into the RT queue to see what bugs and patches people had been sending in and do some fixes and patch application. Here’s what I got up to.
my $a; $a = $a + 1i; led to Parrot giving us a multiple dispatch failure. I fixed this by making sure any non-Complex values were coerced before we tried to get Parrot to do the addition, so you now get the auto-vivification that you expect and this just works.Range type constraint on an attribute in a class led to a Null PMC Access. I was a tad baffled, until I discovered a missing null check in an attribute cloning routine.$a .= "A" would give you a more helpful error message. In fact, the compiler was trying to, but was calling panic on something that didn’t know how to. Fixed and now it tells you that you were meant to write a method name over on the RHS..= didn’t work out so well if the LHS was an index into an array (like @a[0]). It didn’t work for doing the equivalent with hashes either. Thanks to PAST improvements since I did the first cut of .=, it was now trivial to refactor .= to do the right thing.& sigil, and added a couple of spectests to cover it.& sigil work properly - they were meant to but there was an small bug - and fixing up is copy a bit. We run through the first 10 values, and then hit Parrot’s developer-aiding recursion limit in the 11th. But computing the first 10 pretty much shows we can do it. I pondered upping the limit for Rakudo (a default value of 1000 calls deep is compiled into Parrot, but it’s changeable at runtime), but the limit is good for now while we’re in development. Better to catch infinite recursions early.So, a day full of bug fixing rather than doing shiny new features. Which I guess makes not so exciting reading, but I hope this contributes to a more stable Rakudo and a better experience using it. Plus there’s tests to cover the issues that were reported and fixed, meaning we’ve got better test coverage and some hope of not regressing on any of these in the future. :-) Thanks to everyone who provided the feedback so we knew these bugs existed, and to Vienna.pm for funding me to do the fixes.