Perl 6 Design Minutes for 21 October 2009

chromatic on 2009-10-29T22:17:53

The Perl 6 design team met by phone on 21 October 2009. Larry, Allison, Patrick, Will, Nicholas, and chromatic attended.

Allison:

  • fixing a few last bugs in the pcc_reapply branch
  • extremely pleased to see the work over the weekend
  • I was away from my computer for a day, but when I came back there was only one failing test
  • kudos all around
  • merged it to trunk today
  • that went smoothly
  • there was one hitch; I merged it in as a patch
  • missed a file that was added in trunk but didn't svn add it before the commit
  • otherwise no merge problems
  • glad we'd recently rebranched
  • that made things go smoother
  • plan to work on Pynie this week
  • open to suggestions as to what to work on next

Patrick:

  • working on nqp-rx this past week
  • it's going well
  • the regex engine does everything PGE did before, except for character classes and backtracking in subrules
  • I know how to implement that, but I haven't needed it yet
  • it's self-hosted, as far as grammar parsing goes
  • originally built it using PGE
  • builds itself since last Friday
  • no longer depends on PGE at all
  • worked on a self-hosted version of NQP over the weekend
  • putting together some core pieces
  • did quoting rules
  • capable enough to handle Perl 6 quoting rules
  • you can also limit it to simpler quotes
  • most people will do that
  • you can share the quoting parser using common backslash sequences quickly
  • very customizable
  • if you're creating your own language with new or different backslash sequences, you can write a new regex and add it trivially
  • lots of other small code generation
  • put together a new operator precedence parser
  • it's not intimately tied to the regex engine, like PGE's was
  • reusable
  • you can have multiple op precedence parsers within the same language
  • no trouble dealing with that
  • looks similar to the Perl 6 version
  • cleaned it up a bit over STD, especially over quotes
  • no roles and coercions in this version
  • just hashes
  • should be easier to explain to others
  • I hope Larry will consider adopting my version
  • I don't know if he's considering wider ideas that I haven't considered or encountered yet
  • I like what I've come up with so far
  • the new version of NQP is a reimplementation using the new parser
  • the new version will bootstrap
  • also exercises the new operator precedence parser and protoregexes
  • that'll help us switch Rakudo over to the new system sooner
  • easier to debug there than from Rakudo
  • hope to have a working version of NQP by Friday
  • hopefully even self-hosting by then
  • nqp-rx will work based on core Parrot
  • it requires no external libraries besides PAST
  • we could move that out of Parrot or reimplement it, but that's low on my priority list
  • posted to use.perl.org that outlines the Rakudo plans for the next month
  • we'll have several weeks of serious upheaval, tearing the existing grammar out of place and replacing it
  • very pleased with now nqp-rx is coming together
  • I hope it'll go quickly
  • Jonathan and I will work on it at the same time

Will:

  • working on Partcl
  • minor cleanup, trying to make sure it still works with blead Parrot

Nicholas:

  • I don't like UTF-16
  • Perl 5 should be able to read it big-endian and little-endian
  • Larry wrote the original code
  • I've fought several bugs in it
  • you get the benefit of larger sizes and variable length
  • but you have to deal with partial reads
  • I don't know if Rakudo will have to deal with it, but blah!

c:

  • fixing bugs
  • profiling
  • trying to optimize

Patrick:

  • Jonathan and I and other Rakudo hackers may need to lean on you for assistance
  • mostly Larry
  • lots of Parrot hackers who understand PCC and can fix bugs
  • we'll probably need resolution on spec issues regarding Captures and Parcels and the like
  • they're at the heart of what we're doing
  • we may get to blockers very quickly

Nicholas:

  • is Rakudo taking over from SMOP in pushing the spec?

Patrick:

  • we're pushing from different directions
  • I'm still interested in moving Partcl to the compiler toolkit
  • think it should move to the new one, not the old one

Will:

  • that's a good idea

Patrick:

  • once it's a little further, I'll schedule some time with you
  • discuss what's happening and how to migrate

Will:

  • I don't mind being the guinea pig
  • it'll give some speed wins

Patrick:

  • it'll enable more people to hack on it
  • if things work out well, a big part of your system will be written in NQP
  • switching it over to the old toolkit doesn't make sense now
  • I want to make sure the new system will handle Partcl

Larry:

  • all delegation objects, including arrays and hashes, get handled the same
  • placeholders may never be used in a hash composer
  • that makes map almost always work right
  • placeholders @_ and %_ were enabled only if other placeholders were used, but they now are usable standalone
  • make the signatures of p5 notation fall out more naturally
  • clarified that $_ behaves like a placeholder only if there are no other placeholders
  • clarified how if statements behave with those rules
  • clarified en passant type captures
  • clarified when ... should be a stub
  • documented that subs now default to my scope

Patrick:

  • that'll be a fun change

Larry:

  • I warned you several months ago
  • revised the notation of the :D type subset for the defined and undefined modifiers and pragmas for changing the defaults
  • lots of debugging
  • STD treated constraints as declarative
  • fixed them to catch undeclared variables
  • placeholder twigils now require an alphabetic character all the time
  • fixed viv to fix Perl 6 roundtripping
  • unbitrotted the Perl 5 emitter
  • still plan to replace gimme5 someday
  • infix operators now allowed to see the opp's precedence limiter as a contextual variable
  • added more information to the match tree for declarations
  • now have entries pointing into the pad and the declarand itself
  • forbade self-declared parameters in defaults, as their scopes were unclear
  • allow contextual sub declarations with sub &*foo
  • class declarations now allow ..., treated reasonably
  • fixed quasi-unquote parsing
  • split the Perl 5 grammar more
  • dups inside a multisig now treat the multis independently
  • switched to YAML::XS to work around Syck's roundtrip problems
  • cached the setting files in case I parsed multiple parses
  • didn't treat them as immutable
  • caused magical action at a distance
  • did a bunch of work on viv