Or, how to go from 2.5x slower to only 1.1x slower than Perl 5. Jonathan Worthington explains it all in his blog post titled “Optimizing reading lines from a file“. But that’s not all he’s done in the past week! Last Friday he also gave an online presentation titled “Primitives, Composition, Patterns” (slides), which was part of the sponsoring by Nick Logan. A must see if you want to get up to date on the latest in concurrency in Perl 6! And also a prime example of the quality of deliverables of sponsoring Jonathan.
Seqs, Drugs, And Rock’n’Roll
Zoffix Znet published part 2 of his blog post series about Iterator
s and Seq
s. Please look at part 1, in which he discusses how a Seq
can .cache
its values, if you haven’t done so already. Part 2 delves into how to write your own Iterator
and what you can do to optimize it for a number of use cases.
Other blog posts
- Perl is $schrödinger_state by Leon Fayer (Reddit comments).
- Why
/\d/
is rarely what you want by Curtis Poe. - Thoughts on Perl 6
eqv
by Curt Tilmes.
So you want to be a Presenter
You can still be one at The Perl Conference in Amsterdam, as the Call for Papers has been extended to 7 July. There is no schedule yet, but the list of accepted talks is available. On it, you can already find the following presentations that have some relation to Perl 6:
- Precise Math in Perl 5 – A Lost Cause? Challenge accepted. by Martin Becker.
- Perl 6: Superglue for the 21st Century by Brian Duggan.
- Parsing with grammars shootout by Lars Dieckow 迪拉斯.
- Spit: A Postmodern DevOps tool, written in Perl 6 by Lloyd Fournier.
- Machine Learning in Perl 6 by Jeff Goff.
- Notes from the Trenches: Parsing Perl 6 *with* Perl 6 by Jeff Goff.
- It’s in the bag: How to cheat at interviews using Perl 6 by John Haltiwanger.
- Behavioral Subtyping and Composition by Yuval Kogman.
- Function Signatures Compared – Perl 6, Perl 5.20 and
Sub::Sig
by Rolf Langsdorf. - High End Unicode in Perl 6 by Samantha McVey.
- Unicode Internals of Perl 6 by Samantha McVey.
- Rakudo.js – compiling Perl 6 to JavaScript by Paweł Murias.
- Functional Programming in Perl 6 by Laurent Rosenfeld.
- How to hack the MoarVM JIT compiler by Bart Wiegmans.
Core Developments
- Jonathan Worthington worked a lot on
Proc
andProc::Async
. For instance, it is now possible to get the native descriptor inProc::Async
. This was done by creating aProc::Async::Pipe
, which is a subclass ofSupply
with anative-descriptor
method that returns aPromise
that will produce the native descriptor as soon as it becomes available. Readingstdout
/stderr
is now also delayed until theProc::Async::Pipe
Supply is actuallytap
ped. These changes now allow the standard output/error of one process to be chained to standard input of another process. - Zoffix Znet introduced the
%*SUB-MAIN-OPTS
dynamic hash support for tweaking the parsing ofMAIN
parameters. - Elizabeth Mattijsen continued her work on set operators, specifically on
(+)
(the baggy addition operator) and made sure that all set operators handle lazy lists correctly. She also revertedBaggy
semantics for(<=)
and (<) after it was pointed out that these changes caused problems with some of the already documented examples, and the fact that there is a special set operator forBaggy
semantics:(<+)
. - And some other smaller fixes and improvements.
Meanwhile on StackOverflow
- Recursive generator – manual zip vs operator by dharmatech.
- Why are some of my ranges insane? by Christopher Bottoms.
- Is there a way to get a list of all known types in a Perl 6 program? by brian d foy.
- Do all Perl 6 quoting constructs have term precedence? by brian d foy.
- How do I find the version and authority of a Perl 6 module? by brian d foy.
Meanwhile on perl6-users
- Version of a Module by Martin Barth.
- Not enough memory by Gábor Szabó.
- Accepting values on the command line by Gábor Szabó.
Ecosystem Additions
- Chart::Gnuplot by Toyota Itsuki.
- Sparky by Alexey Melezhik.
Winding Down
A nice week with some surprises. A good beginning of the second half of 2017. Be sure to check again next week for more Perl 6 news!