The Perl 6 design team met by phone on 21 February 2007. Larry, Damian, Allison, Patrick, Jesse, and chromatic attended. These are the minutes.
Larry:
- cooking right along
- mostly hacking more on the grammar
- it's largely done
- doing some cleanup on metaoperator precedence
- some have to inherit precedence from their internal operators
- others force precedence
- the only remaining thing is working out how various quote sublanguages build themselves and parse their text
- building it such that the mechanism is derivable in other grammars
- sort of a two-dimensional derivability problem
- kinda tricky
- figuring out exactly how grammar modifications fit into the user space when they say "I want to use such and such a language"
- replace the current language?
- overlay the new language?
- replace the rest of this scope?
- compilation unit?
- what is a scope in a different language anyway?
- lots of interesting wrinkles
- had a Perl Monks chat about timely destruction and decent destruction control flow
- also tweaking various Synopses
- simplified the zip and cross operators
- now just a
Z
and an X
infix
- the old
x
which was a string operator is now a metaoperator
- the two main list infix operators are
Z
and X
- the yen operator goes away
- don't remember if I did the MMD rethink before or after next week
- looked at last autumn's voting MMD algorithm
- it's a bit too complicated
- I recast the whole thing in terms of a topologically sorted list
- sorted in partial ordering of betterness
- demoted the single semicolon to a conjectural syntax
- reserved for if we decide we need it
- also changed the meaning to insert this method at multiple places in the list
- it's easier for me to understand what's going on there
- we'll explain to users that it'll look for the best match
- if you don't give sufficient hints and it's ambiguous, it'll fail
Damian:
- in my experience, they're like sausages
- people don't want to know how they work as long as they taste right in the end
- it is nice to have static analysis to see what gets covered
Larry:
- we can warn about certain kinds of ambiguity at check time
- assuming that no one adds more variants at runtime
Damian:
- I provided a feature to grab all of the definitions and possible combinations and warn about the ambiguous cases
- it's incredibly handy to run when you start getting ambiguities
Larry:
- also simplified the grammar
- had some special syntax for abstracting symbols
- turned those into regular named captures
Damian:
- spent most of my time working on the Perl 6 POD parser
- have about 2500 tests
- they've found a few things that needed rethinks and redesigns
- have one more of those to go
- then I think it's releasable
- one of the rules in S26 said that a formatting code (
B<> or C<>
) terminates at the end of the matching angle bracket or the end of the surrounding block construct
- that means that you couldn't comment out sections within a formatting code without changing the meaning
- that meant I had to rethink the parser to make it work
- also sped up the parser a bit
- with any luck, it'll be out in a couple of days
Patrick:
- what's the complexity of parsing the POD?
- is it tough, or will our tools handle it well?
- plenty of people on #parrot have talked about writing a parser with our tools for it
Damian:
- that'd be wonderful
- my parser uses Perl 5
- the design is such that line-by-line parsing is pretty easy
- the m//g flag suffices to loop around
- I've effectively gone down a level on doing a parser's state machine
- the only complexity that I foresee is the
allow
feature
- that changes how something subsequently parses
- if I say
allow
on a block, it changes how that block and inner blocks may parse
Larry:
- similar to how quote constructs modify things
Damian:
- I'm struggling with finding a clean and efficient way of allowing that
- changes how code block, code formatting, and verbatim rules parse
- could lexically change what those rules did
- might be easier just to hardcode all of the formatting codes available with on-off switches that the parser allows down
- could be a very good use of Larry's contextual variables
- that's the only complexity that I see in making it work correctly
- the structure of a general block is introducer, name of the block, options, content, terminator
- you do have to extract information from the options before you get to the content
- that can change the structure of what comes back
- that's not difficult to do
- you can do code within a regular expression
- that allowness changes how the parser works
- but I don't see it as being difficult to change to a grammatical parser
Patrick:
- that helps me know what to advise people
- lots of us are eagerly looking forward to a release
Damian:
- not sure how useful it will be as a template
- it uses a very different parsing strategy
- I did that to parse large documents (that is, S26) without taking a big performance hit
- P::RD and its potentially exponential explosion of cost didn't seem right
- my current version is linear
Larry:
- can other parsers target the test suite?
Damian:
- not really
- "Here's the input and here's the data structure to create"
- the data structure is YAML
- I don't care about its structure, just that it has certain features
- maybe it's reasonably transferrable
- depending on the data structures pulled out, they may have to massage it a bit
- it's pretty close to data-structure agnostic
- I'm happy to make sure that it is, if necessary
Patrick:
- working on the Parrot release off and on today
- lots of little last-minute things
- release may happen this evening at the latest
- seems to be going well
- have some non-P6 things to work on until this weekend
- my target for next week is getting
for
loops and END
blocks
Jesse:
- do you have a bunch of unpushed changes?
Patrick:
- public Subversion is the current state of my code
- I have some non-public throwaways
Jesse:
- Jerry has mentioned at least that he'd like to see your throwaways
Patrick:
- we could make a throwaways directory
- or branches
Jesse:
c:
Patrick:
- I can do that
- once I get those bits in, sanity passes
- then it's wide open
- I can import tests from Pugs, the ones I think are fixable
- then point people to fix them
Allison:
- will you have a small set of things by the Amsterdam Hackathon?
Patrick:
- the first week of March?
- can't promise that
- but I can try to have some handoff things
- that is one of my targets
- I'll be close by then
Allison:
- technically I was on vacation last week
- the biggest thing was a bug-squashing session this weekend
- did a large bit of work before everyone else was there
- I was ten hours off
- closed quite a few tickets
- also worked on the IO PDD
- plan to review tewk's SMOP port to PMC C code
- haven't seen it yet
- it's a good start
- that's it for me
c:
- squashed a lot of bugs
- fixed Pheme, but ran into a weird question about variadic subs and multis
- I'll show a code example
- might be a good Perl 6 question, but maybe just a Parrot question
- also made good progress wrapping SVs in PMCs for Ppwnie
- ran into a different multi-sub bug with embedded progress
- nice that the blocker there was Parrot, not Ppwnie though
Jesse:
- talking to people at TPF about grant stuff
- approached Bill about a microgrant plan six months ago
- some money donated to Perl 6 a couple of years ago is still there
- convinced Bill of doing five to ten $500 - 1000 grants for small projects
- some Parrot, some Pugs
- he'll start to push on this
- hopefully we'll see this happen in the near future
- separate from the regular grant process
Patrick:
- there are several Perl 6 things that might apply in the near future