2017.03 🙆‍♀️ (woman gesturing OK)

In the past week, Samantha McVey has landed emoji support in Rakudo Perl 6 on the MoarVM backend. The code of the title of this week:

say "\c[woman gesturing OK] (woman gesturing OK)";

If you see some strange characters in the title before the parenthesis open, your system doesn’t support Unicode 9 emojis yet. Oh, and should you wonder, all emojis are still only 1 character, thanks to NFG!

say "\c[woman gesturing OK]".chars;    # 1

Javascript Backend Milestone

Paweł Murias has reached another milestone in the development of the Javascript backend for Rakudo Perl 6. Again, a step closer to being able to run Perl 6 code in the browser. And for those of you remembering when Jonathan Worthington reached a similar milestone for the JVM backend: from here on out, it’s going to be a lot easier. I can only wish more power to Paweł!

Perl 6 – The Musical

JJ Merelo has made his latest Perl 6 project public. The introduction:

This book is about learning programming using a promising, and almost completely new, language: Perl 6. But it is only Perl 6 specific in a minority of the content. Most chapters that deal with Perl 6 could be rewritten using any other language, preferably a new, cool language such as Go or Rust. I, or someone, might do it some day. But for the time being, let us be content with Perl 6. Which is also new and cool.

He, and his family, will also talk about it at FOSDEM.

Blog Posts

Meanwhile on FaceBook

I’m adding strong typing to Perl6::Parser in order to help catch some stubborn bugs, and noticing runtimes *apparently* decreasing as I add more Array[Perl6::Element] return types. Yay team! ~10 seconds off Perl6::Parser‘s test suite. Incidentally I’m going to add some ‘find’ methods and start threading elements to have parents and siblings as well as children to make the structure easier to walk. And it pays off within 20 minutes of adding the last ‘returns‘ clauses by uncovering a hidden test-suite bug.
Jeffrey Goff

Meanwhile on StackOverflow

People are starting to ask more and more Perl 6 questions (and get answers!). The past week saw:

Core Developments

  • Incompatible change: previously, so called non-associative operators (such as cmp) could be used with more than two iterables, like so:
    @a Xcmp @b Xcmp @c

    Since this does not make sense, such code will now die: you can now only use 2 iterables with these types of operators.

  • Zoffix Znet tweaked the Geth bot in such a way that it will automatically list all of the associated NQP and MoarVM commits whenever an NQP or MoarVM version bump is done. This will help yours truly with reporting on core developments a lot! Zoffix Znet also fixed an issue with Tap::Harness in the way full file skips were (not) handled.
  • Jonathan Worthington fixed various race conditions with inlining of code in MoarVM and a case of unwanted Garbage Collection in spesh. He also made memory management of call frames much more efficient, resulting in a reduction of memory usage by 10% and making CORE.setting build times being 20% shorter. Finally, he fixed a bug in >>. dispatch (which was probably a main source of instability when running make spectest with a Perl 6 harness) and improved compilation of ||=, //= and &&=.
  • Samantha McVey removed several Unicode 1 names and added Unicode Name Aliases. And of course added emoji support 🦋.
  • Daniel Green made groups in <before> and <after> non-capturing.
  • Paweł Murias reduced the creation of unnecessary containers by reusing them better, only needing half as many as before: this mostly affects the JVM and Javascript backends.
  • Elizabeth Mattijsen made Z with a specific operator (e.g. like zip(:with(&[~]) aka Z~) about 12x faster, X (cross, either with or without a specific operator) about 7x faster, roundrobin() about 4x faster, combinations() about 2x and permutations() about 15x faster.
  • And many other improvements and bug fixes, at about 120 commits the past week.

Ecosystem Additions

Winding Down

This needed quite a lot of tea. See you next week!

2017.02 Dogfooding and Powerbotting

Seems everybody likes robots nowadays. The #perl6 channels on irc.freenode.org have quite a few of them. One of the oldest bots, dalek (written in Perl 5) announces commits to various repositories on the channel. Well, announced, because it has been decommissioned this week. A new, shiny bot called Geth (written in Perl 6) has replaced it (thanks to Zoffix Znet).

Meanwhile, the bisectable bot seems to have been inspirational to the Rust community. Too bad that post was not from a Rust developer.

If you’re interested in knowing what bots frequent the #perl6 channels, finding out about them is a bit troublesome. They’re not all officially documented, but there is a list that appears to be maintained. Maybe next week I can post a proper URL 🙂 .

Sparrowdo Blog

Alexey Melezhik announced the start of a blog about Sparrowdo, the lightweight and very flexible configuration management system written on Perl 6. It’s good to see such a tool being in active development!

FOSDEM

In a few weeks it’s FOSDEM time again: on 4 and 5 February, it will all be happening in Brussels, Belgium. There will be a Perl DevRoom on Sunday. With quite a few Perl 6 related presentations:

Of course, there will also be a Perl booth, where you can get your tuits, stickers, buttons, leaflets and other swag for free. And stuffed camels, stuffed Camelias and books (even a Perl 6 book) at special FOSDEM prices!

OSCON

It should also be noted that Jeffrey Goff will be given a half-day Perl 6 tutorial titled “Fundamentals of Perl 6 – From Zero to Scripting”. Too bad that’s the only Perl element at OSCON (8-11 May). But one can say we’re working on the future!

The Perl Conference in DC

The Perl Conference in DC (18-23 June) (formerly known as YAPC::NA) has presented its Call for Presentations. So please start submitting your Perl 6 presentations! 🙂

Meanwhile on FaceBook

The Perl 6 FaceBook Group has grown to 360 members. In the past week, a few people posted feedback as to how Rakudo Perl 6 has become faster and faster. Some quotes:

Over the last week Perl6::Parser‘s test suite magically sped up from 120 seconds total to 100 seconds total, and all I did was rebuild perl6. (cusr time went up a bit as did csys, but that’s another 16% speed increase in a matter of days! Good work to the #perl6 core team!
Jeffrey Goff

Found some random Perl 6 toy-code I wrote a few years ago, at the time when no compiler existed that would compile it. I forget what the issue was, but it was plum broken. Wouldn’t ya know? It worked first time with Rakudo this morning. That says something mighty fine about the development & developers of Perl6 and Rakudo. Nice work, all.
Paul Bennett

I switched to Wunderlist for managing my to do lists last month. But it didn’t quite handle recurring tasks the ways I wanted to. Good news: it has a public API. Better news: there is a Python library to work with it, and it works GREAT with Perl 6’s Inline::Python. Basically there are six lines of straightforward boilerplate at the beginning of my code, and after that you can call into the Python library almost exactly like it was native Perl 6.
Solomon Foster

That’s the type of stuff we really like to hear!

Meanwhile on Twitter

The Perl 6 News Feed on Twitter now has more than 120 followers, and has seen quite a lot of tweets. If you really want to be at the cutting edge of Perl 6 news, that’s a way to get it!

Meanwhile on GitHub

Rakudo Perl 6 was added to the Programming Languages Showcase. It’s always good to get a little more exposure!

Perl Foundation Grants

If you’re interested to get a grant from The Perl Foundation to do some Perl 6 development work you would otherwise not be able to do, you have until 15 January to send in your proposal!

Core Developments

  • Alex-Daniel Princess has been going over all calls to the camelia bot on the #perl6 channel (which allows you to execute any Perl 6 code), and used the strings to find out about problems and regressions in Rakudo Perl 6. And he has found quite a few of those, which are now all registered as RT tickets (with quite a few of them fixed already).
  • Samantha McVey continued working on Unicode 9.0 support, such as secondary/tertiary collation and emoji support. She also made decoding UTF-8 14% faster.
  • Daniel Green worked on allowed Nd numeric characters in regex backreferences and ${} special variables.
  • Stefan Seifert fixed the build of the JVM backend if there was an older build available (which would interfere).
  • Jonathan Worthington fixed a number of issues, including use of nextsame in conjunction with multi subs with where clauses, and the spooky issue reported as an OO::Monitors bug (which uses callsame) where occasionally the callsame would not, in fact, call anything.
  • Zoffix Znet fixed TAP::Harness choking on single backslashes in descriptions. He also implemented .clone for SetHash, BagHash and MixHash.
  • Elizabeth Mattijsen started working on optimizing meta-operators. So far, the bare Z operator is now 5x faster. She fixed .sort on native arrays and sped up sorting 0,1,2 element native arrays with 30%. She also gave Seq it’s own .join method, making structures such as @a.map(*.Str).join 30% faster.
  • And of course many more fixes and improvements, clocking in at about 120 commits in the past week.

Blog Posts

Ecosystem Additions

A nice catch again!

Winding Down

Phew! If this is any indication of the amount of news every week in 2017, I think I will need quite a lot more tea! Check in again next week to see if I did need more tea 🙂

2017.01 Glancing At A Prime Time

Yes, it’s going to be a prime year this year.

say "Prime Year" if 2017.is-prime;

In other ways, Perl 6 is also ready for the future!

say "News" if True but False;

Leaving it to the reader to decide which way that will go 😏

Perl 6 at a Glance

Andrew Shitov has beaten everybody with the first (modern) Perl 6 book on the market. So that will make at least four generic Perl 6 books this year. Can’t wait to actually have them all in my hands!

Samantha McVey

It is an honour to welcome our latest Perl 6 Core Developer. Looking at her track record so far, one knows that she will do great things in the coming years. Meanwhile, I will try to Keep Calm and Continue Programming.

Core Developments

  • Samantha McVey continued her outstanding work on Unicode support in MoarVM, which we should see in Perl 6 before long. She implemented the Unicode Collation Algorithm in MoarVM/NQP. She also improved Emoji support as well as handling of many Unicode properties, such as the Bidi_Mirroring_Glyph property.
  • Jonathan Worthington re-implemented the utf8-c8 encoding (the one that tries to interpret the input as UTF-8, but starts creating synthetic codepoints for those byte-sequences that aren’t UTF-8), making sure it will never segfault anymore and will always roundtrip regardless of which garbage is thrown at it. He also made sure that /:ignoremark \"/ now actually works.
  • Douglas Jenkins did a lot of work on optimizing IO::Socket::INET.
  • Christian Bartolomäus again fixed various issues on the JVM backend.
  • Zoffix Znet worked a lot on combinations, fixing consistency in handling of edge cases. He also worked on .lines and its handling of limits and the handling of Rat with 0 as the denominator. And many other smaller and bigger things.
  • Daniel Green worked on the Cursor internals to make them a bit faster: since this affects all regex matching / grammar parsing, we gladly take any improvement in that area.
  • Elizabeth Mattijsen worked a bit more on sorting, making sorting of 0, 1 and 2 element lists up to 50% faster.
  • And many other smaller things, with about 150 commits between the MoarVM, nqp and Rakudo repositories.

Blog Posts

Ecosystem Additions

Quite a nice bunch again this week.

Winding Down

One could say we’re off to a great start of the New Year! It also appears that everybody in the Perl 6 community still has the same number of fingers and eyes as before all of the New Year’s Eve fireworks. Please check in again next week for your weekly dose of Perl 6 News!

2016.52 Twittering Towards The End…

…of the year, of course! No (new) Apocalypse planned or anything like that. No, it feels more like there’s a new marketing push gaining strength. For news about the development of Learning Perl 6, you can now follow a dedicated Twitter page: @LearningPerl6, as brian d foy announced recently. Meanwhile, the Perl 6 Facebook Group is now at 340 members. And is still looking for new members!

There hasn’t been much news on Twitter about Perl 6 the past years. The reasons for that are manyfold. But Moritz Lenz has taken it upon him to start a Perl 6 News Feed: @perl6org. If you have anything you want to say on Twitter, contact him about it. Even better, if you would like to help him by tweeting stuff directly on that account, contact him as well. Thank you in advance!

Endventing

The final bunch of the Perl 6 Advent Calendar posts:

Please check the Perl 6 Advent Calendar again on the 1st of December, 2017!

Other Blog Posts

Core Developments

  • Samantha McVey continued doing a lot of work on the Perl 6 highlighter, specifically for the docs. Previously the docs were using the Python Pygments highlighter to highlight Perl 6 code. Now it uses Github’s Highlights, which is the same engine Atom and Github use to highlight files. While Github does not yet have the latest and greatest version of atom-language-perl6, the Pull Request updating it has been merged. We only need to wait for the bump of the version of Linguist. She also did a lot of work on Unicode properties, which unfortunately hasn’t come to full fruition just yet.
  • Jonathan Worthington fixed an issue that would occur when you were recursing very deeply in code that was using a lot of native arrays. He also fixed an error in the error reporting of exceptions thrown in asynchronous code.
  • Daniel Green made IO::Handle.lines and IO::ArgFiles.lines 10% faster. Doesn’t look like a lot, but this being a very basic functionality, we take all the improvement we can get! And this was on top of a 40% improvement he did on the logic handling perl6 -ne!
  • After some discussion on #perl6, Zoffix Znet added infix + and infix - for DateTime and Duration. He also made sure that parse-base can handle strings like -.5. And, as usual, he also fixed many other smaller issues, did quite a few awesomisations and was generally busy.
  • Nick Logan fixed a problem in the handling of bin/resources when installing modules.
  • Elizabeth Mattijsen worked a lot on the sort internals, making sort between 4x (generic List/Array) to 12x faster (for native arrays) and much more memory efficient. She also worked on making Str.split(<a b c>) about 4x faster, which made the test-t canary 15% faster (going from 6.3 to 5.3 seconds).

Not bad for a week in the Holiday Season!

Ecosystem Additions

No ecosystem additions this week. Too bad. But hardly surprising this time of year.

Winding down 2016

This is the last post of the Perl 6 Weekly this year. Only a few issues were missed at the beginning of the year, when everybody was recovering from the frenzy of getting the first official release of Perl 6 into the world. Pretty sure we won’t be missing any issue in 2017! So, until then: be careful with the fireworks, keep all of your fingers and eyes, and see you again next year!

2016.51 Flowing Towards Christmas

This weekend saw the Rakudo 2016.12 compiler release. This will be the last release that has a bug in the module loading logic. This bug makes a module available globally, when it shouldn’t. As Zoffix explains in this announcement. So if you’re a module developer, please make sure that your module keeps working the coming month before the next release, which will be on the 21 January 2017. On behalf of the Perl 6 core developers, thank you!

Adventing Along Some More

Some real cool advent posts this week (again)!

And now only 5 more to go 😦

Learning Perl 6 Kickstarted Succeeded!

We have liftoff! With 563 backers and $40,404 in pledges before the deadline, the project has been brought to life. And here are the last Quick Tips that brian d foy promised us:

Other Blog Posts

Not so many, but still a few:

Core Developments

  • Samantha McVey continued her work on unimatch and uniprop.
  • Zoffix fixed warnings in the REPL, several broken .perl methods, andthenorelse chaining, last without "foo".index("a") and making sure the endpoints are never picked with Range.rand.
  • TimToady added a warning that will catch the my $s = 1, 3 ... 15 thinko (it should be my $s = (1, 3 ... 15)) and similar cases involving meta-operators.
  • Stefan Seifert made building of NQP more flexible to make life easier for packagers. He was of course also responsible for the lexical module loading fixes that were merged into the bleeding edge of Rakudo Perl 6. And the text of the announcement!
  • Elizabeth Mattijsen fixed a problem with grep and the use of last in a block that did not contain any phasers. She also made indexes of the form @a[*-1] about 2.5x as fast.
  • And many more smaller fixes and speed improvements.

Ecosystem Additions

Another nice batch, some of them from the Perl 6 Advent Calendar.

Winding Down

The dark days before Christmas are almost over. See you again, next week, JAC (Just After Christmas)!

2016.50 Highlighting & ProfileSQL

Samantha McVey has been working on Perl 6 syntax highlighting for the Atom editor. First of all, it is now a perl6org github project. Secondly, the Atom Perl 6 Syntax Highlighter Plugin’s download location has moved.

Daniel Green tells me yours truly failed to mention the possibility of profiling a piece of code, and having the output appear in SQL that can be queried later. Simply specify a filename with an .sql extension in the --profile-filename= parameter when running the code you want to --profile.

Adventing Along

Every day a new Perl 6 advent post!

And for our Japanese friends, Itsuki Toyota has been organizing a Japanese language counterpart.

Learning Perl 6 Kickstarter

The funding goal of the Learning Perl 6 Kickstarter has been reached! And that’s even without the TPF Grant Proposal! brian d foy is still looking for more backers, even at $1 a piece, to gauge the support in the community. So, if you just want to let him know you think the book is a good idea, please pledge just the one dollar to increase the number of backers!

Meanwhile, brian has continued his Quick Tips:

Other Blog Posts

Other Core Developments

  • Several cases have been fixed where a function expecting to generate a list would return a single Failure. In these cases, the Failure would make .elems return 1, which would be interpreted as a single element list and ignore the Failure. If one would only be interested in the number of elements, this would be a false positive. So TimToady suggested these cases should probably .throw the exception immediately. And this was implemented for .combinations, .permutations and .grep so far.
  • Paweł Murias made sure Rakudo Perl 6 can support superscript powers that are larger then can be stored in a native int.
  • Daniel Green added .gist, .perl and .Str methods to BOOTSTRAPATTR, a special case of Attribute-like object that can exist at the very beginning of the compilation of the setting. Which is of great help for core developers.
  • Zoffix Znet made Ranges with Num 13x faster because of fixing a performance issue with using === on 2 Nums.
  • Moritz Lenz made sure that Match.prematch and Match.postmatch are correct on zero-width matches.
  • Samantha McVey has done a lot of work on uninames, univals and uniprops. She also made sure we can now use five more pairs of matching brackets:
    • ⟮ ⟯
      U+27EE MATHEMATICAL LEFT FLATTENED PARENTHESIS
      U+27EF MATHEMATICAL RIGHT FLATTENED PARENTHESIS
    • ⸤ ⸥
      U+2E24 BOTTOM LEFT HALF BRACKET
      U+2E25 BOTTOM RIGHT HALF BRACKET
    • ⟬ ⟭
      U+27EC MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
      U+27ED MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
    • ⸢ ⸣
      U+2E22 TOP LEFT HALF BRACKET
      U+2E23 TOP RIGHT HALF BRACKET
    • ⸦ ⸧
      U+2E26 LEFT SIDEWAYS U BRACKET
      U+2E27 RIGHT SIDEWAYS U BRACKET
  • Jonathan Worthington fixed another set of Proc::Async related issues and optimized Int to (native) int conversion.
  • And many, many other fixes and optimizations (about 80 commits), mostly done by Zoffix Znet!

Ecosystem Additions

Quite a nice batch again!

Not strictly an ecosystem addition, but J.J. Merelo has a Docker image with a Perl 6 installation for Alpine Linux.

Winding Down

It’s really heartwarming to see so many blog posts and so many people attacking such a breadth of problems in Rakudo Perl 6. I can only quote Zoffix Znet from his blog post:

It’s easy to give a helping hand to the core developers of Perl 6 by fixing some of the bugs. Starting from easy things that require nothing more than knowledge of Perl 6, you can progressively learn more about the internals and fix tougher problems.

Join us. We have… bugs to fix!

And on that note: please check in again next week for more Perl 6 news!

2016.49 It’s Looking A Lot Like Blog Posts

Like snow flakes, all different, all unique! But a lot to read and to take in. On the other hand, you have a whole week to catch up!

Adventing Perl 6

Yes, it’s that time of the year again: every day a blog post about a specific Perl 6 feature. Every Day!

Quick Tipping

As part of the Learning Perl 6 Kickstarter (now 95% funded with more than 450 backers), brian d foy continued writing his Quick Tips every day:

Of course, it’s not too late yet to back his Kickstarter and become part of this unique endeavour!

Core Developments

  • Jonathan Worthington again fixed some GC (garbage collection) related issues that primarily showed up when using Proc::Async. He also fixed a data race in Supply.interval and various races in supply/whenever.
  • Christian Bartolomäus worked around behaviour of nqp::substr working differently on the JVM backend.
  • Zoffix Znet invested a lot of time de-terming -Inf, so that it better follows the rules of precedence. He also made sure that (aka U+2212) can be used as an alternative for - (aka hyphen).
  • Stefan Seifert fixed an issue for packagers that was so eloquently raised by Matt Trout at the London Perl Workshop during the repeat of his YAPC::Europe presentation The raptor and the butterfly.
  • Elizabeth Mattijsen worked on the final bits of optimising the native shaped arrays, making them quite a bit faster at initialisation, iterating and standard methods such as .values, .pairs and so on.
  • and of course many other improvements, bug fixes and awesomizations.

Other Blog Posts

Ecosystem Additions

Winding Down

A tiresome week for yours truly. But that won’t stop anybody from making the coming week another good week for Perl 6 and even more tiring for yours truly. And that’s a good thing 🙂 So check in again next week for more Perl 6 news!