Perl 6 Design Minutes for 05 September 2007

chromatic on 2007-09-08T05:48:58

The Perl 6 design team met by phone on 05 September 2007. Larry, Allison, Patrick, Jesse, Nicholas, and chromatic attended.

Nicholas:

  • talked to Flavio Glock at YAPC::Eu
  • he asked whether P5 consistently converts from int to float and string and such
  • we're not sure if it works reliably; Perl 6 needs it
  • he's at least asking the right questions in the right places
  • Perl 6 might have trouble with this, thanks to C89 at least
  • Aaron Crane has a Perl 5 module which lets you use each on arrays
  • I talked to Larry and Damian about this
  • I found a nice way to make each work on Perl 5 arrays
  • couldn't bribe Rafael to put it into 5.10, so maybe 5.12
  • what should make it in is state
  • there were two bugs in the original implementation though
  • one is that if you assigned the return value of a subroutine to a state variable, that sub gets called repeatedly
  • they're START blocks in Perl 6 right?

Larry:

  • yes

Nicholas:

  • I have it doing the right thing then
  • my $a = state $b = foo() also works
  • I believe I have it working the way the Perl 6 spec has it
  • I don't think Pugs does it right yet
  • it's only for scalar assignment though
  • Rafael likes the patch
  • Abigail is working on corner cases
  • this might get in for 5.10
  • the list assignment version is hard
  • it's not going to happen for 5.10
  • no guarantee the whole thing will go in, but it looks promising

Larry:

  • getting over my jetlag from Vienna
  • mostly thinking about compiling patterns
  • my cheater program splits the standard grammar rules into longest token parts and action parts
  • I need more to work on the spec
  • need a way of returning the DFA-able pattern
  • I can separately address the action from the prefix token now
  • if I had an implementation of a DFA over many alternatives, it could tell me which rule to call
  • I could configure that rule without having to reparse
  • a DFA can't do some sort of assertions, so there might be retroactive reparsing at the end of a token match
  • those are fairly infrequent
  • now I'm just trying to figure out the right semantics for interfacing to that matcher
  • talked some with Damian last week about regularizations to pattern matching syntax
  • not happy with the suppress-capture question mark on rules
  • ought to be the opposite of bang
  • if bang doesn't have any width, question mark shouldn't either
  • looking at other characters to slip in there
  • various other clunkinesses in there from when we had some metacharacters and not others
  • with the recent policy change that all punctuation is all potentially metacharacter, some notations are overkill
  • particuarly binding
  • looking for cleaner alternatives
  • we might get a notation out of that that lets us declare match variables
  • my variables scoped to a part of the match
  • also possible to put the binding out on the right, instead of to the left
  • especially when passing parameters to a closure
  • playing with a lot of different syntaxes
  • haven't really settled on one yet
  • lots of ways to go wrong with that
  • might restrict the colon-binding to setting pre-existing variables
  • corresponding with Wolfgang Laun who's been going through S02 and beyond
  • looking at them from a different angle
  • he's pointed out some of the infelicities in the design
  • I'm thinking about some of them
  • currently we distinguish between the of type and the as type
  • the as type isn't that useful anymore
  • if people really want to lie about the return type, maybe they can put their conversions on themselves
  • the long dot stuff is mostly historical; all there is is unspace
  • simplifications like that
  • also the kp6 folks are getting pretty close to having it bootstrapped in itself

Patrick:

  • I took this last week off
  • the week before that I spent a lot of time working on NQP
  • we added quite a few more things: for, looping
  • what's left is having variables within namespaces and handling return exceptions and various sorts of exceptions
  • running into places where the irregularities of Parrot's opcodes are getting in my way
  • grabbing the variable from a namespace takes a different type of parameter
  • have to rework POST a bit to deal with that

Jesse:

  • how much of that can get regularized in Parrot?

Patrick:

  • I have no strong suggestions for fixing it within Parrot at the moment
  • POST is just going to have to deal with it
  • it does add some complexity
  • I'm just going to implement something that works, and someone may have to come along later and clean it up
  • after that, NQP will be done
  • I can get back to Perl 6
  • lots of things are blocking on this one piece of getting namespaces to work
  • being able to run code in mod_parrot and use Parrot libraries will work after this

Allison:

  • finished the mod_perl 2 book
  • went straight onto Vienna
  • spent a good bit of time with Jonathan and helping people at the hackathon
  • checked in some of the work from that
  • some I still need to go over
  • Dakkar gave me a Perl 5 prototype of the next step for TGE
  • not just matching based on the type of the node, but full-featured matching based on node attributes and children
  • also gave me a Perl 5 prototype of doing the automatic recursion into the next level of the tree
  • need to translate that into PIR and integrate it into TGE
  • need to finish the object model
  • it's kinda frustrating
  • the old code is pretty messy
  • lots of cleanup there
  • also working on the PMC PDD
  • it really just needs one final thorough pass
  • then we can move it out of draft

c:

  • doing some minor cleanup on all of the PMCs
  • mostly just tidying
  • but I've deleted some old code
  • have three things to work on: HLL, GC, vtable lookup but blocking on PDD 15 there

Jesse:

  • some of the microgrants have been paid

Allison:

  • is it time to branch for PDD 15?

Patrick:

  • yes

c:

  • it wouldn't help me

Allison:

  • I'm spending a lot of time working around the old object model

Patrick:

  • I'm having to work around the old model and deal with the new
  • it might be nice to rip all of the bandages off
  • there'll be a great deal of hurt
  • sooner is better than later

Allison:

  • the more I look, the more I realize that we can't keep the old model around
  • it's just too badly broken

Patrick:

  • I could care less about the old object model
  • whatever gets the new one implemented quickest works for me
  • the tools I'm building will use the new one and only the new one

Allison:

  • unless I can keep the branch only about two weeks old, then keeping things up to date might be more work than not branching

c:

  • I'm less convinced of that
  • I haven't seen a lot of changes in the past six weeks that have touched object producers or consumers
  • shouldn't be as difficult to merge in that sense

Allison:

  • okay, I should be able to make a public branch on Monday
  • probably will use SVK to do the merges from trunk though

Nicholas:

  • p5p is still grumbling about dor and err
  • no one can work out why you like err, Larry

Larry:

  • it's a soundalike of or and it has to do with error recovery
  • where you go if you err
  • it's a prettier word than dor too

Nicholas:

  • that's a clearer version of "dor is dorky"
  • Rafael and I are keen to defend Rule #1, but we've not been clear why
  • I feel uneasy about doing things differently from Perl 6
  • the peanut gallery seems to prefer dor