2016.26 Another Quick One From Orlando

While packing for travel homeward bound, a short Perl 6 Weekly from Orlando, FL again. The Perl Conference 2016 is over and all of the videos (except this one and this one) are now online. Here’s a list of the (perhaps vaguely) to Perl 6 related ones:

Core Developments

  • Map wasn’t considered a value type (which it should be, as it is immutable), and BagHash/MixHash were (which they shouldn’t be). This is now corrected.
  • The pod in Test.pm6 now refers to the language/testing section of the Perl 6 documentation.
  • Bind failures, e.g. because of is rw, now mention that reason for failure also, thanks to Timo Paulssen.
  • Rakudo Perl 6 continues to build on Perl 5.10, thanks to Zoffix Znet.
  • Handling of Mu in the REPL is corrected thanks to Salvador Ortiz.
  • And many other, smaller and larger optimizations.

Blog Posts

Ecosystem Additions

Gems From The Backlog

Winding Down

And now, homeward bound! See you next week!

2016.25 A Quick One From Orlando

Busy, busy, busy. The Perl Conference in Orlando, FL is at full steam. Which means extra clothing to counteract the air-co overcompensating for the heated discussions following the presentations. No, just kidding. The air-co is just set at a way too low temperature. But I guess, that’s just a local custom.

Anyways, we’re told that all presentations will be videod and posted online. The first (Perl 6 related) ones have already arrived:

Upcoming live streams will be:

2016.06 Rakudo Compiler Released

This week also saw the release of the hundredth monthly Rakudo Compiler Release. This time, done by Zoffix Znet.

Core Developments

  • The work of Jonathan Worthington on making return and next much cheaper, as well as subroutine overhead in general, landed just before the release. So, calling a sub or a method has now become cheaper. Also return and next have now become simple CONTROL exceptions. Which means they can now actually be caught by a CONTROL block. Which caused a small regression in Inline::Perl5, but which was easily and quickly fixed.
  • Tobias Leich fixed an issue with NativeCall that would make the precompiled version of a module using NativeCall balloon by about 1MB (by basically copying all of the settings) for no good reason. This had severe performance implications for any module using NativeCall, which are now luckily gone!
  • A bug in comparing Version objects was found by Zefram, and fixed.
  • An issue with reverse dependencies of installed modules, was fixed by Stefan Seifert. He also fixed an issue with circular dependencies on installed modules.
  • Zoffix Znet fixed various issues with Test‘s cmp-ok.
  • Promises can now also return Mu, which was also fixed by Zoffix Znet.
  • samewith can now also be used on non-multi subs.
  • The is required trait on attributes can now also take a Boolean (to indicate whether or not the attribute is really required or not, which can be handy in parameterized roles), or a string to indicate the attribute is required and customize the error message with when the attribute is not specified at object creation.
  • split now has a more awesome error message when specifying NaN as a limit.

Blog Posts

Ecosystem Additions

A little more than last week:-)

Winding Down

No time for backlogging or gem searching. See you next week! Possibly delayed again, or earlier than usual due to travelling.

2016.24 Speeding To TPC

The Perl Conference (aka YAPC North America, or YAPC::NA) will be upon us in less than a week. A Q&A Session with Larry Wall will be hosted by D Ruth Bavousett. If you want to know the answer to a burning question you’ve always wanted to ask Larry, you can still add your question. So don’t be shy!

On the Wednesday, there will be a Pull Request Challenge where at least Tom Browder and yours truly will be around to hack or help you hack on Perl 6 and/or the ecosystem.

Meanwhile on /.

As it turns out, Larry will be answering even more questions, namely also on Slashdot. Although I must admit, I find the questions put there so far, to really be below par. 😦 Also check out the Reddit comments.

London PM Technical Meeting

The next London PM Technical Meeting on 15 June, will have a Perl 6 related talk by Nigel Hamilton titled “SixFix – a Weekly Dose of Perl 6 Powered by Perl 5”. Check it out if you’re in the neighbourhood!

Core Developments

  • Zoffix Znet did some excellent work on the is-approx test function from Test. Check out the extensive description.
  • Daniel Green noticed that a lot of occurrences in the settings where iterators are involved, used to store the result in a temporary variable to stop it from being sunk. It turned out that many of them were not necessary, so they were removed.
  • Stefan Seifert fixed a problem with pre-compilation on filesystems with coarse timestamps.
  • Tobias Leich fixed a problem with the storage of reverse dependencies of installed modules.
  • Daniel Green fixed a problem with non-ascii numerals not being accepted in the :16times Pair format.
  • TimToady removed a warning when creating an Enum from a Range.
  • Brad Gilbert spotted and fixed a problem with eqv on Match objects.
  • Salvador Ortiz suggested passing on Failures from custom BUILD methods in a class, instead of throwing them. This has now been implemented but still pending approval of TimToady.
  • More of the REPL has been moved from nqp to Perl 6 level, thanks to Brock Wilcox.
  • Quite some optimisations were done by Elizabeth Mattijsen, such as:
    • .map between 10% and 30% faster.
    • .unique, .repeated and .squish 10% to 20% faster.
    • gather/take about 10% faster.
    • basic object creation (using either .new or .bless) now up to 3x faster.
    • one-arg (+@a) and slurpy signature (*@a) and (**@a) handling between 20% and 4x faster.
    • and many other more minor optimisations, which you may or may not notice in your code.

    The results of these optimisations in the past week are very visible in the Text::CSV performance graph kept by H. Merijn Brand: for the first time, the benchmark dropped below 10 seconds, down from 256 seconds from the first benchmark in October 2014!

Blog Posts

Ecosystem Additions

Feels like everybody is preparing their presentations, instead of adding modules!

Gems from the backlog

Culled from the period 1 to 6 June.

Winding Down

Next week’s Perl 6 Weekly will come from TPC, barring unforeseen circumstances.

2016.23 Friendlier Bisecting

AlexDaniel has been working on making the bisectable bot on the #perl6 IRC channel much more user friendly, judging from these examples. Just another example of how important IRC is for the development of Perl 6 and the ecosystem and community around it. If you haven’t touched IRC in years and want to keep really up to date, then bring out your IRC client and head to #perl6 on irc.freenode.org and join the club!

Core Developments

  • A new, improved version of MoarVM has landed in rakudo HEAD. About 10% improvement in compilation time, and less memory use, are the most obvious changes. Less obvious are some spesh fixes that are also part of this update.
  • Arrays with holes (e.g. with :deleted elements) now correctly iterate with autovivifying containers of the correct type.
  • Many aspects of iterating over Lists and Arrays and iterating in general, have been improved. Both with regards to CPU usage, as well as memory usage. Depending on your application, this may be very noticeable, or hardly noticeable at all.
  • use MONKEY-WRENCH and use MONKEY-BARS have been added as reserved names for future usage.

Blog Posts

Ecosystem Additions

Winding down

The weather has not been very work ethic inducing in these parts. So still no gem searching yet. The temperature is expected to go down in the coming days, so there’s a good chance of a beefier Perl 6 Weekly next week. See you then!

2016.22 Conference Season Taking Off

You know the conference season is really starting again when Damian Conway is leaving the winter in his lovely Australia to go out in the world to give presentations and tutorials! On 19 June, he will give the Perl 6 – Transparadigm Programming 101 Tutorial in Orlando, Florida, at the venue of the The Perl Conference. Then, the next day, he will give the Keynote. And then a week later, in Toronto, Canada, he will give two presentations: Perl 6 – More Concurrency, Less Contusion on 27 June, and On The Shoulders Of Giants – 400 Years Of Perl 6 on 28 June. The tutorial is not free, the Keynote is (if you’re attending The Perl Conference, that is). And for the two presentations in Toronto, you just have to show up (well, after RVSPing yourself)! If you haven’t seen TheDamian in action before, this is your chance!

All You Wanted To Know About Running Perl 5 In Perl 6, But Were Afraid To Ask

The video of Stefan Seifert‘s excellent “Perl 5 and Perl 6 a great team” presentation from the German Perl Workshop this year, has become available. If you don’t have enough time to watch the video (which would be a pity, but there you go), you could also take a look at the associated Reddit comments, or browse the slides.

More German Perl Workshop Videos

It turns out more Perl 6 related videos from the German Perl Workshop have become available:

Core Developments

Not too much to see, but there is some nice work going on in MoarVM that is just waiting to land!

  • Hash.keyof now properly returns Str(Any) (meaning: take Any value, coerce to Str and use that for the key).
  • List.new is now about 4x as fast, iterating over a List is now 10% faster.

Blog Posts

Zoffix at it again!

Ecosystem Additions

Quite a nice catch this week!

Winding Down

Still low on energy, so no gem searching just yet. Be sure to check again next week!

2016.21 A Quick One From Houston

Not a lot of time this time, but fortunately the past week appears to be low on events. So this should work out.

2016.05 Release

Rob Hoelz did the 2016.05 Rakudo Compiler Release. Please note there is no associated Rakudo Star release just yet.

A New Bot Bisecting

AlexDaniel created a new bot on the #perl6 channel: bisectable. It basically will do a bisect for you to find when the output of a code fragment changes. For more info, see his introduction and explanation. A real cool addition indeed!

Core Developments

  • Stefan Seifert made sure that precompilation is done by a “normal” Perl 6 executor when running inside a “debug” executor.
  • Lloyd Fournier and Stefan Seifert continued to work on squeezing out all precompilation cache related bugs.
  • Elizabeth Mattijsen re-implemented the .Rat coercer on Inf, -Inf and NaN after TimToady shone his light on the matter. Basically, Inf.Rat.Num (and friends) now round-trip, because Inf is represented as a <1/0> Rat.

Blog Posts

Ecosystem Additions

Winding Down

The continuous 30+℃ outside and 20-℃ inside temperature changes, are taking their toll. Hope I’ll be feeling better next week!

2016.20 Packaging Progress

Everything is larger in Texas, I guess. Like catching up with friends and needing more time to get rid of jet lag. So apologies for the delay, but here is your weekly dose of news from the Perl 6 world, straight from the OSCON in Austin, Texas. Where Jeff Goff gave an excellent 3.5 hour “Introduction to Perl 6” Tutorial yesterday, and TimToady will give the Perl 6 – Believe It Or Not! keynote in Ballroom A tomorrow.

The Perl Conference Returns

It seems fitting to write about The Perl Conference while at OSCON, which started life as “The Perl Conference” before becoming a more general Open Source Event. This year, the Perl Conference (aka YAPC::NA) has gotten its name back. It will be held on 20, 21 and 22 June in Orlando, Florida, with tutorials given on 19, 23 and 24 June. Most of the conference schedule is already available, with these Perl 6 related highlights:

And of course, I expect there will be quite a few lightning talks with a Perl 6 reference.:-)

YAPC::Europe 2016

The main European Perl Conference (still called YAPC::Europe at this point in time), will be held on 24, 25 and 26 August in Cluj-Napoca, the Silicon Valley of Romania. No schedule available yet, but you can still submit your Perl 6 talk!

Core Developments

  • The work that Jonathan Worthington described in his Framing The Problem blog post, has been merged in MoarVM and bumped to Rakudo. The major change is really how call frames are managed. It is also the first (and largest) part of a number of improvements regarding invocation and closure handling. The changes so far are mostly likely to help programs that do CPU-bound parallel work, or that keep many thousands of closures in memory. The testing of all of these changes, also shook out a number of other bugs, which also got addressed.
  • Stefan Seifert merged a large chunk of work on the PrecompilationStore overhaul. The way precompilation files and the accompanying dependency information is stored was completely redesigned, so it’s no longer necessary to have a file lock on the PrecompilationStore for read access (i.e. for loading modules). This change also removes the need to have write access to the standard repositories, meaning that you no longer get permission errors with a system wide rakudo installation. It’s now also possible to store the result of dependency verification necessary when (probably unrelated) modules were installed since a file was precompiled, speeding up module loading in the common case. So now, for the first time, it’s possible to package modules for Linux distributions, including the precompiled files!
  • Zoffix Znet fixed several issues related to subtest, making it easier to spot the start of subtests in the TAP output.
  • Jonathan Worthington fixed a bug in take-rw that TimToady had spotted while preparing his OSCON keynote.
  • Pepe Schwarz fixed some container issues with Blob/Buf on the JVM.
  • Elizabeth Mattijsen removed all of the custom classes for $*USER and $*GROUP, because they are no longer needed now that we have IntStr allomorphs, thanks to ShimmerFairy.
  • Elizabeth Mattijsen also introduced a .Map coercer to handle the case of the .enums on an Enum returning a mutable Hash rather than an immutable Map.

Changing IRC Landscape

On-line communication within the Perl 6 World has grown so much, that one IRC channel (#perl6 on irc.freenode.org) has not been enough for a long time. So in the past, the following special purpose alternate channels where added:

  • #perl6-toolchain for Perl 6 toolchain discussions (testing, installing, monitoring, continuous integration, Quality Assurance)
  • #perl6-release for Perl 6 releases and more generic release process related discussions
  • #p6dev for Perl 6 core development discussions. However, since the name of this channel does not adhere to Freenode channel naming guidelines, it was changed to #perl6-dev. So please check out that channel instead in the future, please!
  • Finally, if you’re interested in more low level discussions about the MoarVM virtual machine that powers Rakudo Perl 6 by default, you can also check out the #moarvm channel.

Module Installer Alternatives

Historically, panda has been the installer of Perl 6 Modules in the past. Since then, a lot has changed. A lot of the functionality of panda has been absorbed into the core with the great work that Stefan Seifert has been doing. Tadeusz Sośnierz has been working on redpanda, a cpanm-like client for installing Perl 6 modules. Meanwhile, zef has made inroads as a perl6 luxury package manager. Showing again, there is more than one way to do it!

Making Noise

The Perl 6 Noisegang is group for the promotion and support of audio and music application development in Perl 6. The aim of this group is to provide a focus for people writing sound oriented applications in Perl 6 and to help people find or use the tools and libraries that are already available. If there is stuff out there they want to bring it to people’s attention. There’s also an IRC channel available on #perl6-noise-gang, and a backlog.

Blog Posts

Zoffix Znet on a roll!

Ecosystem Additions

Winding Down

What I thought would be a small blog post, turned out to be quite large in the end. Next week’s Perl 6 Weekly might be delayed again due to travelling. Or not. :-) See you the next time!