Perl 6 Design Minutes for 04 March 2009

chromatic on 2009-03-06T20:45:13

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:

  • why?

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:

  • it looks really good

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:

  • that's positive, right?

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:

  • basically avoiding a SCO

Allison:

  • yes

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:

  • how about $<bar><*>?

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