2016.39 Keys To Cover Moar Tests

“Key” appears to be the keyword of the week. gfldex has several blog posts about it while Zoffix Znet has been doing a lot of work on getting test coverage completed by using the new code coverage reports available for MoarVM. This has resulted in about 200 more spectest tests in the past week. Way to go!

Core Developments

  • Pepe Schwarz has been busy fixing many, many JVM backend related issues.
  • Jonathan Worthington made it possible to use native attributes for binding in a signature (typically submethod BUILD(:$!a) { ... } where the attribute is defined as has int $!a).
  • Elizabeth Mattijsen made it possible to use an Enum as a shape in a (native) array declaration, such as my @a[Bool], as suggested by gfldex++‘s blogpost. Relatedly, she also added a .^elems method on Enums.
  • Zoffix Znet fixed a number of issues with Hash|Baggy.classify|categorize-list and improved the code on the fly as well.
  • Stefan Seifert fixed an issue which would throw a GLOBAL symbols clash when re-compiling because of a repo change.
  • Jan-Olof Hendig made sure that duckmap no longer recurses indefinitely in some situations.
  • And of course many other smaller bug fixes, efficiency and error reporting improvements.

Blog Posts

Quite a lot this week!

Ecosystem Additions

Not too many this week.

Winding Down

The end of the Indian summer is now in sight, at least in Western Europe. Hope everybody will be able to break free from the lethargy it may have caused.

2016.38 We Are The Robots

This weekend saw the first fully automated release of the Rakudo Perl 6 compiler, version 2016.09. Thanks to Zoffix Znet for teaching the robots how to do this.

Core Developments

Most of the past week’s changes made it into the compiler release!

  • Jan-Olof Hendig fixed an issue with adverbs not working on Cool.trans.
  • Jonathan Worthington fixed a memory leak involving EVAL and a multi-dispatch cache unbounded growth bug involving calls with many named arguments.
  • Daniel Green made sure unicode digits can now be used with Match variables (), quote pairs (), negative numbers (), and radix bases (:۳("22")).
  • Zoffix Znet fixed , ???, and !!! yadas not working to stub classes. He also fixed an issue with .tree not calling the correct candidate.
  • Rob Hoelz fixed tab-completion issues with non-identifiers in the REPL. He also made sure that LEFT/RIGHT DOUBLE PARENTHESIS characters can now be used with q and other quoting constructs.
  • Timo Paulssen fixed an issue when NativeCall structures were set up concurrently and an issue in the optimizer with unhandled Failures.
  • Stefan Seifert has worked a lot on Inline::Perl5 making some benchmarks about 2x as fast.
  • Elizabeth Mattijsen made Blob/Buf.reverse about 1.5x as fast, auto-threading (calling a sub with a junction as a parameter) about 10% faster, and List.reverse about 5% faster. She also fixed an issue with .first and junctions.
  • And many others smaller fixes, better error messages and optimizations.

Blog Posts

Ecosystem Additions

Winding Down

That’s it again for this week. Please tune in again next week!

2016.37 Warmen Up Das YouTuben!

This week saw the uploading of quite some Perl 6 related videos. From the YAPC::Europe:

And from the Alpine Perl Workshop (all English spoken unless otherwise indicated):

And some stragglers from the German Perl Workshop that also got uploaded last week:

Further Funding of Jonathan Worthington

After Jonathan Worthington delivered his Rakudo Performance and Reliability Grant Progress Report, he has asked for an extension of the grant from the Perl 6 Core Development Fund, for another 200 hours of work. Yours truly fully supports this idea, as apparently do many other from the looks of the comments🙂 Please feel free to add your comment!

Core Developments

  • Stefan Seifert provided many improvements in pre-compilation and module loading, making loading of modules a lot faster. A fact that also shows up in the infamous test-t benchmark (now below 7 seconds, down from 257 seconds in October 2014, and down from 13 seconds since last Christmas).
  • Timo Paulssen speeded up path parsing logic, making the opening of files a lot faster in the case of simple path specifications.
  • Jonathan Worthington fixed various issues with reading chars from an async socket (uncatchable exceptions on decode errors, and mis-handling of graphemes and multi-byte sequences over packet boundaries).
  • Elizabeth Mattijsen improved the efficiency of several functions: Junction.Bool (2x), Junction.ACCEPTS (2x), permutations(n) (5x), List.permutations (40x), combinations(n,k) (1.8x) and List.combinations(n) (7x).
  • Zoffix Znet made sure that all possible quote pairs now work everywhere in Perl 6. He also blogged about this.
  • Daniel Green fixed numification of non-ASCII tokens in regexen and grammars.
  • Christian Bartolomäus fixed several issues specific to the JVM backend.
  • TimToady fixed an issue with variable lookup inside quotes.

Blog Posts

Only the one this week, looks like everybody was recovering from the conference season, or was trying to catch up with the videos? But what a blog post it is!

Ecosystem Additions

A nice batch.

Winding down

Seems to me we got a nice batch of core improvements in the past week, and plenty to watch as well. Be sure to tune in again next week!

2016.36 Introdução ao Perl 6

Yet another branch on the excellent tree of Naoum Hankache‘s Perl 6 Introduction translations has materialised thanks to the hard work of Breno de Oliveira! So, if Portuguese is your native tongue, you can get introduced to Perl 6 even easier now.

Perl 6 Modules on CPAN – The PSIXDISTS Experiment

In a few weeks, Matt Trout will be starting the PSIXDISTS Experiment (Reddit) AKA uploading Perl 6 module distributions to PAUSE. The initial phase of this should allow CPAN to be used as a content storage for Perl 6 modules without interfering with any of the systems that use CPAN (such as Meta::CPAN and search.cpan.org). Exciting times!

Core Developments

A relatively quiet week.

  • Arne Skjærholt has finally merged his long running branch that improves on the efficiency of storing precedence on operators.
  • Stefan Seifert yet again came with a bunch of repository / pre-compilation improvements that showed an improvement of 30% upto 8x in some benchmarks.
  • Jonathan Worthington fixed a long-standing bug with regards to missing backtraces for errors in printf.
  • Plus many other smaller bug fixes, improvements in error messages and efficiency improvements.

Blog Posts

Quite a lot of blog posts this week. Not all of them directly related to Perl 6, many of them a result of the YAPC::Europe and the Alpine Perl Workshop. But all interesting nonetheless!

Ecosystem Additions

The Alpine Perl Workshop saw some people starting on implementing Perl 6 modules. Looking forward to seeing them appear in the ecosystem in the coming weeks!

Winding Down

It’s been an interesting week yet again. If yours truly now only could find the time to have some vacation 🙂

2016.35 A Quick One From Zagreb

Yours truly reporting en route from the YAPC::Europe 2016 in Cluj-Napoca to the Alpine Perl Workshop in Innsbruck. Videos of YAPC::Europe 2016 should be appearing shortly.

Meanwhile in the Far East

Audrey Tang, the original creator of Pugs (an earlier implementation of Perl 6 using Haskell), has been appointed as a minister without portfolio in the Taiwanese government. I think it is safe to say that the entire Perl community wishes her all the best in this new endeavour! Each time one does a spectest, remember that the The Official Perl 6 Test Suite was started as part of the Pugs project!

Core Developments

  • Smartmatching Bag/Mix and eqv has become a lot faster.
  • Calling .grep or .first on a list of Pairs with a Regex now works.
  • Signatures that have both slurpy parameters and defaults, are no longer allowed (they should never have been).
  • The RAKUDO_EXCEPTIONS_HANDLER environment variable can now be set to JSON to have errors appear as a JSON stream on STDERR.
  • Hash.classify now handles Junctions correctly.
  • Control commands such as next and return are no longer allowed at the top level of the REPL.
  • IO::Handle.comb/.split no longer work on handles that were opened in :bin mode (at least until we’ve figured out sustainable semantics of this functionality).
  • IO::Handle.slurp-rest now supports a :close flag that will close the handle if so requested.
  • And of course many other smaller optimizations and (documentation) improvements.

Blog Posts

Ecosystem Additions

Quite a nice crop again this week:

Winding Down

It has been a busy week for yours truly with all the travelling and conference attending and socializing and sleep depriving. I hope I didn’t miss too many important things. If you think I did, let me know and we’ll let the world know the next week. Until then!

2016.34 A Quick Botch From Cluj

After a long trans-European journey, yours truly arrived to Cluj for the YAPC::Europe. Without a lot of time to spend on the Perl 6 Weekly. So, this time, only a small Perl 6 Weekly. Hope I didn’t miss too much!

Rakudo Compiler Release 2016.08.1

Zoffix Znet worked very hard on the Rakudo 2016.08 Compiler Release, but he botched a tag, so now we have a Rakudo 2016.08.1 Compiler Release. I’m pretty sure we will have a new Rakudo Star release based on this Compiler Release pretty soon!

More Dogfooding

It has been a while since Leon Timmermans worked on the Perl 6 version on TAP, which allows tests (such as running with make spectest) to use Perl 6 itself to run the test-files, rather than Perl 5. For the first time, this actually completed flawlessly for yours truly in the past week:

All tests successful.
Files=1118, Tests=52595, 336 wallclock secs
Result: PASS

Again a step closer to providing the whole tool-chain in Perl 6!

Core Developments

Some of the core developments of the past week that made it into the 2016.08.1 release:

  • Elizabeth Mattijsen made several Set/SetHash related coercions between 40x and 300x faster.
  • Jonathan Worthington fixed quite a lot of async stability issues.
  • Stefan Seifert fixed another set of pre-compilation issues, this time related to development versions of files.
  • Zoffix Znet added support for a PERL6_TEST_DIE_ON_FAIL environment variable that will stop testing after the first failed test.
  • And many other smaller fixes and improvements, of course!

Blog Posts

And the blog posts keep on coming!

Ecosystem Additions

Quite a nice selection again!

Winding Down

Time to get some sleep before all the stuff starts happening in Cluj!

2016.33 Where did we go wrong?

Useful, descriptive errors are becoming the industry standard and Perl 6 and Rust languages are leading that effort. The errors must go beyond merely telling you the line number to look at. They should point to a piece of code you wrote. They should make a guess at what you meant. They should be referencing your code, even if they originate in some third party library you’re using.

Check out The Awesome Errors of Perl 6 by Zoffix! (see also the Reddit comments).

Other Blog Posts

Core Developments

  • Timo Paulssen fixed the memory hungriness and catastrophical slowness when trying to match a string with :i, especially on large haystacks.
  • Elizabeth Mattijsen made several types of usage of .splice at least 10x as fast. She also added another 29 ranges of unicode digit ranges to magic auto-increment / decrement.
  • Jonathan Worthington worked on making freeing of resources (such as a network port) more asynchronously reliable.
  • TimToady fixed many issues related to improper sinking and improper “useless use” warnings.
  • Elizabeth Mattijsen also implemented map logic for blocks that are guaranteed to not return a Slip. For instance ^10000 .map: *.Str
    will run 10%+ faster if you specify a return type for the block, e.g. ^10000 .map: -> \x --> Str { x.Str }.
  • Wenzel P. P. Peppmeyer implemented the :exists adverb on multi-dimensional subscript literals.
  • TimToady also fixed a problem with character ranges that would incorrectly match ä with a even when :m (aka ignoremark) was not specified.
  • Pawel Murias fixed the --profile feature, which was temporarily broken.
  • And as usual many other fixes, additions and other improvements.

Documentation Developments

Mostly housekeeping, gfldex++ tells me:

Ecosystem Additions

Winding Down

Quite some nice blog posts! And some nice fixes and improvements. Can’t wait to see what we will have next week!