The Perl 6 design team met by phone on 14 February 2007. Larry, Damian, Allison, Patrick, Nicholas, and chromatic attended. These are the notes.
Larry:
- more of the same from last week
- trying to think through what the Perl 6 grammar will eventually look like
- almost all of the recent Synopses changes came from that
- apart from the fact that I can't actually test it, it seems to be shaping up rather nicely
- eventually I'll need more feedback and eyeballs on it
- completely bonkers or just a little bonkers?
Damian:
- I've liked the diffs that I've seen
- you'll get quick feedback if I don't
Larry:
- some of those things are marginally related
- you stare at quote declarators for a while and you see that they're the same as macros
- I'm looking at all of the places that I can simplify now
Patrick:
- I went "yay" when I saw that
c:
- be careful; down that road lies McCarthy, 1958
Larry:
- we have a ways to go
- we put a bunch of stuff in the basket
- now we're seeing what we can take out but still solve the problem at hand
Damian:
- working on getting the Perl 6 POD parser shippable
- very close to that now
- currently augmenting the test suite to cover everything in S26
- then I'll ship it and a working POD 6 to XHTML translator
- as well as a text translator
- and a module to let you write POD 6 in Perl 5 programs
- expect that by the middle of next week
- taking up my time this week
- getting performance pretty reasonable
- been watching Larry's Synopsis diffs very happily
- very happy with the minor change of making the short form of heredoc
Larry:
- if I can't recognize
:t
, no one else will recognize it
Damian:
- it's a very good change
- sometimes those little ones are the very important ones
- they can be the ones that happen all the time
- putting together my various tours for the year
- preparing for a talk early next month in Sydney
- the Australian copyright collection agency
Patrick:
- spent this past weekend sick
- looked over Larry's grammar
- find it interesting and intriguing
- I can't wait for someone to actually parse it!
- oh wait, that's me
- I'm optimistic about it
- may be able to come up with something quickly
Larry:
- trying to keep in mind the bootstrap as I go
Patrick:
- it helps me with some of the other features it'll need
- if I see anything that offends me, you'll hear about it quickly
- I have to deal with it earlier than other people will
- otherwise, just watching the various changes
- I like what I've seen so far
- hope to get lots of implementation done
- I'll be around all day on Bug Day on Saturday
- should be able to do the Parrot monthly release on Monday or Tuesday
- do have reference working
- much more work than I originally anticipated
- next thing is compilation units and
END
blocks
- I know how to do them
- I just need a day to come up with a good design
- it's not an all-at-once thing either
- can check it in incrementally without breaking things
c:
- came up with an interesting approach to running Perl 5 on Parrot
- I sent in a code example
- curious to see what Larry and Nicholas think
Larry:
- what's the story with XS?
c:
- I'm punting now on that
- we do run things through
xsubpp
- we do have some flexibility with redefining macros
Larry:
- even 90% is better than a kick in the head
Nicholas:
- this approach is part of what I planned to do with Ponie
- you're starting from a different place than I was
- there are a lot of complex opcodes...
- but it doesn't require modifying the Perl core
Larry:
Damian:
- the question keeps coming up
- if we have a C to Parrot compiler, in what way doesn't that solve the problems?
- apart from that being the problem
Nicholas:
- in the moment, Parrot is written in C
- you can link them together
- having C running alongside Parrot, the trick is getting them both not to realize that that's what's going on
Damian:
- sounds like you may need to try some of the hairier opcodes
- if those seem feasable, that says something
c:
- I can look into that
- may try some dynpmcs to solve the SV problems
- right now
print
assumes that it only gets SVs with POK
- that doesn't help if you pass an array
- took about an hour and a half
- I wouldn't have done it if I thought it were more complex
Allison:
- sounds like it's worth more exploration
Damian:
- maybe with input from Nicholas as to which alleys to walk down
c:
Damian:
Nicholas:
- even the
add
op isn't that simple
- some magic in there
- you even hit polymorphism on
SvTYPE
c:
- was thinking about making the PMC wrapper code do magic that way
- makes things easier
- may not support ties and overloading yet
- although putting that magic in the PMC vtable methods might simplify it...
Allison:
- put out an Objects PDD revision
- particle's reviewing it
- pretty solid conceptual update there
- did the refactor of
HLLCompiler
that Pheme needed
- you can delete stages from the tree transformations
- just need an extra subroutine to make adds work
- Pheme needed one bit to override the OST grammar
Larry:
- as I'm doing this grammar, I keep finding that I want to have context variables for rules
- the only way I can declare them now is by putting them in the singature as an optional argument that I just don't pass
- seems kinda kludgey
- should there be a way of declaring variables for a rule or regex or token
- or should all the name components of a particular match be contextual?
- you're parsing and find a scope declarator
- you might parse another declaration which wants to know its scope
- you may have to pass that down another few levels though, so a context variable might be nicer
Damian:
- have you thought about what kind of syntax you would like for that?
Larry:
- the best syntax is no syntax
- run up the dynamic stack and look for a match
- treat all of the named match variables as potentially contextual, you get that for free
Patrick:
- we ran into something similar in TGE
- a node in the match tree doesn't know its own name
- "I want to know something that only my parent knows"
- sounds like the same question
Larry:
- using
caller()
to find your own identity in Perl 5
Patrick:
- we want to match all of the statement nodes
- but none of them know that they are statement nodes
- maybe there's a generalized solution
Larry:
- it's on the order of attribute-grammarish
- things propagating down and up the tree
Patrick:
- not sure that we're looking exactly for contextual variables
- but I get the same positive as I did when I saw captures
Larry:
- trying to make this look as declarative as possible
- even if some things are procedural
- context declarations are procedural: run up the stack
Allison:
- inherited attributes, maybe
Damian:
- if you're going to use the existing components of a higher-level rule
- you start creating difficulties in the sense that you have to design your entire grammar so that names don't clash
Allison:
- I don't think you'd want it on every variable through the system
- "this variable is special; it propagates"
- you don't want every one propagating through the tree
Larry:
- we're doing that through the rule parameters right now
- I'll keep thinking about that
- I'm happy to stick with the parameter approach for now
- okay, I'm not, but I'm less unhappy with that than installing a kludge
c:
- how much of this information escapes the rule?
- reminds me of the implicit environment passed around in Scheme and Lisp