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!

2017.12 How To Race A Hyper

Jonathan Worthington has focused his attention on race and hyper, two ways of making your code run in parallel more or less automatically. In his most recent blog post he describes the history behind hyper and race, and how he is (re-) considering the exact semantics for the coming 6.d version of Perl 6. Please check out this spreadsheet and let him know what you think about it.

And Yet Another Compiler Release

It was that time of the month again. Zoffix Znet and his trusty bots released Rakudo Perl 6 compiler, Release #109 (aka 2017.03). It’s getting almost as normal as landing a first stage rocket in your back garden. Anyways, this release has fixed the lexical module loading bug, which changes the way symbols exposed by a module are visible in your code. This was announced last December. Should you not have changed your code yet to take this bug fix into account, you can take a look at the Lexical require upgrade info, posted by Zoffix Znet.

Core Developments

  • Samantha McVey made case-insensitive regex matching better and 20%-30% faster by using foldcase internally in a smarter way.
  • AlexDaniel noticed that was not properly set up for handling lambda’s, and knew how to fix that as well.
  • After much discussion, Zoffix Znet removed support for the special ⁇ ‼ Unicode ternary operator. No worries, ?? !! are still there!
  • Zoffix Znet also fixed an issue with map with blocks that are guaranteed not to return a Slip. And also made IO::Pipe.lines 3x faster by removing code as part of the work on the IO grant.
  • Timo Paulssen fixed an issue with nqp::p6bool which wasn’t aware of the existence of native variables, causing unnecessary boxing/unboxing.
  • Elizabeth Mattijsen made the .WHICH on Cool types about 1.8x faster, which should cause an improvement when using Cool values with .unique, Sets, Bags and object hashes. She also fixed an issue with rotor.
  • Fernando Correa fixed an issue with flattening in a triangular reduce using infix: and some Cool / Str infinilooping in multiple dispatch.
  • Daniel Green fixed an issue with the ~^ operator on Bufs.
  • And of course many other smaller improvements and bug fixes!

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Ecosystem Additions

An interesting addition for packaging up your applications, an easier way to do an HTTP client, and an interface to ftplib!

Winding Down

Still very busy. Even though it apparently is spring now, it feels more like autumn. Let the sunshine in! See you next week, for more Perl 6 news.

2017.11 Tidy Da Tags

Jeffrey Goff made the first version of Perl6::Tidy available for general usage. As he announced in his tweet, only very few lines were needed to perform this feat (so far). But that’s because all of the hard work he already put into Perl6::Parser! In any case, something that people coming from Perl 5 have frequently asked for in Perl 6 is (a step closer to) reality now.

Tag Your Distributions

Zoffix Znet started a project to make it easier to find Perl 6 distributions in the ecosystem. By adding tags to your distribution, these tags can be used as targets for search queries. He explains it all in a blog post.

Perl Developers Survey 2017

The people at Built In Perl have announced their yearly Perl Developers Survey, and they would like you to participate in it. It will only take a few minutes!

So You’re Experienced in Python

The nice folks of the Perl 6 documentation project have created a page to help programmers coming from Python. It discusses the equivalent syntax in Perl 6 for a number of Python constructs and idioms. There have been similar pages for Perl 5, Ruby and Haskell, in case you were wondering why Python was being advantaged here 🙂 .

VIP ¿Que?

There’s something hovering in the air!

Core Developments

  • Samantha McVey fixed some issues with case-insensitive matching, specifically for those unicode characters that have a lower/upper case version that is longer/shorter than the original character: now the fold-case functionality is used internally. And as a bonus, it is also 30% faster!
  • TimToady has been working on some useless use warnings, further support for slangs and meta-operator issues with the xx operator.
  • Jonathan Worthington fixed some issues related to Proc::Async, specifically if the process could not be spawned.
  • Lloyd Fournier fixed some issues with multiple requires & require clobbering pre-existing packages, building on the extensive work by Stefan Seifert getting require to work correctly in the lexical module loading world.
  • Elizabeth Mattijsen made the xx operator to always return a Seq: before a List would be returned in some cases.
  • Zoffix Znet made sure that code resulting from function combinator () retains the parameter count and arity of the original code.
  • Daniel Green added specialized candidates for infix min and max, making them about 3x faster.
  • And of course many other smaller fixes, improvements and speedups!

Other Blog Posts

Meanwhile on Twitter

More than 250 followers now! 🙂

Meanwhile on StackOverflow

Ecosystem Additions

A modest catch this week:

Winding Down

It has been a busy week for yours truly. And the following weeks will also be very busy. But that’s all irrelevant for you readers 🙂 . So please check again next week for more Perl 6 news!

2017.10 ≤ It’s all relative ≥

In the past week, we saw the landing of several Unicode operators in Rakudo Perl 6: (aka <=), (aka >=), (aka !=) and finally ⁇ ‼ (aka ?? !!), courtesy of Fernando Correa de Oliveira and Aleks-Daniel Jakimenko-Aleksejev. This was tweeted by Zoffix and had quite a few (weird) responses. Well, weird for those of us not versed in Twitter Etiquette: Priorities, Relevant, APL, Mad (Irish) and Duct Tape. That was another 5 minutes of fame in our Twitterverse. Now at 220+ followers, a 10% increase in 2 weeks!

On The Book Front

The cover contest for Moritz Lenz‘s Perl 6 By Example book has a winner. Congratulations! My personal favourite, with the origami / paper ripping effect, so yours truly is happy as well.

Meanwhile, Andrew Shitov has officially announced his new Perl 6 book: Migrating To Perl 6. Which incidentally also has an origami inspired cover. Expected in paperback in May 2017.

There also was a thread on Reddit about Perl books, “incited” by the coming “barrage” of Perl 6 books. 🙂

Core Developments

  • A potentially breaking change was implemented by Elizabeth Mattijsen. The .reverse method now returns a Seq instead of a List. This makes reversing shorter Lists faster, but more importantly, it prevents unnecessary copying by using an iterator that walks a reified list from the end to the beginning (rather than iterating over a reversed copy from beginning to end). Code expecting .reverse to return a List rather than something more generally Iterable may break. So far, no reports of such breakage are known.
  • Jonathan Worthington worked on fixing many issues again the past week. One of them involved translation of newlines on Windows (which is now on by default with Proc::Async).
  • Zoffix Znet made sure that a Seq and a List can never be considered the same with eqv. He also implemented Str.parse-names, which gives functionality similar to "\c[BELL, BLACK HEART SUIT]", except it can be used at runtime, without requiring EVAL or the use of nqp ops.
  • Samantha McVey fixed several issues with the unicode support, specifically on the JVM.
  • On the speedup department: callframe about 20% faster, reduce on operators with right associativity now about 30% to 2x faster, IO::Handle.lines about 20% faster.
  • And of course many other smaller fixes and improvements.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Ecosystem Additions

Quite a nice catch this week!

Winding Down

Spring is in the air! And so is rain. With some sunshine in between. And that about sums it up for the past week. See you next week for more Perl 6 news.

2017.09 The IOs Are A-Changin’

Zoffix Znet has started working on the IO Standardization Grant for real. And his first grant report brings us many goodies apart from what he’s been up to so far. Worth a read! He also put up a more visible message to warn us of the coming changes.

Help Moritz

Moritz Lenz is looking for feedback with regards to the cover of his Perl 6 By Example book: tell him which ones you like from this list!

Other Core developments

  • Jonathan Worthington fixed several segfaults and panics.
  • Zoffix Znet fixed several infiniloops related to methods in the Cool class. He also fixed an issue with thunking of notandthen, as well as a precision loss when using cmp involving Rationals and Ints, and fixed some issues with Rat/FatRat.
  • Daniel Green did a lot of smaller optimizations in nqp, related to subs and methods returning Nil.
  • Elizabeth Mattijsen made % about 8x faster, and %% about 14x faster, at least for the Int/Int case. She also made the creation of Junctions about 20% faster, and fixed self-referential assignments of hashes.
  • And many more smaller fixes and optimizations.

Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Ecosystem Additions

Winding Down

A little bit later than usual, due to a visit to the AmsterdamX.pm meeting. Please check again next week for more news about Perl 6!

2017.08 Evolving Slangs

TimToady has been working on providing a more stable API for handling sub languages, aka slangs, such as Slang::Piersing (allowing identifier names such as $foo? and $bar!) and Slang::Tuxic (uncuddle parens open from sub/method name when calling them). This is all part of work making parsing of grammars faster, which so far has been able to get a few seconds off of building the setting. It is also making it possible to implement new grammar related features in the future. And it should help keeping people, wanting to work on this piece of the Rakudo internals, sane.

Rakudo 2017.02 Compiler Release

Zoffix Znet and his trusty bots have done it again: this month’s Rakudo Compiler release, aka Rakudo 2017.02 is out now!

Blog Posts

Other Core Developments

  • Jonathan Worthington fixed a bug in Supplier::Preserving which would occasionally mix up the order of the emitted values. He also fixed a bug when using a grammar from several different threads.
  • Zoffix Znet made sure that flat() will pass on the is-lazy value of an Iterable if that is flattened.
  • Nick Logan and Stefan Seifert solved several issues regarding installing and loading of identically named modules, but with different auth/ver and/or being from different distributions.

Meanwhile on StackOverflow

Meanwhile on Twitter

The perl6org Twitter newsfeed now has more than 200 followers. Tweets not otherwise mentioned in the Perl 6 Weekly are:

Winding Down

Still a little jetlagged. Hope yours truly did not make too many mistakes in this episode of the Perl 6 Weekly Saga! Be sure to tune in next week, when yours truly hopes to have returned to her normal level of sanity.

2017.05 A Week Of Blue Mondays

It could be the cold speaking, but somehow the past week felt a bit silent on the Perl 6 development front. Looking at the traffic on #perl6, the past week definitely looks lighter than the weeks before. But quite a lot of work was done nonetheless!

Rakudo Star 2017.01

Steve Mynott has just released Rakudo Star 2017.01. If you don’t want to be on the bleeding edge of Rakudo Perl 6 development, but still want to get all of the nice improvements in speed and functionality, that’s the distribution you should try!

Think Perl 6

O’Reilly has formally announced the Perl 6 book by Laurent Rosenfeld: Think Perl 6 – How To Think Like A Computer Scientist.

If you want to learn how to program and think like a computer scientist, this practical guide will get you started on your programming journey with Perl 6, the new version of the popular programming language. Ideal for beginners, Think Perl 6 contains numerous exercises with multiple solutions and a lot of code examples. Even experienced programmers will learn a lot from this book, especially those familiar with Perl 5. It’s designed for teaching computer science to beginners in universities.

There should be early version ebooks available. If they aren’t yet, please try again in a few days!

6.d.PREVIEW available

Based on the work of Stefan Seifert almost a year ago, we now finally have a use v6.d.PREVIEW with actual new / incompatible features. The most important of these so far has been the adding of support for non-blocking await / react by Jonathan Worthington. In use v6.c, an await or a react would block the thread in which it occurred, making the system hang if the number of active awaits would get near the maximum number of threads available. If you do use v6.d.PREVIEW, this is no longer the case. But this also implies that one can no longer be sure that code is actually continued on the same OS thread after an await or react, which may cause some problems e.g. specifically when interfacing with external libraries with NativeCall.

Other Core developments

  • Zoffix Znet fixed quite some bugs again, such as colonpair-extended names on subroutines (e.g. sub foo:bar<ber>), bugs related to IO::Handle.lines and the .= initialization with types that have a :: in the name (such as my Foo::Bar $a .= new).
  • Samantha McVey fixed some bugs and added support for matching on Unicode properties, such as say "a" ~~ /<:Letter>/. She also added the last of the Unicode named sequences, which are in addition to the Emoji sequences that had been added earlier. Getting codepoints or sequences by name is also now case-insensitive, "\c[solidus] \c[Grinning Face]"; # / 😀. These functionalities are now documented.
  • Stefan Seifert made sure that all CompUnit::PrecompilationRepository implementations have a try-load functionality.
  • Christian Bartolomäus unbroke the JVM-build that got broken due to the v6.d.PREVIEW work.
  • TimToady made parsing in general about 2 percent faster, making the parsing of the setting a second faster.
  • Elizabeth Mattijsen worked on making a lot of iterator based features faster and test coverage of iterators more complete.
  • And, as usual, a flock of other fixes and improvements!

Blog Posts

Meanwhile on StackOverflow

Ecosystem Additions

A quiet week here as well, apart from Jonathan Stowe++ adopting a number of orphaned distributions.

Winding Down

The coming two issues of the Perl 6 Weekly will be brought to you by Timo Paulssen (again). After the FOSDEM next weekend, yours truly will be enjoying some quality R&R in the Gulf of Mexico and will be mostly offline for the duration. Hope the cold I have now will lift itself before then 🙂