2016.9 Blobs Leaping Away

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 Bufs and Blobs 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 Bufs, 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 Bufs. This makes sense, as Blobs 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.
  • 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

Winding down

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

Advertisements

Got something to note?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s