2015.45 Grapheme Clustering

This week saw Jonathan Worthington++ finish off the last nook and crannies of the NFG work, specifically supporting the Unicode® Standard Annex #29:

(it) describes guidelines for determining default segmentation boundaries between certain significant text elements: grapheme clusters (“user-perceived characters”), words, and sentences.

Or, in other words, as Jonathan described in his commit message:

This aligns our definition of “grapheme” with that of grapheme cluster in Unicode Annex #29. There is one exception: we don’t treat \r\n as a single grapheme yet (we will, but need to further debug the fallout of doing so). The changes so far should hopefully cause little fallout in the ecosystem, aside from more correct semantics with the characters of various languages. The other notable changes is that we no longer produce synthetics for combining chars placed on control chars (so a combiner after a control char is now an isolated combiner).

The best Unicode support of the world in a programming language just got better still!

Deadline London Perl Workshop This Friday

The theme of this year’s London Perl Workshop is A Perl Christmas (?). Or more elaborately:

The theme for the London Perl Workshop will be A Perl Christmas. This year we have heard that Perl 6 will have a Development release and a Version 1.0 release for Christmas. In honour of that we will be devoting this event to all things related to Perl 6. What effect has Perl 6 had on the ecosystem, the modules, the libraries and the community? What does the future hold for Perl 5 and Perl 6? We will also accept talks and workshops on Perl 5 and Perl 6 related subjects as well as the existing Perl Frameworks and Libraries.

If you think you can do a presentation there, please submit it before this Friday. London is a magical place in December. Let’s make it extra Perl 6 Magical this year! And make sure that question mark is a mistake 🙂

Cluj.pm Event On 19 November

The next Cluj.pm Event has a quite an interesting schedule from a Perl 6 point of view:

  • Perl 6 In Production by Andrew Shitov (keynote)
  • From Regular Expressions To Parsing Javascript – Learn Perl 6 Grammars by Jeff Goff
  • Zero To Infinity And Beyond – Rethinking The Rational by Jeff Goff

Only 16 days to go! Not a lot of time to register and book your flight!

Noticeable Fixes And Additions

  • Tobias Leich++ made it possible to use a generic type in a coercive type:
    sub accum( ::T \a, T(Cool) \b ) { a += b } now works. In this example the second positional will be coerced to the same type of the first positional, as long as it was Cool.
  • Pepe Schwarz++ and Will Coleda++ worked a lot on at least investigating and categorizing the post-GLR fallout on the JVM. Some problems were fixed, others merely properly ticketed. Fortunately, the “wall” that was mentioned in the previous Perl 6 Weekly, has been, at least temporarily, taken care off by smarter handling of internal constant strings. Hopefully, we will not run into that wall again until after Christmas (this year!).
  • TimToady++ worked on auto-generating meta-operators without actually needing to use them:

    There’s a sense in which none of the metaoperators are really there, but are abstractions; up till now they’ve autovivified themselves as needed only when used in a normal operator slot, but now they autovivify when mentioned as nouns or function names too, in any of &foofix:<op>, foofix:<op>, or &[op] now also honor the abstraction

    Or as Moritz Lenz++ said it:

    There are infinitely many operators that you can create from basic operators and meta operators. For example from infix:<+>, you can create X[ZR+] or so. We don’t create them up-front, but on demand. That used to work for calls, but not for references to those operators. Now it works for references too.

  • Timo Paulssen++ started on making my Rat $a = 42 a compile error, rather than a runtime error. TimToady++ expanded on that work, and made it all happen just like Timo imagined it.
  • Elizabeth Mattijsen stole a recent idea from Perl 5 and implemented this as a .head and .tail method on List. The advantage of .tail specifically is that it will only use memory for the list elements actually returned.
  • Jonathan Worthington++ also fixed a long standing infiniloop bug in grammars if you were quantifying something without width: /^+/ being the golfiest version of that. This now complains with
    Can only quantify a construct that produces a match
  • Various speedups: Buf.list and Blob.list (26x faster). Str.split (2x to 15x). "a" .. "z" (15x to 25x). List.kv (1.5x to 6x). s:g/from/to/ (2x). tr/a/b/ (2x). tr/a// (2x).

More Doc, Better Doc

The documentation repository of Perl 6 (which is where the documentation website is generated from, saw more than 30 commits last week. Lloyd Fournier++ tells us the search on the website has been much improved (like being able to search on if). Of course, this is still a work in progress, so if you find any problems (or can’t find something), let us know. Preferably by a Pull Request 🙂

Blog Posts

Only one the past week:


Only one this week as well, a bootleg even!

Perl6 On Facebook

The Perl6 public discussion group on Facebook now has more than 200 members and the group has seen some lively discussions already. So I’m told 🙂

Ecosystem Additions

Works In Progress

  • Jonathan Worthington is working on I/O in MoarVM. New features and significant performance improvements could very well materialize the coming week.
  • Stefan Seifert has been working a lot on the curli branch that should bring us the final implementation of distribution installing and module loading.
  • Pawel Murias is making progress on the Javascript backend for Rakudo. Now, having 3 backends for Rakudo Perl 6 by Christmas 2015, that would really be a very nice surprise. If you would like to see that happen as well, contact Pawel (pmurias on the #perl6 channel): he sure can use our help!

Winding Down

It’s been an exciting week. The coming week promises to be even more exciting still! So tune in next week, same time, same channel 🙂


Got something to note?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s