Perl 6 Design Team Minutes for 07 February 2007

chromatic on 2007-02-12T07:53:54

The Perl 6 Design team met via phone on 07 February 2007. Larry, Damian, Allison, Jesse, Nicholas, and chromatic attended. These are the notes.

Larry:

  • working on one thing
  • a standard grammar for Perl 6, written in Perl 6
  • not in a subset of Perl 6
  • but what I want the eventual grammar to look like
  • the real thing
  • give people who are trying to bootstrap a target to aim for
  • I have almost 1500 lines
  • it's a good majority of the syntax we have already
  • still a few things that I need to whack into it and think through
  • efficient dispatch of created-on-the-fly sublanguage parsers
  • every different quote modifier basically creates a different language
  • we don't want that leaking up into the higher layers such that switching to a different quote type means that you have to recalculate the entire grammar
  • that would be slow!

c:

  • did you benchmark that?

Larry:

  • it doesn't even parse yet
  • hopefully we can get it there in the next week or two
  • then we can think about running it
  • have not thought about leaving anything out for the sake of the bootstrap version
  • intended to be full Perl 6

Allison:

  • it has features that don't exist in an implementation?

Larry:

  • a couple of things
  • none of the rule engines do longest token multi-dispatch to rules
  • I am attempting to order the rules such that ordered dispatch will probably parse
  • it's a subset of programs that will parse correctly
  • we can get a long way with that
  • that little sop helps to bootstrap
  • it's also pure to the extent possible
  • no action statements
  • null actions on matches
  • there's a comment on each to mark that stub
  • it's useful to verify that something parses as Perl 6
  • or you can pre-parse it and insert actions into it
  • hope that will allow all of the different engine parsers to work from the same syntax
  • it's a lot of fun
  • also a lot of hard thinking
  • trying to get heredocs the way they ought to be is an interesting challenge
  • one-pass parsing with whitespace dwimmery is tricky
  • also did a little work on the syntax highlighting for Vim for Perl 6

Damian:

  • excellent work!
  • it's a huge project in itself
  • I'm re-evaluating the last few diffs to the Synopses
  • so that's where they've come from!

Larry:

  • most of my changes in the last month or so have been toward that end

Damian:

  • back from our first major holiday in the past four years
  • dealing with some work in Australia
  • plan to re-read the entire Synopses in prose form then
  • expect some feedback on them at some point
  • otherwise gearing up for the year ahead
  • sending out feelers for work contracts
  • confirmed to go to YAPC::Europe and YAPC::NA
  • need to gather some work around those events

c:

  • did some work on a PBC to C mechanism for Parrot
  • you can take perl6.pbc and make it into an executable that depends on libparrot

Damian:

  • what's the size?

c:

  • it's a couple of kilobytes larger than the bytecode... about 3k, so far
  • it's a small program

Damian:

  • how big is perl6.pbc?

c:

  • it's a bit over 300kb, not bad
  • that's not the whole thing, but it's pretty good and it could get smaller

Allison:

  • how big is libparrot.so?

c:

  • with debugging symbols and no optimizations, 1.2 megabytes
  • the whole thing could be perhaps 2 megabytes right now, easily
  • I can imagine better optimizations too

Nicholas:

  • can you compress it?

c:

  • the bytecode? it should compress pretty well
  • it's a static array right now, so it's in the data segment and should be shareable

Nicholas:

  • I know a bit about zlib

c:

  • I can send you the code
  • will try rewriting it in Parrot
  • I'm crazy that way

Nicholas:

  • tracked down the last -DMAD failure in blead
  • asked Larry about it
  • sort of stuck on that
  • trying to get 5.8.9 shipped
  • be nice to get that fixed; we should be able to smoke it and identify any regressions
  • because MAD keeps all the whitespace, it crams whitespace and comment lines together
  • if you do #line 1 and then # perl -options, it triggers the options
  • but MAD doesn't
  • there are a couple of regressions related to that
  • wonder if I can fix that

Larry:

  • I need to dig into it and see
  • that sounds like a good theory
  • it tries to attach the whitespace to the end of the line of the previous thing, then attach subsequent whitespace to the following thing
  • maybe it doesn't always do that
  • line-ending comments attach to the previous thing
  • block comments attach to the next thing

Nicholas:

  • maybe I should dump the XML from the program

Larry:

  • did you send a test case?

Nicholas:

  • yes, a four liner

Allison:

  • ran into Sam Vilain at Kiwi FOO
  • spent a couple of days hacking in Auckland after that
  • hacked up two prototype metamodels
  • the first was horribly convoluted
  • we started over and that one turned out simple and easy
  • quite happy with that
  • almost have the Objects PDD first draft ready to check in
  • worked on it for several weeks
  • that was the last bit I needed to make it usable
  • also have submitted Artistic 2.0 to OSI for approval
  • they wanted some formal documentation for that
  • the process seems to be fairly simple
  • just takes a little time

Nicholas:

  • any feedback on the trademark of Perl?

Allison:

  • it's finished!
  • we're the official proud registers of a Perl trademark on the onion logo
  • we're registering in Europe, Japan, and Canada now

Nicholas:

  • Damian, is there anything left to do on POD 6?

Damian:

  • finishing the documentation of the parser I wrote in Perl 5
  • it's on my list
  • it should be higher in priority
  • now it will be

Allison:

  • Larry, does your Perl 6 grammar also have a POD parser?

Larry:

  • it does not yet parse the internals of POD
  • it only parses the begin to end into POD blocks

Allison:

  • it treats them as comments?

Larry:

  • it does
  • the matching start and end also means I can ignore the nesting aspects

Damian:

  • does it handle the abbreviated forms?
  • =for and =keyword?

Larry:

  • those guys are standalone
  • it ignores those, I think
  • I'm waiting to see what your POD parser looks like in Perl 5

Damian:

  • mine's deliberately not grammar-based
  • most of the complications deal with unclosed nested constructs without falling over

Nicholas:

  • if you have a Perl 6 program with misnested POD, what does Perl 6 do?
  • will it realize a nesting problem?

Larry:

  • that's subject to the definition of POD
  • right now it handles it fine
  • the grammar looks for the corresponding end identifier
  • it just needs the outer one to match

Damian:

  • mine closes on the outer match and signals a misnesting error

Larry:

  • if you want to thread something through, use similarly named chunks

Damian:

  • I'm trying to extract the entire structure of the POD
  • all Larry needs to do is find the end point

Larry:

  • I do have a comment saying that we can't do the $= trick yet