On this special day of the year, another Perl 6 Weekly finds its way to you!

On Bufs and Blobs

The past week lizmat spend most of her time working in making Buf s and Blob s faster. Many of them micro-optimizations, they appear to have paid off at a more macro level, e.g. running the tests of RabidGravys modules (down from 31 minutes to 17 minutes). This was mostly achieved by adding more candidates for certain methods, and by rewriting internals to make more use of nqp:: operations, rather than high level ops. Savings were also obtained by use a lot less intermediate Buf s, so all operations tend to be taking a lot less memory now.

Two new Buf methods were added: allocate , and reallocate .



my $b = Buf.allocate(10240, (1,2,3)); # allocate 10K, with 1,2,3 pattern

$b.reallocate(4096); # change allocation to 4K



At the moment, this functionality is still pre-release, so can be changed at any point in time.

Three “missing” methods were also added to Buf : pop , shift and splice .

Unfortunately, the added functionality in the Blob and Buf revealed a performance issue in punning a role into a class. This manifests itself by taking about .35 CPU seconds to do the punning of the first Buf in a run. But this should be taken care of by the time you read the next Perl 6 Weekly.

REPLing On

Rob Hoelz merged the work that Salvador Ortiz had done on making the multi-line REPL just DWYM. So do check out our new, improved REPL if you have a chance!

Fixes and other notable changes

Trying to use a module with compilation errors, no longer shows the compilation error twice.

subbuf-rw no longer works on Blob , but only on defined Buf s. This makes sense, as Blob s are considered to be immutable. This change also made it possible to make subbuf-rw a lot more memory friendly, and therefore a lot faster.

no longer works on , but only on defined s. This makes sense, as s are considered to be immutable. This change also made it possible to make a lot more memory friendly, and therefore a lot faster. A module can now print to $*OUT while being compiled without messing up the precompilation process.

Perl 6 mentions on Wikipedia

In a mail to the Perl 6 Language mailing list, Damian Conway notices the lack of Perl 6 mentions on Wikipedia:

As Perl 6 is now the pre-eminent example of the imperative,

declarative, functional, parallel, concurrent, pipelined, vector,

object-oriented, aspect-oriented, reactive, introspective, and

metaprogramming paradigms, surely it should be mentioned

on all those wiki pages?

If you want in, you know what to do!

Blog Posts

Only Three. Of which one really sad.

Memorables From The Backlog

Scanned the first 2 weeks of February: a nice trove of finds!

Ecosystem Additions

GetOpt::Long by Leon Timmermans

Algorithm::TernarySearchTree by okaoka

XML::Class by Jonathan Stowe

Scientist by Lance Wicks

Locale::Codes::Country by Dean Powell

Winding down

Yup. Another one in time. On the extra day of the year. See you next week!