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!

2016.19 Summer Strikes

It seems like many people have taken advantage of the nice weather (well, for most of the core developers).

Rakudo Star 2016.04 Installers

Steve Mynott made sure that there is a Windows (64 bit) Installer for Rakudo Star 2016.04. Somehow the fact that he also made a Mac OS-X Installer for Rakudo Star 2016.04, was missed by yours truly. Generically, you should look at the How To Get Rakudo page to see which installers are available.

OSCON

Next week will see OSCON again, this time in Austin, Texas. There will be a Perl 6 related tutorial and a Perl 6 keynote there!

Core developments

  • Inf.Int and NaN.Int fail. Inf.Rat and NaN.Rat didn’t, but now do. All these cases now have failing todo tests in roast, as apparently it was at one time felt that these cases should just return itself. Until consensus is reached, this is now a release blocker.
  • Promise.result is now hardened against spurious OS wakeups. This made the HARNESS_TYPE=6 make spectest run a lot further, but somehow still the 198th test-file fails completely, and then about 10-20 test-files later we have a hang. Further investigation is pending landing of some/most or all of MoarVM’s improvements that Jonathan Worthington is working on.
  • Default stringification of an object now uses a unique object ID, rather than the memory address (which can change if an object is promoted out of the nursery). This should fix spurious test failures where is is used (which uses stringification on the object to compare).
  • Built-in to-json and from-json are now DEPRECATED. They were never intended to be exposed.
  • Junctions should be a lot faster in usage now. The auto-threader is now 2x to 3x faster, whereas Junction.ACCEPTS is 4x faster, and Junction.Bool is now 20x faster. Junction creation with any(), all(), none() and one() is now 14x faster.
  • Many, many other smaller optimizations, which you may or may not notice when running your code.

Blog Posts

Ecosystem Additions

Winding Down

Having seen too much sun in the past days, yours truly didn’t have the energy to go backlogging for gems. Next week’s Perl 6 weekly may also be delayed because of travelling to OSCON. Otherwise, everything is ok:-)

2016.18 Long Awaited Landings

This week saw the landing of Stefan Seifert‘s two-month work to make precompilation of modules better maintainable and less resource-hungry. We can now actually use the precomp files generated on installation, so e.g. users no longer have to wait on first use for precompilation of system installed modules. Same is true for developers who no longer have to wait for precompilation of installed modules just because they run their code with -Ilib. This also means that we spread around precomp files much less. So lib/.precomp will usually only contain precomp files for the modules we find in lib/. Finally, this new repo format fixes an issue with packaging modules for Linux distributions.

This week also saw the landing of Leon Timmermans‘ eight-month work on a Perl 6 Test Harness. This allows us to run the spectest/stresstest using a Perl 6 implementation of the TAP protocol. This should allow us to more easily and more rigorously test Perl 6, simply by setting the environment variable HARNESS_TYPE to 6. Unfortunately for those of us on OS X, this does not work yet: this seems related to a bug with awaiting a Promise. Anyway, this is dogfooding at its best! And a step closer to not needing Perl 5 to make and test Perl 6.

QA Hackathon in Rugby

This year’s QA Hackathon took place in Rugby, England. There were quite some accomplishments. I’ve taken the liberty of extracting the Perl 6 related ones for your convenience:

  • H.Merijn Brand (Tux)
    • Sat with Tadeusz Sośnierz (‎tadzik‎) to get rakudo build bleading edge perl6 (moar & nqp) so my timings make more sense.
    • Sat with Liz to optimize Text::CSV for Perl 6 and then fixed a problem with aliasing multi-methods (ticket filed).
  • Elizabeth Mattijsen (Liz)
    • Implemented $*MAIN-ALLOW-NAMED-ANYWHERE feature, allowing a more familiar CLI to scripts (inspired by tadzik++).
    • Implemented comparison operators other than cmp for Version objects.
    • Looked deeper into how Version objects are actually two types of objects.
    • Make Test.pm6 a bit faster (spectest now runs 5% faster).
    • Looked at/Merged leont++ work wrt to running spectest using a Perl 6 harness.
    • Fixed a crash in Channel handling found by MarcusRamberg.
    • Discussed a lot of PAUSE / Perl 6 / CPAN issues with available people, which should be coming to fruition later this year.
    • Helped Perl 6 newbies by answering Perl 6 questions.
  • Philippe Bruhat (‎BooK‎)
    • Hacked on Git::Version in Perl 6 with Elizabeth Mattijsen (‎liz‎), which led to discussions about the Version class in Perl 6, and several rakudo commits by Liz to improve it.
    • Improved (by a factor of about 25) the number of tests in Perl 5 Git::Version::Compare after reading the Perl 6 tests for Version.pm, and started working on stress tests for Perl 6 Version.pm using the same technique.
  • Leon Timmermans (‎leont‎)
    • Worked on making Perl 6’s build less dependent on Perl 5.
  • Tadeusz Sośnierz (‎tadzik‎)
    • Worked on much needed and long overdue panda rework.
    • Released Module::Toolkit and App::redpanda as a part of that.
    • Found and fixed a bug in Rakudo with “where” constraints in MAIN wouldn’t properly trigger USAGE (later improved by peschwa++).
    • Released Getopt::Type (not really toolchain related).
    • Fixed the Qt profiler frontend to work on the new profiler output format.
    • Added an easy way to build the bleeding rakudo in rakudobrew.
    • Went through a lot of bugs in panda and rakudobrew.

Blog Posts

Other Core Developments

Not too much else happened: some minor bugs were fixed.

  • Fixed bug in Str.substr and Str.substr-rw that in some cases would return a handled Failure, rather than an unhandled one.
  • Similarly, List.minmax would ignore failures and mark them as handled: this has been fixed, and as a side-effect, it is now up to 3.5x faster.
  • Basic signal handling got added to the JVM backend: alas so far only for signals that will exit the program.

Ecosystem Additions

More than one distribution per day added in the past week. M. Hainsworth created a very nice Ecosystem Citation Index. The additions for this week are:

Winding Down

Some loose ends from last week basically made me so tired, that I will need to postpone looking for gems in the backlog by yet another week.

2016.17 Making our Introductions

Ramiro Encinas has translated Naoum Hankache‘s excellent Introduction to Perl 6 to Español. And just before the closing of this Perl 6 Weekly, it turns out Itsuki Toyota has been working on a version in Japanese. This now means the introduction is available in 5 languages: English, French, German, Spanish and Japanese. I guess I really should get working on the Dutch version now :-).

Rakudo 2016.04 Releases

The past week saw the 2016.04 Rakudo compiler release, by Will Coleda yet again! Shortly after, Steve Mynott has released the 2016.04 Rakudo Star release.

Blog Posts

Ecosystem Additions

Winding Down

Again, not a lot of time to do the Perl 6 Weekly, this time mostly because of attending the Perl QA Hackathon in Rugby, England. Will try to catch up on things I missed in the past weeks in the next issue! See you then!

2016.16 A Quick One From Dublin

Didn’t have much time to follow what was going on in the Perl 6 world in the past week while travelling and, more importantly, having some R&R.

Blog Posts

Even though I guess technically, not all entries here could be called blogs, I feel they belong in this list nonetheless. Hope you don’t mind :-)

Core Developments

  • The utf8-c8 encoding can now reliably be used on random data without crashing.
  • The line number is now mentioned when trying to use a non-existent module.
  • :done and :quit are now handled properly by a Supply given by Proc::Async.
  • AppVeyor (Windows 7 64-bit CI testing) is now supported.
  • Fix of an NPE on rakudo-j when sorting.

Ecosystem Additions

Six Additions by Six People. How appropriate :-)

Winding Down

More next week!

2016.15 Wow, Blogs!

One week, there aren’t any blogs. And then there are weeks with more than one a day. This is one of those weeks!

Blog Posts

Trying out Perl 6 code snippets on-line

Matt Oates got support for Perl 6 going on glot.io, an open source pastebin with runnable snippets and API. Perhaps it is an idea to copy some of the more idiomatic examples from Rosetta Code? It appears to be running a Docker image of Rakudo Star 2016.01. Perhaps this is another incentive to get a more recent Rakudo Star out soon:-).

And coming in from the other end, Zoffix Znet created GlotIO, a module that allows you to use the glot.io API via Perl 6. Cool stuff!

Valhalla On Earth

If you happen to be in the Oslo area on Friday April 22, you should check out Damian Conway‘s More Concurrency, Less Contusion presentation (which is free of charge). On Wednesday April 20, he will also give a free public talk about a new evil module that will steal more Perl 6 features and make them available in Perl 5. All in all, a week of Perlishness in Oslo!

Core Developments

  • Carl Mäsak pointed out that Hash.gist didn’t have curlies, whereas Array.gist does have brackets. After consultation, Elizabeth Mattijsen rectified this.
  • skids fixed several issues with List.squish and combinations().
  • Elizabeth Mattijsen made the .minpairs/.maxpairs methods work on anything that has a .pairs method (instead of just on Sets, Bags and Mixes).
  • Jonathan Worthington fixed memory leaks that usually showed up with EVAL. Also a bit of GC tuning that hopefully improves memory behavior, plus a UTF-16 fix, and a crash fixed when reading corrupt bytecode.
  • Jonathan Worthington also fixed a missing pre-comp store unlock, which could cause the store to remain locked until program exit.
  • TimToady fixed a useless use warning in import arguments.

Ecosystem Additions

Apart from many people blogging, there were quite a few real exciting additions to the ecosystem as well!

Winding Down

For the past 2 weeks, I haven’t been able to go through the backlog. I expect this service to resume in about 2 weeks.