2018.42 A better Atom for 6

Ahmad M. Zawawi has completed the first version of Perl 6 language support for the Atom IDE, based on an App::Perl6LangServer module that can be used by any editor / IDE that supports the Microsoft AppServer architecture. If you’re a fan of the Atom editor / Atom IDE, this will make it a lot easier to work with Perl 6 in it. So now Perl 6 doesn’t have one IDE, but two (the other one being the Comma IDE of course).

Perl[56] on the 35c3

Daniel Böhmer is trying to get a Perl Assembly together for the 35th Chaos Communication Congress in Leipzig, Germany. So if you would like to hang out together with other Perl people at the CCC, contact Daniel to make this happen! (FaceBook comments).

6.d review completed

Zoffix Znet has completed his pre-release review of 6.d spec (Twitter comments 1, 2). A truly impressive piece of work at almost 3500 commits reviewed and more than 400 corrections and improvements. Kudos!

JIT Grant Proposal

Bart Wiegmans has submitted a Perl Foundation grant request titled: MoarVM JIT Compiler Expression Backend Maturation. Focus of this grant will be on JITting floating point operations, improving generated code quality and improved handling of “irregular” instructions such as div. Comments as always welcome! (Reddit and grant comments).

Stupid Numeric Ticks

scruss got a little bit carried away trying to do as much as possible with Unicode numbers in a blog post titled: 𒐳 / ༳ == ( ⑽ – 𐹭 ) * ( 𒐲 / 𐅉 ), of course. Why does one do this? Well, because one can! In any case, a nice example of the flexibility of Perl 6 (Hacker News, Reddit comments).

Markatu – a lightweight markup language

Brian Duggan dove into the world of markup languages by creating a markup language called Markatu, inspired by markdown’s brevity and slim’s flexibility. In the article he describes the (Perl 6) techniques he used to create this markup language, and also lists the source that he created to render the HTML of the article (Twitter, Reddit comments).

OSCON 2018

Jim Brandt reports on the Perl booth at OSCON in Portland, OR this year. Caution: contains explicit pictures of swag.

No Perl DevRoom at FOSDEM 2019

The organizers of the Perl DevRoom at FOSDEM have been told that there will not be a Perl DevRoom at the coming FOSDEM. This is a big disappointment, but in the view of the number of groups wanting to have a DevRoom (about 140) and the number of rooms available (about 30), Perl has had a good run in the past years (FaceBook comments).

Core Developments

  • Ticket status of past week.
  • Bart Wiegmans fixed several small JIT issues.
  • Tzu-Li Chen performed a lot of code cleanup in NQP for the Java backend.
  • Paweł Murias continued his work on integrating the three backends of Rakudo Perl 6 even better, specifically in the area of native integers and makefiles. He also fixed the REPL on the Javascript backend and removed the undocumented and not correctly functioning --encoding command line parameter.
  • Valentin Anger fixed several problems introduced during the scalar refactor.
  • Elizabeth Mattijsen refactored the handling of MAIN subroutines, allowing for better pluggability. She also documented these new features in a separate Command Line Interface documentation page, and added tests for all these new (and old) features.
  • Tom Browder added a lot of notes and hints on the use of NQP.
  • And some smaller fixes and improvements.

Questions about Perl 6

Meanwhile on Twitter

Meanwhile on FaceBook

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding Down

A busy week again, with some sad news with regards to FOSDEM. But please don’t cancel your travel plans to Brussels because of that: one could also see this as an opportunity to spread knowledge about Perl to other tracks. So if you see an opportunity of submitting a presentation about Perl (be it Perl 5 or Perl 6), please do take that opportunity to get out of the echo chamber! And on that note yours truly wishes everybody a good week. Until next week, for more Perl 6 news!

Advertisements

2018.41 Merged the JS!

Rakudo Perl 6 now has 3 supported backends: MoarVM, JVM and Javascript! Paweł Murias has merged his work of the past years into the master branch of Rakudo Perl 6 (reactions on Twitter: 1, 2). This is definitely a milestone! But there’s still a lot of work to be done to really make it more performant and have all of the features of the leading backend MoarVM. But a definite beachhead into the world of Javascript has now been established. And a doubling of the bus number of people who have implemented a backend for NQP / Rakudo Perl 6!

Speeding up object creation

Jonathan Worthington explains how the recent Perl 6 object creation speed improvements actually came about. In short, a combination of bug fixes in multi-dispatch cache, implementing some things that were planned but simply not implemented yet, a closer look at how the BUILDALL method is generated, and a lot of speshialization fixes.

A future for fork

Bart Wiegmans describes his work on making it possible to use fork() (again) in Perl 6 on the MoarVM backend on systems that support POSIX semantics. An impressive effort to make a heavily threaded system dance to the prerequisites that fork needs!

Math::Matrix (part 4)

Herbert Breunung continued his series about Math::Matrix in part 4 focusing on naming methods. An interesting read:

But even mathematics has its history and culture and for instance an adjugate matrix can also be called classical adjoint or sometimes adjunct. In that case I went with adjugate because it’s a recently used term, it’s short and I sensed the least potential for ambiguity with other existing methods.

Another benchmark

Robert Lemmen has another benchmark running based on monthly Rakudo compiler releases. Yours truly is looking forward to the results of the 2018.10 compiler release due in a few weeks. Meanwhile, there appears to be one benchmark he’s soliciting assistance on. Any takers?

My first Perl 6 program

bobthecimmerian describes how he created his first Perl 6 program in only a few days from having no experience with Perl 6 at all.

Having it both ways

Michael Stevenson has published an interesting article about the history of Perl titled “Having it both ways: Larry Wall, Perl and the technology and culture of the early web. This brings back memories for yours truly, but is also an interesting read for anybody who would like to know more about those early times of the Web (Twitter, Reddit comments).

A Perl 6 introduction for the curious

With a very understated tweet, Victor Borisov announced the availability of a Russian 80-page introduction to Perl 6 “for the curious”. Yours truly just loves it when Perl 6 related things appear on the web “out of nowhere”. It proves that Perl 6 is getting out of the echo chamber!

Squashathon Results

Last weekend saw another Squasathon in the Hacktoberfest month. The winner is JJ Merelo: he will receive a plush Camelia as the price for the most Pull Requests.

A Language Name Alias

Zoffix Znet posted a blog titled “A Request to Larry Wall to Create a Language Name Alias for Perl 6” in which he compiled his argumentation for the need of a marketing alias for Perl 6 (/r/perl, /r/perl6, /r/programmingcirclejerk, blogs.perl.org, and Twitter comments: 1, 2, 3, 4, 5. This excludes two extensive discussions on FaceBook that have unfortunately been removed by the original posters).

Core Developments

  • Ticket status of past week.
  • Bart Wiegmans fixed a problem in the JIT with regards to PHI nodes with labels.
  • Jonathan Worthington fixed a problem in call optimization and a leak in spesh.
  • Jeremy Studer reverted a problematic optimization for bit shift operations.
  • Timo Paulsen made NativeCall‘s CArray[42] return a container so you can assign to it.
  • Elizabeth Mattijsen fixed an issue with type constrained hashes that wouldn’t correctly type check.
  • And many other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on FaceBook

Questions about Perl 6

Although StackOverflow is probably the best place to ask specific questions about Perl 6, sometimes people ask them at other places such as Reddit as well. Yours truly will now put these together into a Questions about Perl 6 section from now on.

Meanwhile on perl6-users

Although there have been a lot of Perl 6 questions of late on the perl6-users mailinglist, the format doesn’t lend itself to browsing for answers very well. So yours truly is keeping these separate, hoping for either a better place to view mail threads, or people moving to StackOverflow to ask their questions:

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding Down

Again, a busy week with a lot happening. Please check in again next week for more Perl 6 news!

2018.40 Lesser Than Two

Jonathan Worthington has done it again! Only last week did Merijn H. Brand‘s speed canary script drop below 2 seconds for the first time. In the past week, it dropped below 1.7 seconds twice already (at moment of writing). Which indicates a speed increase of almost 20%. Wendy van Dijk wrote a blog post titled “Perl 6 speed improvements over the years” to make sure everybody is on the same page with regards to this benchmark, with some nice comments!

Fortunately, this speed increase was corroborated by H. Merijn Brand with another benchmark. A simple object creation script that showed that, at least for that benchmark, Perl 6 is now faster than any version of Perl 5.

To describe how these speed increases came about, Jonathan Worthington wrote two blogposts:

Recommended reading if you want to get to the nitty gritty! Or, if you want a bit more of an overview, check out the August 2018 Grant Report. Or if you want to get in even deeper: an overview of changes in Moar.

Another 6.d Teaser

Zoffix Znet released another Perl 6 Diwali Teaser (/r/perl, /r/perl6 comments). It describes how atomic operations allow multiple threads to update variables at the same time without needing any locking. If you have another idea to promote Perl 6, please be sure to leave an issue in the Perl 6 Marketing Repo!

RED developments

Fernando Correa de Oliveira invited people to look at his new ORM called RED which resulted in quite some nice feedback on Reddit.

Rakudo.js Update

Paweł Murias reports on the progress of running Perl 6 in the browser using Parcel. And why he prefers it over Webpack.

File encoding support

Samantha McVey reports on her progress in implementing several additional streaming encoders / decoders for encodings such as Shift-JIS and UTF16 and how to deal with BOM‘s in the latter encoding.

A naive introduction to OOP

This one appears to have been slipping through the cracks for more than a month: uzl has written a very nice naive introduction to object orientation. It takes a real-life use case, and creates an app from that.

Naming of variables

In the fifth instalment of the series titled How naming of variables works in Perl 6, yours truly shows that although on the surface variables look very much the same in Perl 6 compared to Perl 5, but that appearances can be deceiving. Oddly enough, this did not incite any comments on Reddit. It did generate a lot of (positive) tweets from all over the world.

Perl  Small Stuff #11

Jo Christian Oterhals looked at whether Perl 6 can pass the Numberphile calculator tests. And comes to some interesting conclusions!

Fixing the syntax barrier

In an almost year old blog post, Christopher Chedeau describes his frustrations with syntax errors caused by false friends when moving between programming languages. Zoffix Znet and Ralph Mellor had some thoughts in relation to Perl 6, specifically with regards to use isms.

House cleaning

Stefan Seifert describes how he has deployed a little Perl 6 daemon in production by using the operating system’s IO notifcation features that are exposed in Perl 6 as an asynchronous Supply of file change events. A nice example of how Perl 6 can gradually be used in an environment otherwise dominated by Perl 5.

Squashathon Ahead

On the 6th of October (anywhere in the world) it will be Squashathon Day again! This month, since it is October, your Pull Requests will also count towards the Hacktober Fest, thanks to the procedure put in place by Aleks-Daniel Jakimenko-Aleksejev. Looking forward to see many of you active next Saturday!

Core Developments

  • Ticket status of last week and the month of September.
  • Timo Paulsen made it possible to have the JIT add comments to the spesh log.
  • Bart Wiegmans continued his work on making fork work properly in Rakudo Perl 6 on operating systems that have a native fork() functionality. He also removed support for the JIT-log: this is now incorporated in the spesh-log and implemented support for a perf map on Linux.
  • Zoffix Znet fixed a small-int / big-int boundary division that occurred when multiplying / dividing two integer values.
  • Elizabeth Mattijsen optimized various forms of for iterating over ranges and sequences, making something like for 1,3...999999 about 150x faster. She also made [1,2,3], about 1.4x as fast.
  • Samantha McVey updated Moar and Rakudo to use the Unicode 11.0.0 semantics and grapheme databases.
  • And many other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding down

When I said last week:

…a backlog of optimizations will see the spotlight in the week to come. Hopefully giving some really good news next week…

I couldn’t hope for the improvements we’ve actually seen! As Jonathan describes in his blog posts, there is more to come. But probably not in time for the 2018.10 Rakudo compiler / Rakudo Star release. So let’s enjoy the ride and see you next week for more Perl 6 news!

2018.39 Less Than Two

The speed canary script run daily by Merijn H. Brand has dropped below 2 seconds wallclock time for the first time in the history of the test being run (FaceBook comments). Since then, this has happened one more time (at moment of writing): there’s always a bit of noise involved with these timings. Check out the raw version of the speed log, if you want to keep up to date.

Rakudo 2018.09 Compiler Release

Aleks-Daniel Jakimenko-Aleksejev and Samantha McVey have done it again: release MoarVM and the Rakudo Compiler. Claudio Ramirez took this as an immediate cue to update the directly installable Linux distributions. Kudos to all involved!

Thoughts on using Perl 6

Alex Schroeder explains in his blog post how he has been maintaining the Oddmuse wiki software since 2003, and that he is now learning Perl 6 using a real project (Reddit comments).

Math::Matrix

Herbert Breunung continued his series of blog posts about Math::Matrix:

Documentation from the CLI

bdmatatu describes the quick hack with which it is possible to look at the documentation of docs.perl6.org from the command line.

Worth learning

EarlTheGray enquired about Perl 6 on Reddit, specifically about the functional programming side of it. And that there didn’t appear to be much of an active Perl 6 community. Yours truly guesses we need to get out more 🙂

Core Developments

  • Ticket status of last week.
  • Samantha McVey implemented the UTF16le and UTF16be streaming encoding / decoding while following the behaviour of Perl 5 with regards to BOMs.
  • Tobias Boege fixed an issue with the recursion check of non-dwimmy hyperops.
  • Zoffix Znet continued his tireless work in preparation for the 6.d release, specifically focussing on consistent behaviour of Rats.
  • Elizabeth Mattijsen fixed an issue with QuantHash.ACCCEPTS with regards to other QuantHashes of the same type.
  • And many other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding Down

A week with relatively little happening in the Perl 6 core, but all the more outside of it, judging by the number of tweets and the number of new / updated modules in the ecosystem. With the release now out of the door, a backlog of optimizations will see the spotlight in the week to come. Hopefully giving some really good news next week. See you then!

2018.38 Three Versus Six

Patrick Spek has written a nice blog post about some Hackerrank solutions for Python 3 and Perl 6. Which created quite a few comments on /r/python, /r/programming and /r/perl6. For some people it provided a nice way to show off their versions of the code in question!

A new Oddmuse?

Something yours truly forgot to mention last week. Alex Schroeder has been thinking about re-implementing the Oddmuse wiki using Cro (FaceBook comments). Your views are very welcome!

Thoughts on sigils?

An interesting thread caused by the question: What are your thoughts on sigils? on Reddit. A good read, with even some APL mixed in.

Signatures in Perl 6

Yours truly had the fourth installment of her series on migrating code from Perl 5 to Perl 6 published on opensource.com. Which caused some comments on Reddit: /r/perl and /r/perl6.

The 128-Language Quine Relay

An interesting blog post on esoteric.codes of last April actually also contains Perl 6! As ab6tract noticed.

Core Developments

  • Ticket status of last week.
  • Ben Davies fixed a recent regression in state and once blocks.
  • Paweł Murias fixed an optimizer issue related to +=. He also added a nqp::decodelocaltime NQP op.
  • Stefan Seifert optimized booleanification at the NQP level, by a nqp::hllbool op that replaces the nqp::p6bool op.
  • Zoffix Znet continued his preparatory work on the 6.d release of Perl 6, specifically in the area of cleaning up the test-suite (aka roast).
  • Jeremy Studer provided a bunch more JIT templates.
  • Tom Browder (partially) implemented the ‘#’ alias for %config :numbered.
  • Elizabeth Mattijsen improved the speed of the various .lines and .words methods. She also introduced a PredictiveIterator role for those Iterators that can predict the number of values that they will produce, without actually having to produce them. She also generalized the use isms feature to also include use isms 'C++'.
  • Samantha McVey implemented reading and writing files encoded in utf16 (machine order only). She’s also working on supporting utf16le and utf16be, and would like to have feedback on how to handle BOMs (aka ByteOrderMarkers). Comments welcome!
  • Aleks-Daniel Jakimenko-Aleksejev worked on improving the toaster to make things faster and more useful (failing modules are now bisected automatically). Still a work in progress. In the process Whateverable got a noticeable refactor to make parts of it reusable.
  • And many other smaller fixes, improvements and speedups.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

Meanwhile on perl6-users

Perl  in comments

Perl 6 Modules

New modules:

Updated Modules:

Winding Down

Even though this week was a day shorter (on account of last week’s Perl 6 Weekly being a day late), there was plenty to mention and research. As you may have noticed. See you again next week!

2018.37 A DEtour of Damian

Out of the blue, or so it seemed, Damian Conway has appeared to do a Tour of Germany, giving presentations in Frankfurt, Erlangen, Dresden and Berlin. The last day will be a full-day Advanced Technical Presentation class (thanks to Strato AG). Entrance is always free, thanks to sponsoring by the Frankfurt Perl Mongers (FaceBook comments).

Linux packages updated

Thanks to the tireless work of Claudio Ramirez, the Linux packages for the Rakudo 2018.08 Compiler Release have been updated. Which now also include support for Alpine 3.8 and openSUSE 15.0. Check them out at https://github.com/nxadm/rakudo-pkg/.

Improved hygiene in JIT templating

After last week’s Rakudo Compiler release, Bart Wiegmans has merged a branch that provided many updates to the JIT expression template compiler in MoarVM. This should make it easier and less error-prone to write JIT expression templates, as he explains in a blog post.

What I did not steal from Perl 6

Ilya Sher, the author of the Next Generation Shell describes in his blog post things that he would (like to) steal from Perl 6, or not (Reddit comments).

Math::Matrix Introduction

Herbert Breunung introduces the Math::Matrix module in the first
blog post of a series (Reddit comments).

Tailgrepping Spinners

Brian Matatu has written a nice blog post about grepping the output of a tail -f (aka looking for things from a process that writes lines to standard output as they are written) (Reddit comments). Then Ralph Mellor took the idea to ask a question about the readability of the script. One interesting quote from the responses:

The start react ... whenever { } stuff looks interesting enough for me to stick this on my Big Pile of Stuff to Look intho, though.

Twisting the Rationals

Donaldh dug deeper into the performance of rational numbers (aka Rats) in a blog post titled A Twist To The Rational Story. It also showed a nice way to use a combination of [+] and race that yours truly hadn’t thought of yet!

Spotlight on Timo Paulssen

Timo Paulssen responded to a question on the new Curious Cat platform on how he got involved with Perl 6. He further described how he made videos of cellular automata in Perl 6. Interesting stuff!

Jo Christian Oterhals at it again!

The past week did not see 1, not 2 but 3 blog posts by Jo Christian Oterhals:

All very interesting reads!

I Am Sparrowdo

Alexey Melezhik has written an introduction on how to use Sparrowdo on Windows. Cool to see a nice tool getting a proper introduction!

Swiss Perl Workshop

The past weekend also saw the Swiss Perl Workshop 2018. Separate videos of each presentation are not available yet, but since everything was live streamed, there are archives available of the raw streams: Day 1 and Day 2. Kudos to the SPW organizers and to Lee Johnson to make all of the streaming and recording seem so easy.

Core Developments

  • Ticket status of past week.
  • Since this weekly is already very late and very full, yours truly will summarize next week for two weeks.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on FaceBook

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding Down

So. Much. Happening. And not enough time. Hopefully next week’s Perl 6 Weekly will be more in time than this one. See you then!

2018.36 Normality Returns

A little later than originally anticipated, but Rakudo has had another compiler release: 2018.08, thanks to Samantha McVey (MoarVM release) and Aleks-Daniel Jakimenko-Aleksejev. After it turned out impossible to make 2018.07 stable enough for a release, it was decided to scrap that release. The 2018.08 release had a few stability issues as well, but these were all fixed in the past week. This means we’re ready for a new round of optimizations to be tried and tested!

London Perl Workshop on 24 November

Due to a planning conflict, most notably with freenode #live, the London Perl Workshop has been moved from 3 November to 24 November. You can still submit your Perl 6 related presentation!

“Learning Perl 6” Available

brian d foy tells us that Learning Perl 6 is now available as ebook in various formats. Some reviews are already available. If you contributed to the Kickstarter, you should have been notified by now.

More about “AAA” .. “ABS” Strangeness

Jo Christian Oterhals continued his quest on finding the difference in behaviour of "AAA" .. "ABS" between Perl 5 and Perl 6 (FaceBook comments).

Containers in Perl 6

Elizabeth Mattijsen had part 3 of her series on the differences between Perl 5 and Perl 6 published on opensource.com (Reddit comments).

Faster FASTA

Timo Paulssen got triggered by a question on StackOverflow, did some research which resulted in an excellent blog post (Reddit comments).

Awesome and Fascinating

Those were the words that Mr. Spaz used to describe a presentation about Perl 6 that JJ Merelo gave at the ZipRecruiter offices to the Los Angeles Perl Mongers: There’s-a.new(:Perl).in-town().

One Year Of Squashathon

Although the past weekend’s documentation Squashathon wasn’t such a big success, it was the 13th Squashathon in a row. Which means we have now over a year of Squashathons! Kudos again to Aleks-Daniel Jakimenko-Aleksejev for setting all of this in motion!

Core Developments

  • Ticket status of last week and the month of August.
  • Jeremy Studer made sure that initializing a native array with a lazy Seq, or splicing a lazy Seq into a native array, throws immediately.
  • Aleks-Daniel Jakimenko-Aleksejev removed support for $*INITTIME, as was promised in the deprecation message.
  • ribbon-otter supplied code that allows support for all coloncircumfix in the form 42.:<->.
  • ryn1x made sure that Regex.ACCEPTS(Uni) sets $/ as expected.
  • Elizabeth Mattijsen made sure that Seqs smartmatch Iterables correctly. She made it also possible to emit Mu values.
  • And some other smaller fixes and improvements.

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Perl 6 in comments

Perl Modules

New Modules:

Updated Modules:

Winding Down

It’s good to be back home and be able to write the Perl 6 Weekly in a familiar surrounding for a change. Next week’s Perl 6 Weekly will be coming from somewhere near Switzerland, while returning from the Swiss Perl Workshop. See you next week!