2017.19 Albatross_I

The past week felt a bit dreary, the weather was meh, and MoarVM had some telemeh issues on ARM processors. And there were some discussions on how to treat non-Int values in situations where Int values are expected (do we floor, fail or throw?). I guess these things came to the front more because there was not a lot else going on this week.

Rakudo on Ubuntu on Windows

Claudio Ramirez tells us that the Ubuntu 16.04 Rakudo packages were made compatible with the Windows 10 Linux Subsystem (AKA bash in Windows 10). Just run /opt/rakudo/fix_windows10 after install.

telemeh

Timo Paulssen has been working on his telemeh for MoarVM project. It basically spits out little status messages at a very high speed and high accuracy. Because instead of asking a clock of some kind, it just reads the “number of cycles elapsed since some point near the beginning of the process” register out of the CPU. It’s also thread-safe, much like the other profiler isn’t really at the moment. The idea is to eventually have a nice GUI-ish frontend that could let you analyze the telemeh-log at a higher level. It’s inspired by a product called “telemetry” by RAD Game Tools.

Core Developments

  • Zoffix Znet fixed another few IO related problems and a number of issues surrounding cached Seqs.
  • Nick Logan fixed a case of premature deletion of bin wrappers.
  • Daniel Green fixed a problem with trying to rotate an empty List. He also improved error messages when a feed operator is used improperly. And he did quite some optimizing work in NQP land.
  • Elizabeth Mattijsen worked a lot on improving the speed when randomly selecting elements from Maps, Hashes, Sets, Bags and Mixes.

Blog Posts

Meanwhile on FaceBook

  • Nadim Khemir:

    I started porting the old DHTML dumper to Data::Dump::Tree. Here is an example you can load in your browser. It seems that google won’t share an html file directly. Just download it and open it in a browser.

Meanwhile on Twitter

Meanwhile on StackOverflow

Ecosystem Additions

Winding Down

Pretty sure we will see some good Perl 6 things coming from the Perl Toolchain Summit! So check in again next week!

2017.18 Starlight, Starbright

Thanks to Steve Mynott, we have another Rakudo Star release: R* 2017.04 is now available for Unix, MacOS and Windows. The announcement has many “too many to list” bullet points. Which is correct, because a lot was improved in Rakudo Perl 6 and the ecosystem in the past 3 months since the last Rakudo Star release.

Perl Developer Survey

The good people of BuiltInPerl published the results of the yearly Perl Developer Survey. Alas, not a lot of useful information about the adoption of Perl 6 yet, but I have a feeling we will see that in next year’s edition!

Unicode Grant

The Unicode improvement Grant Proposal by Samantha McVey has been accepted! Looking forward to seeing more of Samantha McVey‘s excellent work!

Core Developments

  • More than half of the modules in the ecosystem now have a properly specified license field in their meta-information. Check out Samantha McVey‘s blog post to see why that is a good idea.
  • Zoffix continued his work on the IO grant, with many fixes and documentation improvements. He also fixed various issues with andthen and orelse.
  • Paweł Murias fixed the code to check for 32-bitness of the build not only on the MoarVM backend, but also on the Javascript backend!
  • Stefan Seifert speeded up module loading a bit more still. It also appears we’re getting really close to shipping binary packages of modules!
  • Stdin and stdout are now correctly selected for the right type of (error) messages coming from the Perl 6 NQP bootstrap. Thanks to Jan-Olof Hendig!
  • Elizabeth Mattijsen improved the speed of the (+) and (.) set operators by 2.5x upto 60x.
  • Jonathan Worthington made sure that roles with native attributes that have a default value, work with the standard .new object initialization logic.
  • And as usual, many other smaller bugfixes and other improvements.

Blog posts

A Flash from the Past

Ingo Blechschmidt pointed yours truly to a nice set of slides about the history of Pugs. If you’re new to Perl 6, it might give you some perspective on the shoulders of giants on which the currently most active version of Perl 6 has been built.

Meanwhile on the book front

It is now official: the Perl 6 book that Moritz Lenz is working on (previously called Perl 6 By Example), will be published by Apress as Perl 6 Fundamentals – A Primer with Examples, Projects, and Case Studies. This means we now have two mainline publishers publishing Perl 6 books (the other being O’Reilly with Think Perl 6 by Laurent Rosenfeld). Who, incidentally, had an interview about his book with brian d foy. Highly recommended!

Meanwhile on Twitter

Meanwhile on FaceBook

  • Jeffrey Goff:

    The beginnings of Six::Zilla are out – Dist::Zilla for Perl 6, driven pretty much entirely by a plugin directory. Haven’t done much yet but it’s a start. With the main notion that 6zilla upgrade-dist will do things such as check JSON for invalid or missing fields and update those, check README for mentions of outdated tools. I want to be able to release a full Test-Distribution suite along with this so that module authors can run that check and use the upgrader to handle the simple changes.

  • Joe Bukhari:

    Perl 6 has changed the way I write. the colon on method arguments makes me happy. I am person who gets happy about syntax, hello Perl bros and sisters guys, sorry I typed it like that. I am just accustomed to typing out Perl 6 in the command line, a place that is good for using Perl 6

  • Jeffrey Goff again:

    @OSCON 2017 discounts are out! Use SPEXPO for a free Expo Hall pass, or message me for 20% off any other pass! Also don’t forget to come see me live on stage delivering a Perl 6 tutorial, one of ORA’s hottest up-and-coming languages!

Meanwhile in Academia

Damian Conway is busy showing students the best Perl 6 has to offer:

Fortunately, an adapted version of the Parsing Techniques class will also be given as a tutorial after the The Perl Conference US (23 June, Washington DC).

Meanwhile on StackOverflow

Ecosystem Additions

Winding Down

Phew! A lot more to write in the Weekly than I thought. Fortunately, I was only mildly distracted by some crazy rocket science in action. Check in again next week for more crazy action in the Perl 6 world!

2017.17 Interesting Times

Indeed. The past week saw the Rakudo Compiler Release 2017.04 have several point updates. Zoffix Znet explains it all in The Failure Point of a Release. The good news: if you’re waiting for a Rakudo Star Release of 2017.04, a release candidate is now available for testing. So please do!

Distribution License

Samantha McVey found that a lot of distributions in the ecosystem have a poor definition of the license they are released under. So she wrote a call to action in: Camelia Wants YOU to Add License Tags to Your Module! So please do!

The Perl Conference – US

The preliminary schedule for the Perl Conference - US on 19-21 June (formerly known as YAPC::NA) is now available. Please note that Damian Conway will be giving some interesting Perl 6 related tutorials!

Core Developments

  • Stefan Seifert fixed an issue with a packaged Inline::Perl5 trying to access a Proxy‘s FETCH method. A problem with the %?RESOURCES hash and NativeCall library name resolution was also fixed. He also made dependency resolution no longer depend on filesystem timestamps.
  • Zoffix Znet continued his work on the IO Grant apart from teaching his bots new tricks.
  • TimToady made user grammars work more like classes, specifically with regards to .new.
  • dogbert17 found the source of a problem with the HARNESS_TYPE=6 spectesting, which Timo Paulssen then fixed.
  • And some other smaller fixes and optimizations, apart from the ones that Zoffix Znet already mentioned.

Blog Posts

Wow, what a nice bunch of blog posts!

Meanwhile on Twitter

Meanwhile on StackOverflow

Ecosystem Additions

Winding down

Yours truly missed most of the excitement the past week on account of being on the road a lot. In a way, I’m glad I did. On the other hand, feels like I should have been around. Ah well, you can’t have it all. But if you want more, please check in again next week for more Perl 6 news!

2017.16 IO Hits The Road

Zoffiz Znet and his trusted bots just came out with the 2017.04 Rakudo Compiler Release. It contains the culmination of the IO grant work. A Rakudo Star release should be expected within the next few days, based on this compiler release. Apart from the IO work and all of the other optimization work that has been done, one thing to particularly note is the work that Samantha McVey has done on Unicode support and case-insensitive regex matching. Please have the appropriate amount of more efficient fun!

Perl Toolchain Summit

The Perl Toolchain Summit is now less than a month away. Some people actively developing on Perl 6 will also attend. There are even some Perl 6 related entries on the Project List. Hope to see more Perl 6 related items there soon. And to finally be able to make CPAN support for Perl 6 modules an actual thing!

Core Developments

  • Timo Paulssen made it possible for Grammars to precompute their NFAs during precompilation, allowing them to be stored in precompiled modules.
  • TimToady continued working on a refactor of Match objects and cursor, which hasn’t produced much improvement yet because of all scaffolding still needed.
  • Paweł Murias undid the bitrot that broke the Allocations tab in the output of --profile.
  • Stefan Seifert fixed an issue with compilation stores without write access, as well as some issues when using the Staging repo.
  • And many other bug fixes and a lot of work on the IO grant, of course!

Other blog posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

Jonathan Stowe says:

If you have been experiencing difficulty accessing certain https web sites with one of the various HTTP clients, you may want to upgrade to the latest OpenSSL module – I’ve just implemented supported for the TLS server name extension which is required for an increasing number of virtual hosting arrangements. It also fixes Webservice::Soundcloud.

Ecosystem Additions

Winding Down

Unexpectedly brought to you from Copenhagen, Denmark. See you again next week for more Perl 6 news!

2017.15 Kaboom! ⁽¹⁾

Zoffix Znet did a massive amount of work on the IO Grant. Some of the highlights:

  • Clean up &open and IO::Path.open.
  • Clean up and improve all spurt routines.
  • Give $*TMPDIR a container.
  • Implement IO::Path.extension 2.0.
  • Fix ambiguity in empty extension vs no extension.
  • Implement IO::Path.concat-with.
  • Remove IO::Path.abspath.
  • Make IO::Path::* actually instantiate a subclass.
  • Make IO::Path throw when path contains NUL byte.

All in all a very good weekly result!

Other Core Developments

  • Samantha McVey made literal string matching (aka nqp::index) 2x faster, by either using the Knuth-Morris-Pratt algorithm on Linux, or the Crochemore-Perrin algorithm on Windows and MacOS.
  • Jonathan Worthington added support for serialization/deserialization of native hashes, and wondered how we could have done so long without.
  • Elizabeth Mattijsen implemented support for (*-N) for .head and .tail. @a.head(*-5) will now produce all values of @a except the last 5. @a.tail(*-5) will now produce all values of @a except the first 5. And this is all lazy on Sequences.
  • Zoffix Znet also awesomified the unhandled Failure in DESTROY message, as well as implemented a skip-all option to Test‘s plan.
  • Lloyd Fournier fixed an issue with Code.ACCEPTS.
  • TimToady made sure that for $x() will no longer be a Perl 5 confusion type error. Instead, it will now only die if there is a space before the ().
  • Elizabeth Mattijsen also continued her work on set operators and coercions to / from Sets, Bags and Mixes. Some improvements are like 250x faster, others just a few % (but those were generally done to really hot code paths and/or to reduce memory pressure).
  • And many more improvements and smaller bug fixes.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Ecosystem Additions

Winding Down

Apart from these visible results, a lot of work is being done by TimToady, Bart Wiegmans and Paweł Murias that hasn’t come to full fruition just yet. Yours truly is very anxious to tell about them in the (near) future! So check in again next week!

⁽¹⁾ With apologies to Jonathan Stowe.

2017.14 The IO Front Advances

Zoffix Znet really hit the ground running this week! After announcing his IO plan, publishing his progress report for the month of March and waiting for the end of the comment period, he published the IO Upgrade Information, and after some late insights, IO Upgrade Information, Part 2, which contain an up-to-date account how things are progressing. And there’s of course the list of IO issues he’s working on. If you’re interested in these developments, please check these out. And contact Zoffix with any feedback, the sooner the better!

Improving the Robustness of Unicode Support

Samantha McVey put up a grant proposal covering the following deliverables:

  • Programmatic determination of Unicode names.
  • Implement Unicode collation algorithm.
  • Properly support grapheme breaking in Unicode 9.0 and beyond.
  • Improvements on Unicode database generation.
  • Documentation of deficits in the support.

Check it out and give her your opinion!

Camelia in the Wild

A new section in the Perl 6 weekly where spottings of Camelia in the wild can be reported. This week’s spotting was at a concert of ARW in Brussels.

Try out Perl 6 online

If you would like to try out some Perl 6 code without wanting to install Rakudo, you can now also go to https://tio.run/nexus/perl6! Just type in your code, click the play button and see the result! Too bad it currently runs the 2017.01 release, which is now over 2 months old! Still, if you just want to test some code, that is pretty recent and beats many packages provided by some distributions.

NativeCall Introduction

Naoum Hankache‘s excellent Perl 6 Introduction now has a chapter introducing the NativeCall interface (explaining how you can easily call code from external libraries from your Perl 6 source code). For now that chapter is available in English only, but I have no doubt the other languages (Bulgarian, Chinese, Dutch, French, German, Japanese, Portuguese and Spanish) will follow soon!

Coverage reports

The Rakudo Perl 6 core has up-to-date coverage reports again. And now we also have coverage reports for Moar, thanks to Samantha McVey. So if you’re looking to add some tests to get better coverage, that’s where you can find which parts of the system are not tested yet!

Other Core Developments

  • Jan-Olof Hendig fixed a problem with the total number of tests run using the harness6 (aka the Perl 6 version of prove) while doing a spectest or stresstest. Which brings us one step closer to running spectest using Perl 6 by default (instead of Perl 5).
  • Fernando Correa fixed a problem with multi-dimensional hash slices (such as %h{"foo","bar"; "baz"}.
  • Daniel Green and Timo Paulssen fixed a problem with unsigned native ints that at some VM level, were not marked as unsigned.
  • Samantha McVey improved the speed m:i/ / regex matching between 1.8x and 3.3x (depending on not finding a match / finding a match at the beginning).
  • Jonathan Worthington improved error reporting on Parameter binding, allowing for a slightly better error message that includes the non-matching value and, where the constraint is a named subset type, that type name.
  • Apart from all of the work on IO, Zoffix also fixed a problem with matching in loops and $/ that affected ~~ as well as .subst, .subst-mutate, Grammar.parse and Grammar.parsefile.
  • Elizabeth Mattijsen made a lot of set operators, as well as coercions to Set(Hash), Bag(Hash) or Mix(Hash) from 30% to 25x faster, mostly by avoiding (where possible) potentially expensive calls to .WHICH. She also made sure that set(), bag() and mix() (aka the empty immutable Set, Bag and Mix) only exist in memory once. Finally, she also improved TAI / epoch conversions, e.g. making now about 20% faster.
  • And as usual many other smaller fixes and improvements.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

  • Paul Bennett mentioned STOKE, an interesting approach to optimisation:

    The ACM has a paper on a new compiler optimization called STOKE. It calls itself “stochastic”, but they seem to mean something other than “random” … more like “capable of working outside the explicit order of operations as given”. It beats gcc -O3 by a significant margin.

  • Ecosystem Additions

    Winding Down

    Wow, what a busy week again. Please check in again next week for more Perl 6 news!

    2017.13 IO’s not the same

    Zoffix Znet has published the IO action plan as part of the IO grant work. Please read it and if you have any comments, let Zoffix know! Alternately / Additionally, you might want to check out the February Grant Report. In the past week, several IO related parts of Rakudo have already become significantly faster!

    Hyper / Race Semantics

    Jonathan Worthington thought a lot on the issues surrounding hyper and race and produced a plan, inviting comments. Please have a look at it and come up with a better name for Seqqy. 🙂

    Fernando Correa Welcome!

    Fernando Correa has joined the ranks of the Rakudo Perl 6 Core Developers! As SmokeMachine he already has quite a few merged Pull Requests under his belt. We’re all looking forward to seeing more of his excellent work. A hearty welcome on behalf of everybody interested in Rakudo Perl 6!

    Other Core Developments

    • Samantha McVey increased the speed of concatenating strings on MoarVM up to 30%, while fixing some issues with concatenating strings with control characters at either end.
    • Stefan Seifert improved a confusing error message when trying to load a non-existing module that matches a distribution name.
    • Jonathan Worthington fixed a race condition issue with generating a unique ID for EVAL blocks.
    • Elizabeth Mattijsen made .invert about 10x faster.
    • Zoffix Znet made many of the path manipulation methods (such as IO::Path.child and IO::Spec::Unix.catpath) up to an order of magnitude faster.
    • Jonathan Stowe fixed an issue with the introspection of attributes of Associatives with explicitly typed keys.
    • And as usual, many other smaller improvements and bugfixes.

    Blog Posts

    Meanwhile on Twitter

    Meanwhile on StackOverflow

    Ecosystem Additions

    Only one addition this week…

    Winding Down

    Posted a little later than usual, all because yours truly was pleasantly detained at a concert in Brussels. Please check in again next week for more Perl 6 news!