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.

2016.14 Wow, Zoffix!

Last Wednesday, Zoffix Znet gave very nice presentation titled “Wow, Perl 6!” for the Toronto Perl Mongers. The video and associated blog post were then mentioned on Hacker News, made it to the top 5 and on the fly created quite a discussion! It’s great to see Perl 6 getting more attention like that!

Core Developments

  • ab6tract and TimToady fixed an over-zealous warning involving WhateverCodes.
  • Jonathan Worthington did several fixes in the utf8-c8 encoding and fixed a segfault found in some newbie code.
  • 0racle implemented the (already documented) :kv adverb on .first and wrote the associated tests.
  • Elizabeth Mattijsen re-implemented magic inc/dec making it 3.5x faster on simple inc/dec, more maintainable and applicable in the core.

Ecosystem Additions

Winding down

Since I’m not going to have much time the coming 2 days, I thought I’d come out with an early Perl 6 Weekly this time for a change.

2016.13 A Language For Heapsters

The 2016.03 Rakudo Compiler Release was a bit delayed due to uncertainty about the seriousness of a flapping test. Will Coleda made it happen nonetheless!

Events

If you happen to be in the Toronto area on 30th of March, you should check out Zoffix Znet‘s presentation: Wow, Perl 6!. Alternately, if you happen to be in the neighbourhood of Baltimore, MD around mid-April, you might want to visit the 2016 DC-Baltimore Perl Workshop, where Brock Wilcox will be giving a Perl 6 Hands-On Tutorial.

Core Developments

Due to the delay, some of these made it actually into the release!

  • Jonathan Worthington made "100".Int about 37x faster as part of the work on the heap snapshot functionality.
  • skids optimized and fixed some issues with Range, specifically when being used as a list.
  • Rob Hoelz merged his work on the REPL, which now makes the REPL written in Perl 6 and part of the CORE settings, rather than written in NQP, allowing for easier fixes and adaptability. It now also works with -I and the history is now actually saved to a file, so you can refer to previous REPL sessions.
  • Stefan Seifert merged part of his CompUnitRepo work, which will allow for easier packaging of Perl 6 modules: for now, this should make stack-traces better readable by storing logical filenames (of the source) in precomped files, rather than physical filenames (where the precomped files actually live).
  • Elizabeth Mattijsen did some minor fixes: Bool.enums now works, some issues with combinations and permutations and magic increments.

Blog Posts

Gems From The Backlog

Ecosystem Additions

Winding Down

A little later than usual, but for most people still right on time! See you next week!

2016.12 Less Happening

A bit of a silent week, it was. Many things happening behind the scenes, like Inline::Perl5 being able to be pre-compiled, making it an even more viable alternative for intermixing Perl 5 and Perl 6 code. Heaps of work on using less memory and less CPU. So, let’s get on with it then:

Blog and other Posts

Core Developments

  • Several issues with native num/int arrays were solved, and some optimizations were done.
  • Native str arrays were implemented, aka my str @a now works.
  • Blobs are now really value types, with a stable .WHICH.
  • Errors made with format/parameters of sprintf are now much better handled.
  • IO::Path.slurp(:!bin)/IO::Handle.slurp-rest(:!bin) now read strings (as :!bin indicates not binary).

Gems from the Backlog

Scanning through the #perl6 backlog of the first 2 weeks of March, I came up with these goodies:

Ecosystem Additions

More than one a day again, keep up the good work!

Winding down

That’s it for now. Planned for next week are another Rakudo compiler release, and more about the work of Paweł Murias on the Javascript backend. See you then!