2017.35 Serving Cro

Jonathan Worthington dropped something of a bomb during his presentation (slides) on the second day of the Swiss Perl Workshop, in which he presented

Cro, a Perl 6 framework for building reactive systems

With HTTP/1.1, HTTP/2.0, HTTPS, WebSockets and ZeroMQ support out of the box! Still in beta, but API-wise it should be fairly stable.

Which almost let me forget that Jonathan actually did another presentation, named ‎”How does deoptimization help us go faster”, and other questions you were sensible enough not to ask‎ (slides), which gives you a good impression of the problems you get when you try to develop a fast dynamic language with precompilation features. Videos of either presentation are not available yet at this time, but should be soon!

ASCII Forever!

That in short seems to be the general tone of the 233 comments (so far) about last week’s Perl 6 Weekly, spread over three reddits: r/perl, r/perl6 and r/programming. Fortunately, there were some positive comments as well. Ah well, the caravan of butterflies moves on.

Monthly Bug Squash Day

Aleks-Daniel Jakimenko-Aleksejev initiated a new monthly (online) event:
Monthly Bug Squash Day. The first time will be on Saturday 2 September, and the subject will be the perl6/doc repository, which currently has 279 unsolved issues. You can also print a poster to invite your local (hacker) friends (made by Zoffix Znet).

Relocation Message

Zoffix Znet‘s very useful overview of open tickets on Rakudo Perl 6 has been moved to fail.rakudo.party (from rakudo.fail) (Zoffix’ Tweet).

Pictures, Pictures!

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

Didn’t have time to really see what other core developments we had the past week. Since many of the core developers were on the road or visiting conferences or otherwise in a vacation mood (with a few notable exceptions, though), it feels safe to keep whatever the developments were until a 2-week overview next week. See you then for more Rakudo Perl 6 news!

Advertisements

2017.34 Going ⚛

This week Rakudo Perl 6 went Atomic! Well, in the sense of “forming a single irreducible unit or component in a larger system”.

Locking is one of the evils in multi-threaded programming: Rakudo Perl 6 now has several lock-free primitives for updating native integer variables from several threads simultaneously. They’re all described on a brand new documentation page. In short, the new operators are:

So when would an “ordinary” module developer need to use these, even when they’re not writing threaded programs? Well, your module might be used in a threaded program. And any situation where a variable is incremented to produce something unique, would need this, or run the risk of two or more threads running away with the same “unique” (not!) value. Observe:

my int $a;
await do for ^10 { start { $a++ for ^1000 } }
say $a    # something less than 10000, like 9628, so 372
          # increments lost because of simultaneous updates

versus:

my atomicint $a;
await do for ^10 { start { $a⚛++ for ^1000 } }
say $a    # always 10000, because no updates are overwritten

Apart from these, a working version of cas (Atomic Compare and Swap) was also implemented. All thanks to the work of Jonathan Worthington, which was made possible by the kind sponsorship of Nick Logan.

AlexDaniel++ for his first release

Aleks-Daniel Jakimenko-Aleksejev has done his first Rakudo compiler release! This signals the end of an era in which Zoffix Znet did 14 consecutive Rakudo compiler releases. For which I can only give a big Thank You!

If you look at announcement for Rakudo Perl 6 2017.08, you will see quite a number of fixes and improvements this month. Let’s hope AlexDaniel will be able to do many more of these with an even larger number of new features and improvements!

Other core developments

  • Samantha McVey fixed several issues with ignoremark and a number of edge cases when concatenating strings.
  • Stefan Seifert fixed an issue with native closures failing on a second run. He also made sure that Rakudo Perl 6 will exit with a value of 0 if invoked with --help.
  • And some other smaller fixes and improvements.

Swiss Perl Workshop

The schedule of the Swiss Perl Workshop has been published. It contains the following Perl 6 related presentations (in chronological order):

For what it’s worth: you can still register!

TPCiA Followup

Unfortunately, the official videos of TPCiA have not arrived yet. But we do have some pictures that have been shared:

Wendy also gave an interview. And informed me that 80 copies of Perl 6 books (Perl Fundamentals, Think Perl 6 and Perl 6 At A Glance) and 52 copies spanning 13 different Perl 5 related books were sold during TPCiA.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding down

Yours truly spent most of the past week recovering from TPCiA. And now needs to focus on slides for the Swiss Perl Workshop. Wish me strength. See you next week for more Perl 6 news!

2017.33 In Review

Evan Miller has written an extensive review about Rakudo Perl 6. And the Internet was set ablaze. Well, eh, not really, but quite extensive discussions on Hacker News and Reddit followed from it. Although he clearly was caught out by some documentation issues (e.g., you can have both positional and named parameters in a call), the review appears to be balanced and just, and did I mention extensive? Some quotes:

The Perl 6 feature I was most excited to read about — in fact the initial reason I was drawn to Perl 6, aside from morbid curiosity — is the inclusion of grammars in the language.

Perl 6’s string support, and Unicode support in particular, is the best in the business.

Perl 6 might have my favorite function-dispatching mechanism of any language I’ve used; it’s certainly the most flexible.

The most pleasant set of surprises for me with Perl 6 function-calling — in fact some of the more pleasant surprises in all of Perl 6 — is the nearly frictionless interfacing with C libraries.

Perl 6 is one-of-a-kind; no one can argue with that.

What can I add to that? Read the whole review and judge for yourself!

Welcome Aleks-Daniel Jakimenko-Aleksejev!

The number of people with a commit bit to the rakudo repository has just been incremented. Or as Zoffix Znet so partylike tweeted:

AlexDaniel++ joined the team

I can only add that AlexDaniel has already been responsible for quite a number of Pull Requests in the past years, built quite a few IRC bots and will now also be responsible for the next Rakudo compiler release the coming weekend!

Videos from TPCiA

The official videos of TPCiA are still in post-production. Below are the ones that were streamed to FaceBook using a camera in the hands of Andrew Shitov:

Core Developments

  • Jonathan Worthington mostly worked on MoarVM internals: this resulted in a 17% performance improvement of the test-t “real life” benchmark. And fixed some possible memory leaks with supply and react blocks.
  • Stefan Seifert made some NativeCall improvements, which also had a positive effect on the Inline::Perl5 version of said “real life” benchmark. He also made RAKUDO_MODULE_DEBUG output reproducible.
  • Samantha McVey fixed some issues with ignoremark and ignorecase.
  • And some more smaller fixes and changes.

Other Blog Posts

Meanwhile on Twitter

First the Perl Conference in Amsterdam related tweets:

And the other tweets:

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

What a week for the members of the organisation team and volunteers of the The Perl Conference in Amsterdam, of which yours truly happened to be one. Normalcy is scheduled to return in the coming days. Well, until the Swiss Perl Workshop of course. For which yours truly still has to start on her presentation. Ah well, it will be great on the day with a cast of presenters like Jonathan Worthington and Damian Conway! Meanwhile, see you all for the next Perl 6 Weekly!

2017.32 Weekly 101

So, one day you start writing the Perl 6 Weekly. And before you know it, you’ve done a 100 of them. Which was last week. Yours truly hopes to be writing many more of these. Well, as long as you readers let me 🙂

Benvenuto!

Yes, the famous Perl 6 Introduction website now also has an Italian version: Perl 6 Introduizone. Of course, if Italian is not your thing, you might want to try: Bulgarian, Chinese, Dutch, French, German, Japanese, Portuguese or Spanish!

Blog Posts

Core Developments

  • Most of the visible developments this week came from all of the work that Jonathan Worthington has done revamping a lot of MoarVM internals, which he describes in his most recent blog post. Apart from that, he also fixed some race conditions in the implementation of supply and whenever.
  • Nick Logan improved Version smartmatch with uneven lengths.
  • Stefan Seifert optimised NativeCall quite a bit.
  • And many other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

Alas, not a lot of that happening this week with The Perl Conference in Amsterdam. Yours truly hopes to see a lot of regular readers there and hear what thoughts they have on making the Perl 6 Weekly better! And if you can’t make it there, be sure to check out next week’s Perl 6 Weekly!

2017.31 Moar Smaller

Jonathan Worthington‘s work of the past weeks on MoarVM got merged, so now we have spesh running asynchronously on another thread. All of these changes have not made Rakudo Perl 6 any faster just yet: the commit message explains why. Since then he has worked mainly on making MoarVM frames smaller (sponsored by OETIKER + PARTNER AG). And if that is not enough, it is now also clear that the Perl Foundation approved another 200 hours grant extension for Jonathan. I can only say I’m looking forward to the results!

Why I’m learning Perl 6

Evan Miller, (co-)maintainer of many open source packages, posted a very positive blog in which he explains why he’s learning Perl 6. Some quotes:

If you’re feeling confused by Erlang, put off by Go, and indifferent to .NET, take a look at Perl 6. Seriously.

MoarVM, the Perl 6 virtual machine, is a fantastic piece of technology. Event loop-aware scheduler? Check. Continuations? You got ’em.

If you’re drawing up a list of programming languages to try out, do your future self a favor and put Perl 6 on the menu.

Excellent PR! This made it to the top in Hacker News, and also had quite a few comments on Reddit’s /r/programming, and a few more on r/perl.

Top Class Training

Apart from all of the presentations on the schedule of The Perl Conference in Amsterdam, there will also be training courses by Damian Conway (Parsing Perl 6 and Presentation Aikido), brian d foy (Mastering Perl and Effective Perl Programming and Jeff Goff (Introducing Perl 6). If you want to catch up on your skills with the some of the greatest names in the Perl world, this is your chance!

Game Night

Thursday evening at The Perl Conference in Amsterdam, a long held tradition from the YAPC::NA will be introduced in Europe: Game Night!. Meet your friends and play! Beer may or may not be involved.

Other blog posts

New Features

  • David Warring added a Buf.subbuf-rw method, similar to Str.substr-rw.
  • Elizabeth Mattijsen made the is default trait fully functional on attributes. If you have a class with:
    class A {
        has $.foo = 42;
    }

    replacing that by:

    class A {
        has $.foo is default(42);
    }

    can make instantiation of an object up to 30% faster. It will also have the side-effect of being able to use Nil to force the default value on an attribute, without having to know what the default value is, in:

    dd A.new(foo => Nil)  # A.new(foo => 42)

Other core developments

  • Samantha McVey improved the performance of Cool.codes upto 3.5x.
  • Zoffix Znet fixed the wording on several error messages.
  • Elizabeth Mattijsen made .unique, .repeated and .squish up to 12x faster. She also fixed all remaining issues with deleted values from Lists and Arrays, specifically with regards to is default. Finally, she also made @a[^10] (aka, using a Range to take a slice of an Array) about 3x faster.
  • And many other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

Quite a fruitful week yet again. And less than a week to go before the training courses start at The Perl Conference in Amsterdam. Being involved in its organisation, yours truly hopes she will have time to write the Perl 6 Weekly next week. Be sure to check nonetheless!

2017.30 Starring Fresh Produce

It was a fruitful week. We saw the release of Rakudo Star 2017.07 thanks to Steve Mynott. Apart from a source version, there are also packages for CentOS, Debian, Fedora and Ubuntu (thanks to Claudio Ramirez), as well as packages for MacOS and Win64 (thanks to Steve Mynott again). And we had a new ecosystem addition for each day of the week. And the hard copy version of Perl 6 Fundamentals by Moritz Lenz is hitting the bookshelves!

The Perl Conference in Amsterdam

The schedule is now published! In other news, the conference Wiki is being fleshed out. Specific entries of importance are:

And you can still register!

Blog Posts

Core Developments

  • Jonathan Worthington continued working on the first step of his overhaul of the MoarVM dynamic optimizer, which optimizes hot code based on collected type information. He now has a branch with optimization and JIT compilation running on a background thread rather than interrupting code, and a new means of data collection that will allow for smarter optimization decisions in the future. Along the way, he has fixed a range of optimization bugs that existed prior to these changes and which were driven out by stresstesting. With everything working again, he will now switch to tuning it ahead of a merge. Finally, he also fixed native callbacks on threads other than the one that provided them in the first place.
  • Samantha McVey worked a lot on optimizing concatenation of strings on the MoarVM backend, fixing several bugs along the way.
  • Gerd Pokorra added a --libdir parameter to the configuration of Rakudo Perl 6.
  • Elizabeth Mattijsen made the various stringifications (aka .Str, .gist and .perl) on QuantHashes (aka Set, Bag and Mix) up to 2x faster. Also, the output of .gist is now sorted. She also worked on Bag|Mix.roll making them upto 2x faster, and fixed a bug in Array.join, which ignored the is default setting of the Array on values :deleted from the Array.
  • Nick Logan made sure that :ver will be treated as a literal Version, rather than as a string. So that use Test:ver is now completely synonymous with use Test:ver(v6.*).
  • Zoffix Znet improved the TODO test handling inside TODOed subtests.
  • Stefan Seifert fixed --ll-exception, which was sadly broken (and got into the 2017.07 release unnoticed).
  • Timo Paulssen made sure that the installation of Rakudo Perl 6 will not cause execution errors in a script that is running the previous version of Rakudo Perl 6 at the same time.
  • And several other improvements and bugfixes.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

Winding Down

Ah, looking forward to next week when we will have many more fruity bits. Hope to see you again, then!

2017.29 Zoffix Released

This week saw the end of an era: Zoffix Znet and his trusty bots released Rakudo Perl 6 2017.07 compiler. Which will be the base of the 2017.07 Rakudo Star release within the next few days by the looks of it.

So why is that the end of an era? Well, because Zoffix decided that he would like to pass on the baton of Release Manager to someone else, which AlexDaniel graciously accepted!

I would hereby like to specifically thank Zoffix Znet for everything he has done to make the release process as easy as it is now. And to thank him for the 14 consecutive monthly Rakudo Perl 6 releases he as done, which is a record! Tip of the hat!

The Perl Conference in Amsterdam

The final list of presentations is now available: no further talks will be added. Unless you want to submit a Lightning Talk! If you’ve already registered, please mark the presentations that you want to attend, so that the organisers can have a better idea of the size of the room needed for that presentation.

Furthermore, it is now certain that there will be 2 days of Hackathon following the Perl Conference in Amsterdam (Saturday 12 and Sunday 13 August) at the same venue. Yours truly will be there for sure, and hopefully a lot of other people working on either Rakudo Perl 6 or Pumpkin Perl 5!

Core Developments

  • Stefan Seifert fixed a precompilation issue on Windows with file handles left open when an up-to-date check failed.
  • Jonathan Worthington had a deserved few days off, but nonetheless managed to fix several problems in MoarVM that would expose themselves as segfaults or causing spurious and hard to track problems. He also made sure that dynamic variables (specifically $*THREAD) are cleared from the cache whenever a halted job continues execution again (which may be on a different OS thread in 6.d).
  • Samantha McVey worked on string concatenation, making sure that no (potentially expensive) normalization of strings is done, unless it is actually necessary.
  • Nick Logan fixed an issue with :merge on a Proc object. He also made sure that done and/or quit are always called on all all taps of a Supply. He also improved the error message on use lib "".
  • Zoffix Znet removed some floating point noise in the denominator of Rat literals.
  • Elizabeth Mattijsen more or less concluded her work on the set operators by adding thorough testing, which exposed a number of issues, and fixing those.
  • And many other smaller fixes and improvements.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Ecosystem Additions

  • WebService::AWS::S3 by Brian Duggan.
  • Winding Down

    A hot week ahead. Please check again in a week to see how hot it got in Perl 6 land!