The Perl 6 design team met by phone on 04 March 2009. Larry, Allison, Patrick, Jerry, Nicholas, and chromatic attended.
Larry:
- still in my manic phase here
- fixed a bunch of bugs in STD
- placeholder variables now declare their corresponding variables
- assumes when it sees a function name with the sigil that it doens't have to look it up
- postdeclaration of a function now looks in the correct pad
- the same name might occur in different pads, so it might mean different things in different places
- you have to do the patchup starting in the correct lexical scope
- put in a nice error message when someone tries to index the
-1
element of an array
- the parsing on a file is now localized better
- can do multiple parses without information leaking from one parse to the next
- redid the number matching rule
- we can theoretically reuse that for parsing numbers in converting strings to numeric values at runtime
- as you extend your grammar with different kinds of numeric literals, you can reuse that
- the builtins should be able to do rational and complex numbers
- can parse some of the compile-time variables specified
- you can give them meaning, such as the current line number
- fixed a bug in
__END__
where it tried to parse the POD/data section
- killed off
is also
and is instead
- now there are scoped declarators:
augment
and supersede
Jerry:
Larry:
- they're not declaring a new thing in the scope
- attaching to something that already exists
- not really a declaration at all in that sense
- the traits had to go out and change the meaning of the name retroactively
- you can throw declaration names into the symbol table
- but if you hit
is also
, you had to undo that to reuse a name that's already out there
- they wanted to be scoped declarators instead
- needed to be able to write some of our multimethods more generically than they were by default
- when referring to other multimethods of the same name
- needed to do that by the semantics of the caller's scope
- we added a primitive called
lift
- it's a statement prefix, like
gather
- slightly genericizes that statement
- uses the semantics of the caller to handle the operators
- took out all mention of the
TOP
macro
- now talks about
.parse
and .parsefile
on grammars
- you can't use a grammar on the right side of a smart match
- it's treated as a type name
- refactored the definition of
capture
and match
- instead of magical semantics in
Item
context, now it's invariant that a match in Item
context is just itself
- result objects are no longer a magical part of a
Match
object
- passed back through the named null-string key
- can still refer to it with
$()
but it comes through a different mechanism
- not confused with positional arguments
- invocant always considered the first positional argument of a capture
- marked with a colon, if anybody cares
- this will simplify semantics in many places
Patrick:
- in shock over the changes to the spec in the past week, but we'll deal with it
- most of it will be the
Item
stuff
- it needs to happen though
- big news is the first independent release of Rakudo last Thursday
- release #14, codename Vienna
- feedback is that it works great
- it's accumulated a lot of changes through February to the build system
- since the release, fixed some longstanding parser headaches in Rakudo
- most notably the handling of
if
, unless
, and while
- added the
Q
quoting operator and some of its variants
- fixed up
is export
handling for code written in the core Setting
- we can use it there to export into the correct place in programs
- needs a little work, but the basics seem to work
- planning and scoping how to convert more builtins to Perl 6 in the core
Setting
- replied to an article about converting HOP's RPN calculator to Perl 6
- wrote my own version of the converter
- Andy Lester and I have worked on redesigning rakudo.org
- inviting other people to contribute
Allison:
Patrick:
- I'm inviting others to contribute
- fixed a couple of minor Parrot bugs
- putting together a guide for people who want to submit patches now that we've switched over to Git
- Github's presentation of the patch queue can be difficult to work with as a free-for-all
- we're putting together some strict guidelines on that
- blocking on how quickly I can acquire Git knowledge
Allison:
- spent most of my week on OSCON planning
- that's almost wrapped up
- worked a lot on bugfixing and ticket closing
- that'll be my focus for the rest of the week
- working on Debian and Ubuntu packaging
- no real new development
- just making sure we get things as clean as possible before the release
Nicholas:
- people in Vienna seem to be chuffed about the release name
Allison:
Patrick:
- whether it's positive or not, there's little I can do now
- the feedback about the release names has been uniformly positive
- "Hey, that's great!"
- "How do I get my group in the list?"
- that was the point
- Andy Lester gets credit for that idea
- thinking lately that I'd like to move the specs and tests out of the pugscode repo
- or change the name of the repository
- seems to confuse people that the tests and specs are in the Pugs repository, but they probably don't want to use Pugs as the primary implementation
- I've already claimed the Perl 6 account on Github
Jerry:
- reducing confusion is a good idea
- but until the confusion is reduced on how to submit a patch to Rakudo, this may not be the time
Patrick:
- I expect that confusion to be gone within a week
- don't think that's a difficult problem to solve
- it'd be different from Rakudo
- you'd get a commit bit for the spectests by asking for it
Allison:
- maybe talk to Audrey and the other implementors
- see if you can get a consensus
Patrick:
- I don't want to do anything by fiat
- that might argue for merely changing the canonical name of the repository
Nicholas:
- what's the practicality of extracting version history from the SVN history when importing to Github?
Patrick:
- it's easy
- we did that with Rakudo
- Jesse prototyped it in 15 minutes and sent me instructions
Jerry:
- might be good to have tutorials and sessions on contributing to Rakudo
- when thinking about how to make our users smart enough to deal with SVN for Parrot and Git for Rakudo
Patrick:
- my talk this year is "Hacking Rakudo"
- it's not "Status of Rakudo" anymore
- the nuts and bolts of becoming a Rakudo contributor
- at Oslo, Jonathan is talking about Perl 6 and Rakudo Today
- we'll put a little Git tutorial in there
- I have 100 minutes for that talk
Larry:
- that all sounds fine to me
- a go-slow, two-step process is probably best
- change the name first, then move over to Git
- that sounds fine
Patrick:
- I'll discuss these ideas now on p6c
- what should our policy be for contributor agreements and commit bits?
Allison:
- TPF's perspective is that it's valuable to continue requiring a contributor agreement for a commit bit
- that policy is important for the future
Patrick:
- is there a summary of why that's important?
Allison:
- this makes it safer for companies like IBM to use Rakudo in production environments
Patrick:
Allison:
Patrick:
- we'll probably continue the Parrot-style policy
- who gets those CLAs when they get sent in now?
Allison:
- I've been collecting them
- may eventually hand it off to Jim Brandt
Patrick:
- I agree with the
Item
changes, but there's a bit of a conundrum for NQP
- we used
$(...)
to get the Result
object out
- any suggestions?
Larry:
- it's just the name of the objects inside
- need to change that to a method call or something explicitly the null key
- or we could make it respond to function
.()
Patrick:
- that sounds fine to me
- does
$(...)
have any specific meaning we need to preserve now?
Larry:
- only the form with bare parens remaps to the null key
Patrick:
- could we say that this is a special form which translates to a method call?
- I'm not arguing strongly for that
- I don't like the inconsistency
Larry:
- it's often enough you want the value that it should be short and sweet
Patrick:
- I can support an older version in NQP
- it's not tied so directly to Perl 6
- just need to know what the new syntax should be
Larry:
- there needs to be some productive postfix syntax
- whether that looks like a subroutine invocation or a method call... still need to figure that out
- right now, a hash subscript for
''
is spec'd to work
Patrick:
- that'd be
${''}
, which combined with a match object such as $<bar>
makes it $<bar>{''}
?
- that's an ugly pill
Larry:
- a null subscript in angle brackets
- comes up to a null list, but if we forced it...
Patrick:
- but it gets the whole list
Larry:
- nevermind that idea then
- need to think about
$()
some more
Patrick:
Larry:
- that ought to mean the star key
- instead of using the null key every where, we'll use the star key
- that might be a good idea
Patrick:
- I don't need an immediate answer
- it'd be nice to solve this before Parrot 1.0