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:
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:
c:
- it's a couple of kilobytes larger than the bytecode... about 3k, so far
- it's a small program
Damian:
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:
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:
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:
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:
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