2016.30 Fresh Rakudo Star!

Steve Mynott++ has taken it upon him to package a Rakudo Star 2016.07 release, based on the 2016.07.1 Rakudo compiler release. Apart from the tar archive, there are also a .dmg for OS X, and a .msi for Windows available here. Apart from the many improvements and bug fixes, this version should also be much faster than the previous (2016.04) Rakudo Star release!

When In Rome, Go See Larry

The Curry On Conference was held last week in Rome, Italy. TimToady gave the second day’s opening keynote. An excellent video if you want to know more about the what’s and why’s of the development of Perl 6.

Core Developments

  • "foo".samemark("") will now just return "foo" instead of a Failure, to bring it in line with the behaviour of "foo".samecase("").
  • Jonathan Worthington implemented $?MODULE and ::?MODULE, which had mysteriously fallen through the cracks. See Assorted Fixes for the other things he fixed this week.
  • Zoffix added bail-out to Test.pm6, which rectified another mysterious omission.
  • glfdex started a discussion on the behaviour of my Int:D $a with respect to Nil, got TimToady‘s resolution on that, and skids implemented a patch. This now means that my Int:D $a; is a compile-time error (missing initializer), and that assigning Nil to an Int:D variable is now a Failure.
  • Many optimisations in the areas of PseudoStashes, dynamic variable lookup, Hashes (both “normal” as well as typed Hashes), Bags, Mixes, Sets, Backtraces, .grep, .first and handling of warnings.
  • Many smaller bug fixes and error message improvements.

Documentation Developments

gfldex++ informs us of the following developments in the documentation of Perl 6:

  • Additions to Traps.
  • Additions to Testing.
  • Additions to Concurrency and related classes.
  • The Quoting Constructs section now explains interpolation and its interaction with undefined values.
  • The search index has seen many more additions.
  • Documentation was added about a few methods that were missing before.
  • A few examples got unbroken.
  • Pod::To:BigPage is now used to generate https://docs.perl6.org/perl6.xhtml which contains all non-generated documents (and excludes anything under /routine/ and list). It is meant as a standalone document for offline viewing and printing (as far as printing HTML goes). In the future it may be used to generate diffs of the docs.

Blog Posts

Ecosystem Additions

Winding Down

Quite a busy week again. Now if someone could find the knob to the thermostat, so we could put that a bit lower, that would be brill!

2016.29 The Zoffix Has  Landed

The past week we could welcome a new Rakudo core member with a commit bit: Zoffix Znet. In the past months, Zoffix has already been quite busy with many blog posts, work on the RT Queue and even do all the work for a Rakudo Compiler release. This week, Zoffix not only did one Rakudo compiler release (2016.07), Zoffix even did a a second one: 2016.07.1, quickly after a serious blocker for Rakudo Star was discovered! I’m told a Rakudo Star release will now be available soon, based on this last compiler release.

Larry Wall Interview

A little while ago, Slashdot asked users to send in questions to Larry Wall. And Larry now has answered most of the serious questions! And some not so serious questions:-)

Perl6::Tidy

Jeffrey Goff has started the Perl6::Tidy project. From its description:

Perl 6’s grammar is now pretty much fleshed out, but it’s hard to get at from within. This makes tools like code formatters, coverage and analysis tools hard to put together. This module aims to fix that.

I can only wish that he gets many supporters! Also check out the Reddit comments.

Core Developments

  • Stefan Seifert fixed a bug in recording dependencies of precomp files, which would make complex dependencies (such as with XML::LibXML) load much faster, both in production as well as in development.
  • vlmarek contributed a patch so that when interfacing with NativeCall, one can now specify sub names not to be mangled, by specifying is mangled(False).
  • Several methods on Str are now much faster: .samemark (50x), .contains (6x), .substr-eq (4x) and many more with smaller efficiency improvements.
  • for loops / maps that take 2 parameters (e.g. for %h.kv -> $key, $value { }) are now 4x faster.
  • Many List/Array related functionality has been made more efficient (both in CPU, as well as in memory usage).
  • And many other fixes and improvements, about 80 commits in all.

Documentation Developments

In this section I will try to follow developments on the documentation effort. Thanks gfldex for making this reporting easier for me!

  • Three more traps to avoid added.
  • Some layout improvements.
  • A Debug button at the bottom for those want to help improve the docs.
  • Some additions to the 5to6 Section.
  • Unspace is now documented.
  • Builtin classes Mu, Any, Num and Cool have many more methods documented now.
  • A few broken Code examples were fixed.
  • Filename mangling allows other platforms than *nix to host a private copy of docs.perl6.org.
  • And many more small changes and additions.

Blog Posts

Quite a couple of blog posts this week, some of them even multi-part!.

Ecosystem Additions

Winding Down

It’s been a busy and hot week. Looking forward to even more goodies to come. And apologies for the things I forgot to mention this week. Please make sure I won’t forget them next week! :-)

2016.28 Show Your Papers!

With the deadline for presentations for the YAPC::Europe closing in 3 days, this is the time to submit your Perl 6 related presentation! Also, don’t forget the Alpine Perl Workshop in early September in the lovely city of Innsbruck, to which you can also still submit your Perl 6 presentation.

More Bots

Some weeks ago, Alex Daniel made the bisectable bot available on the #perl6 and #perl6-dev channels. This bot will find out which commit changed the behaviour of a given piece of code. Based on this, MasterDuke created the commitable bot, which allows you to run a piece of code on a Rakudo Perl 6 on a given commit!

Documentation Effort Picking Up!

Looking at the contributors graph of the Perl 6 Documentation project, it is very clear that the documentation effort is picking up significant steam! Kudo’s to all of the committers, recent or not so recent! And remember, documenting Perl 6 is an excellent way of getting to know the language better! Pull Requests are very welcome! And if you happen to be of the more lazy kind, you can also just look at the Perl 6 documentation.

Tracking Rakudo Bugs Made Easy

Zoffix Znet has written an interface to the Perl 6 RT Queue. For sure, it has allowed Zoffix Znet to chase and close quite a few (old) RT Tickets (aka Rakudo Bug reports). Maybe it can be helpful for you as well?

Core Developments

  • Jonathan Worthington fixed a problem with the multi-method lookup cache, which would cache candidates that shouldn’t be cached because they have a where constraint.
  • Stefan Seifert fixed another of those pesky corner cases, like doing multiple EVALs in BEGIN blocks in a pre-compiled module.
  • Christian Bartolomäus fixed a problem with module loading on the JVM backend, and made sure file renaming works the same on the JVM as it does on MoarVM.
  • Pepe Schwarz continued killing bugs that popped up on the JVM backend since Christmas and made progress with the JVM interop.
  • Daniel Green made sure chop(N) with large integer values will DWIM.
  • Tom Browder continued working on table features in Perl 6 pod parsing.
  • Salvador Ortiz made sure that Failures during a two-step coercion are propagated, rather than thrown. So that e.g. "a".Int will return a Failure rather than die.
  • Elizabeth Mattijsen did a lot of optimisations related to Lists, Arrays and Iterators.
  • And many other smaller fixes and error message improvements.

Blog Posts

Not too many this week.

Ecosystem Additions

Not too many this week either.

Winding Down

What can I say? Lots of stuff going on! See more of this next week, when we have had yet another compiler release of Rakudo Perl 6. Until then!

2016.27 Summer Starts

With a lot of vacation looming, and many of us celebrating Independence Day (or seeing the Movie of the same title), things appear quiet in the Perl 6 World. Lots of stuff is brewing / simmering though. One of them being the Perl 6 coverage at the YAPC::Europe, which will be held in Cluj-Napoca, Romania from 24 to 26 August. With some extra special Perl 6 Goodies:

Not all of these presentations have been accepted yet, but if you’re logged into Act and you have indicated that you will visit the YAPC::Europe, you can indicate that you want to attend that presentation. This will help the organisers in deciding which presentations to accept!

By the way, if you are logged into Act, you can also indicate your affinity with Perl 6 by adding the perl6.pm Monger Group to Your Information, so you can be found in the Search for Users.

Core Developments

Blog Posts

Not too many this week.

Videos

Ecosystem Additions

More than one per day!

Winding Down

Well, that’s it for this week again. Hope I’ll find the time for some backlog gem searching again soon. See you next week!

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.