Perl 6 Design Minutes for 05 May 2010

chromatic on 2010-05-10T06:07:34

The Perl 6 design team met by phone on 05 May 2010. Larry, Allison, Patrick, Will, and chromatic attended.

Larry:

  • various spec updates, some major
  • removed p5=> description because it's not supported in core
  • deleted self:sort construct because self isn't a real syntactic category
  • explained Perl patterns in terms of PEGs, and spec'ed tiebreaking rules explicitly
  • last but not least, finally purveyed the long-threatened revamp of proto to keep routine and method semantics similar
  • they all now work much more like the multiple dispatch semantics currently used by STD, where we always call the proto first
  • the proto is then always in charge of the actual multiple dispatch; it can of course delegate that
  • and the default for a null body corresponds closely to current semantics
  • in hacking news, the lexer generator mislaid any alternative that was a bare . pattern, so cursor_fate never called its alternative, oops
  • took me a long time to run that one down, because it resulted in a horrendous backtrack causing mysterious misplaced errors
  • revamped character class parsing to be more helpful and correct
  • STD now check a normal regex bracket's innards for old-school character class, and warns if found
  • added a .looks_like_cclass method to Cursor to detect most accidental uses of P5 ranges
  • some valid P6 brackets will complain, but the workarounds are easy
  • just put whitespace on both ends is one way
  • removed a few of these old-school-ish character classes from STD
  • changed :tr language to :cc language since character classes share it
  • (translation pays more attention to ordering, but the language is the same)
  • turned out parsing character classes discovered issues in STD; various character classes needed to backslash # that would otherwise be a comment
  • to that end, we now allow \# in character classes instead of misparsing as unspace
  • if we find an invalid - in a regex, we now presume we're in an old-school character class and fail with a sorry instead of a panic to give the character class code a shot at it
  • STD now uses ~ syntax for regex brackets to set $*GOAL correctly
  • cleaned up recursive panic detection; it was possible to get both false positives and negatives before
  • STD shouldn't use 'note' to emit a panic inside a suppose because that leaks the message that should be trapped
  • STD now suppresses duplicate sorry messages more correctly
  • sorry no longer uses panic in a supposition, but dies directly to throw the exception to the suppose's try block
  • STD now allows subscripts on regex variables so $x[0] isn't taken as a character class; still needs speccing

Patrick:

  • can we make them consistent?

Larry:

  • historically S05 has allowed bare arrays to mean interpolation

Patrick:

  • we've never had a working implementation of that

Larry:

  • a bare @ would be illegal

Patrick:

  • it's currently illegal

Larry:

  • you'd have to backslash it to match part of an email address
  • it's not like the @ alternations are a big deal one way or another
  • that'd be a little more consistent
  • I forced it to think of the sigil as $ than what it really is

Patrick:

  • after seeing how Jonathan et all did interpolation for quoted strings, I thought we should do the same thing in regexes

Larry:

  • STD now has a partial fix to prevent leakage of ::T from role signatures
  • unfortunately, the current fix will lose signatures of file-scoped generic roles
  • this probably has to do with not knowing whether we're really going to want a new pad; unfortunately we'd have to look ahead to know that currently
  • various other minor tweaks and bug fixes in STD and Cursor

Patrick:

  • mostly responding to messages and reports
  • should be able to get back to coding full-time and online for the next week
  • plan to resolve the list and closure issues with NQP and Rakudo
  • will answer other questions and try to keep other people productive
  • planning for the Rakudo Star release on June

Allison:

  • busy with the last week of classes
  • spent most of it writing a little language with PCT
  • it was easy to use and easy to swap the stages of PCT
  • I remembered what Patrick did with LOLCODE
  • also had a discussion of source code control systems
  • next week should be more productive
  • need to work more closely with Debian packagers to get packages into Debian

Will:

  • cleaning out as many deprecations in Parrot as possible
  • trying to improve the speed of CodeString after the immutable STRINGs merge
  • bundling lots of little concats helps
  • hope to merge in an optimization branch for that by the weekend
  • want to make that faster or less memory intensive
  • may require the use of a new StringBuilder for Parrot
  • hopefully will result in a faster Rakudo build

Patrick:

  • I've never seen CodeString take a long time
  • unless you run into memory problems
  • * discussion of the StringBuilder PMC *

c:

  • still working on optimizations, particularly CodeString
  • looking at more PBC and PBC-building optimizations
  • PBC size went down dramatically and startup improved for Rakudo
  • should have that much faster for the 2.4 release
  • will poke at GC tasks starting next week