2016.48 Kickstarting Along

brian d foy‘s Learning Perl 6 Kickstarter is coming along nicely at 78% funded with about 350 backers so far. But we’re not there yet! brian really wants to get to 2000 backers, even if they only pledge 1$. So if you haven’t pledged yet, please show your support by pledging at least that!

Meanwhile, he has quite a bit of an advent going on himself:

Quick Tips #1, #2 and #3 were already mentioned last week.

Meanwhile, Moritz Lenz‘s Perl 6 By Example project can also use your support. You can support this effort by subscribing to the mailing list and telling him how much you would want to pay for his book!

New Rakudo Star Release

Steve Mynott brought us Rakudo Star 2016.11. If you’re a Rakudo Star user, you should definitely look into this release, as it may be a lot faster for your particular application.

White Camel Awards

It’s that time of the year again. Please cast your votes for the White Camel Awards! With the White Camel Award, we recognize significant non-technical achievement in Perl and its community, the people who keep the Perl community going and deserve to be recognized!

Gem From The Past

Someone mentioned a transcript of the Larry Wall presentation Present Continuous, Future Perfect at the OSDC::Israel::2006 conference. It’s quite a read, but if you really want to get an idea of how Rakudo Perl 6 got to be the way it is today, it’s worth your time!

Core Developments

  • Jonathan Worthington solved several issues that became most visible when using Proc::Async.
  • Zoffix Znet fixed several issues related to handling edge cases of Numeric values, as well as Iterator.flat skipping values in some situations.
  • Stefan Seifert made sure that installed scripts now properly know what their name is.
  • Samantha McVey provided support for history when using Readline in the REPL.
  • Pepe Schwarz fixed an issue with attributive binding on the JVM.
  • Elizabeth Mattijsen continued to work on optimizing shaped arrays, or more specifically, native shaped arrays.
  • And of course many more smaller fixes and improvements.

Other Blog Posts

Ecosystem Additions

Winding Down

Next week’s Perl 6 Weekly may be delayed a bit because yours truly will be decommuting from the (free) London Perl Workshop 2016. Which incidentally has the following Perl 6 related presentations:

Hope to see you there! And check in again here next week for more Perl 6 news.

2016.47 Perl 6 入门

Yes, Naoum Hankache‘s perl6intro.com has been translated to Chinese by ohmycloud and wenjie1991. I guess that adds about 1 billion people being able to start learning Perl 6 in their native language. I can’t help but think: Hindi anybody?🙂

Releases

Last weekend saw the release of Rakudo 2016.11. If you’re too lazy to compile the source, you can also download Claudio RamirezCentOS and Ubuntu packages. Since the problems that plagued the installation of Rakudo Star 2016.10 on Windows have been fixed, it is now possible again to make a full release of Rakudo Star. Which Steve Mynott started working on only moments after the compiler release was cut by Zoffix Znet. This has resulted in a Rakudo Star 2016.11 Release Candidate. Please check it out! A lot of things should have gotten significantly faster since the last fully functional Rakudo Star release (2016.07).

Dates For The Perl Conferences

Next year will see at least two Perl conferences: The Perl Conference NA on 18-23 June 2017 at the United States Patent and Trademark Office in Alexandria, Virginia. Which is very close to Washington, DC, so plenty of things to see there! Later that year will see The Perl Conference in Amsterdam on 9-11 August at B.Amsterdam in Amsterdam, The Netherlands. Plenty to see and do there as well! So mark these dates in your agendas! Please note that neither of these conferences are in any way affiliated with O’Reilly Media.

Advent Season

There are still slots available for the Perl 6 Advent Calendar! If you have something to tell about Perl 6, this is a nice place to do it with quite some exposure!

Books

This week saw a flurry of announcements about Perl 6 books and associated blog posts.

For those of you with your feet firmly in Perl 5 ground, you might want to check out brian d foy‘s Learning Perl 6 Kickstarter which already has more than 225 backers. A Perl 6 version of the bestselling Learning Perl, also published by O’Reilly. What is there not to like? If you/the company you work for/with supports this Kickstarter well enough, you will not only get a day of an on-site Perl 6 course given by brian, but also two days of Perl 5 courses! Reddit comments here and here.

Moritz Lenz announced Perl 6 By Example, in which he wants to recycle the approach taken in Using Perl 6 to introduce topics by example. It would not be a comprehensive guide to the Perl 6 language, but enough to get you started (Reddit comments).

And then there is Ken Youens-Clark‘s Metagenomics book in which all examples are written in Perl 6. And Laurent Rosenfeld‘s adaptation of Think Python, Think Perl 6 – How to Think Like a Computer Scientist, which is also in the works. All in all exciting news from the Perl 6 book front!

Core Developments

  • Zoffix Znet added a parse-base sub/method, which converts a Str in a 2..36 base to base-10 Numeric, and sanitized the use of Whatever with base. He also made sure that .defined works properly in conjunction with Junctions.
  • Jonathan Worthington fixed a long standing issue with concurrent use of the same string as a hash key. This work also saves 8 bytes per hash key. He also made sure that you can use a Regex as a TOP rule in a Grammar.
  • Pepe Schwarz implemented attributive parameter binding on the JVM.
  • Stefan Seifert fixed the fact that a Match was pretending to be a value type: it is not!
  • Elizabeth Mattijsen made initializations of shaped arrays at least 10x faster. She also activated the possibility of creating native shaped string arrays (aka my str @a[5]).
  • And quite a number of other fixes and improvements!

Blog Posts

Ecosystem Additions

Winding Down

Wow, it’s been a while since there was that much to tell about a week in Perl 6! I like where this is going! Check in again next week for more Perl 6 news!

2016.46 Tweaking Cheaters

A week in which many of us felt stunned, be it because of the dreary November weather, people you like dying, or just because of the future state of the planet. Luckily, some exciting developments are taking place in the Perl 6 world again!

TWEAK

Last week, Timo Paulssen implemented functionality to post-process the attributes of an object after it has already been initialized using the normal BUILD procedure: TWEAK. This will make a lot of people coming from Moose happy. However, having this new feature available now, beckons the question on what constitutes use v6.c. I’m pretty sure we will have an answer on that question next week.

Meanwhile in the Twitterverse

Zoffix Znet showed a nice graph. brian d foy is building up the suspense about a Learning Perl 6 book from O’Reilly! And Matt Trout mentioned the addition of TWEAK.

Other Core Developments

  • cpin provided a patch that makes duckmap preserve the structure it is mapping over.
  • Zoffix Znet fixed an overflow that occurred when specifying large Num literals. He also made sure that defined() autothreads as expected (it didn’t before). Converting a string that looks like a number (but which has combining characters) now no longer works, also thanks to him.
  • Jonathan Worthington fixed various race conditions that would wreak havoc in flapping NativeCall related tests.
  • Timo Paulssen made sure chrs() now also work on strings that look like numbers.
  • Christian Bartolomäus kept covering developments on the JVM backend and e.g. made sure that List.antipairs continued to work.
  • Elizabeth Mattijsen continued to work on shaped arrays: copying one shaped array to another is now at least 10x faster, as are initializations of shaped arrays. She also worked on Map and List iterator related methods making them up to 20% faster.
  • And of course many other smaller fixes and improvements.

Blog Posts

Winding Down

I’m glad the past week has gone by. Please check in again next week!

2016.45 Shapes Get A Boost

The past week has seen a lot of work on optimizing shaped arrays (and to some extent: native shaped arrays). What are shaped arrays, you might say? Simply put: at compile time you can specify how many dimensions and how many elements per dimension an array will have.

my @a;           # an array that can have anything in it
my @a[10];       # an array with 10 elements
my @a[10;10;10]; # a 3-dimensional array of 10x10x10

This Perl 6 feature was implemented in the weeks before the release last Christmas, and as such did not receive a lot of optimization love yet. A little while ago, Jonathan Worthington pointed out that there were highly optimized nqp functions for handling 2 and 3 dimension cases. The existing code only used the generic N-dimensional nqp functions. After these optimizations, generic shaped array handling is at least 2.5x as fast. Also, iterating over a 1 dimensionally shaped array is now 30% faster than over an ordinary array. Native shaped arrays should receive similar treatment in the coming week.

Lexical Module Loading

Another Perl 6 feature that was mostly implemented just before the Christmas release, was lexical module loading. Since then, Stefan Seifert has worked a lot on this area, improving efficiency and features. One feature that didn’t make it then, was enforcing the complete lexicality of a loaded Perl 6 module. In Perl 5, if you use Foo, and Foo had as use Bar in it, all of the code running could then make use of Bar, even though it had not explicitly loaded that. Currently, that is also true for Perl 6, but that is really a bug and not a feature. In the lexical_module_loading branch, Stefan Seifert fixed this. Unfortunately, this will break some modules in the ecosystem that depend on the old, Perl 5 like behaviour.

Adventing Again

Moritz Lenz reminds us that it is almost that time of the year again. If you have something to write about for the Perl 6 Advent Calendar, contact Moritz or Zoffix on the #perl6 channel so they can add your blogpost-to-be to the schedule.

Why Hasn’t Perl 6 Taken Off Yet?

A rather extensive discussion on Hacker News with over 200 comments. And not all bad. Any publicity is good publicity! There are also some reddit comments.

The Times They Are A-Changin’

Mark Keating informs us that Karen Pauley has stepped down as President of the Perl Foundation. In the Perl 6 Weekly I can only give a big Thank You! If you get the chance, please thank her for all of the hard work she has done for The Perl Foundation in the past 8½ years. Or just send her an email! I know I have!

Other Core Developments

  • Jonathan Worthington fixed a number of issues relating to NativeCall and garbage collection. He also fixed an issue with Lock.protect that would not release the lock if an control exception (such as next, last or return) occurred in the code being protected. Finally, he fixed error reporting around start: if the code running asynchronously caused an exception, that exception will now also be shown when the broken Promise is evaluated, instead of just the location where the Promise was evaluated.
  • Tobias Leich made sure that MoarVM can be built on any version of macOS (formerly known as OS X), regardless of snafus caused by Apple.
  • Elizabeth Mattijsen implemented the :kv, :p, :k and :v filtering adverbs for single element accesses to shaped arrays (e.g. say @a[1;1]:kv will give something like ((1 1) 42)).
  • Zoffix Znet fixed a bug related to the set operator and Mixes having keys with negative weights, after John Haltiwanger exposed this problem.

Documentation Developments

Wenzel P. P. Peppmeyer tells us there is a new Perl 6 Grammar Tutorial for all those who wanted to ask about grammars but where to afraid to do so.

Other Blog Posts

Ecosystem Additions

Again, only two this week.

Winding Down

I like the shape of things to come! Check in next week for more fresh Perl 6 news!

2016.44 Увод в Perl 6

Yes, we have another translation of Naoum Hankache‘s excellent Introduction to Perl 6: Bulgarian, thanks to Krasimir Berov (Красимир Беров)! Of course, we shouldn’t forget all of the other translations already available: Spanish, Portuguese, Japanese, German, French and Dutch! Or in code:

say "{<bg es pt jp de fr nl>.pick}.perl6intro.com"

macOS .dmg for Rakudo Star 2016.10.1

Steve Mynott gave the OS X users an installable .dmg that should work on Yosemite, El Capitan en Sierra.

Incompatible Changes

  • The :overlap/:ov and :exhaustive/:ex adverbs on Str.subst (aka s/foo/bar/) are no longer allowed. Fallout of this should be minimal, as it really doesn’t make sense to use these adverbs in a substitution.

Core Developments

  • Zoffix Znet implemented Setty eqv Setty, thereby also fixing some flappiness in roast.
  • Jonathan Worthington fixed a potential serialization issue with regards to compiler services. He also turned nextwith and friends into real subroutines, which means they can now be called faster as they’re resolved at compile time now, instead of runtime. He also helped fixing a nasty new bug in Str.match.
  • Daniel Green continued his work on removing low-level attributes needed in the bootstrap, and replacing them by high level Attribute objects.
  • Tobias Leich fixed many issues in Moar, related to using libffi. He also made it possible to build rakudo on s390x.
  • Elizabeth Mattijsen continued to work on making Str.match and Str.subst faster, with some success. She also fixed a problem where my $r = /foo/; "foo" ~~ $r would not set $/, whereas the equivalent "foo" ~~ /foo/ would. Finally she made the eqv operator handling 1.2x to 14x faster, and IO::Spec::Unix.canonpath 7x to 50x faster, depending on the dirtiness of the path.
  • And many more smaller optimizations and bug-fixes.

Blog Posts

This week some blog posts that are not directly related to Perl 6. Sometimes the lack of having Perl 6 mentioned, is the reason they are listed here.

Ecosystem Additions

Only 2 this week. Boom!

Winding Down

Quite an interesting week again! Check in again next week!

2016.43 Shining Star

This week saw the release of Rakudo Star 2016.10, the latest and greatest version of Rakudo Perl 6 for the end-user. Thanks again to Steve Mynott for making this happen! One should also note that after each Rakudo compiler release, Claudio Ramirez makes deb and rpm packages available to the general public.

Performance of Perl 6 string operations over the last year

Cygx created a nice overview of how the performance of string matching has evolved over the past year. The trend is definitely positive, but there is still a lot of work to do!

London Perl Workshop

Neil Bowers points out in a nice blog post that this is the moment for you to submit your Perl 6 presentation for the London Perl Workshop on the 3rd of December. Even if it would be the very first time in your life you would give a presentation!

The Perl 6 Job Market

Julie Bort describes in an interesting article (reddit comments) how being an experienced Perl programmer should ensure you a good paycheck. Combine this with the O’Reilly’s 2016 European Software Development Salary Survey that shows that being proficient in either Perl 5 or Perl 6 gives you an advantage of +$2,636 on a yearly basis (page 28). Interesting stuff, although you need to register before getting the actual report. Mind you, these are statistics, which may or may not apply to you personally.

Incompatible Changes

While Elizabeth Mattijsen worked on optimizing Str.match, it became clear that the :nth adverb handling had some issues. In light of this TimToady indicated how he would like to see it. Basically, :nth will always return as many matches as it can, and non-monotonically increasing indexes (such as :nth(1,4,3,5) will result in an exception being thrown (instead of being silently ignored). This is now implemented.

Other Core Developments

  • This week, Zoffix Znet looked at a lot of trigonomic edge cases and how they behave in Rakudo Perl 6. So now atanh(1) returns Inf instead of throwing an exception, and ∞ ≅ ∞ returns True instead of False (to name but a few things he worked on). He also fixed the behaviour of Test.pm‘s is-approx to be more like the old (and deprecated) is_approx test function. Finally, he fixed an issue with SetHash, BagHash and MixHash type objects not correctly autovivifying.
  • Jonathan Worthington fixed a MoarVM crash in callframe(), a problem when using code blocks in grammars running in multi-threaded code and a missing close in IO::Path.slurp.
  • Jimmy Zhuo fixed a recently introduced bug with mkdir() on Windows.
  • Elizabeth Mattijsen introduced support for 3 new Iterator methods: skip-one, skip-at-least and skip-at-least-pull-one. She also finally committed the refactoring of Str.match, which resulted in speed increases of 1.2x to 14x, depending on the mix of named variables given. This also made Str.comb(Regex) about 7x faster.
  • And many other smaller fixes and ameliorations.

Blog Posts

Only one left that wasn’t already mentioned this week.

Ecosystem Additions

Only one this week also. I guess everybody is working on Pull Requests for the Hacktoberfest!

Winding Down

An interesting week again with a lot of goodies. And don’t forget, there’s only one week left in October, so be sure to submit your Pull Requests for the HacktoberFest!

2016.42 Release Time

Welcome back! The answer, in case you wondered, is of course 42:
$ perl6 -e 'say "Life, the Universe and Everything".WHY'
42
See WHY for more information.

Releases

Zoffix Znet and his robobuddies released yet another Rakudo Compiler Release: 2016.10. Steve Mynott took it upon himself to create yet another Rakudo Star release (candidate for now) from this compiler release. Please test this release candidate!

Core Developments

A rather quiet week just before the release. The items marked * did not make it in this month’s release, so will be found in next month’s release.

  • Jonathan Worthington continued his work on the Unicode encoding/decoding re-factor, now allowing for Proc::Async to choose the encodings of the input and output handles. He also fixed a problem with a too eager optimization of .return.
  • Zoffix Znet, among many other things, fixed a number of Mix and Bag related coercers.
  • Tobias Leich fixed a problem with .roll on MoarVM with values larger than 2**32, which turned out to be a problem in the underlying libtommath, which got fixed upstream*.

Blog Posts

Ecosystem Additions

Quite a nice crop this week!

Winding Down

Brought to you from OSCON Europe in London, UK. See you again next week!