Perl 6 Design Meeting Notes for 21 February 2007

davorg on 2007-02-27T10:56:00

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:

  • it might help people

c:

  • I'd like to see that too

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