Perl 6 Design Minutes for 15 August 2007

brian_d_foy on 2007-08-16T07:32:00

The Perl 6 design team met by phone on 15 August 2007. Larry, Damian, Allison, Patrick, Jesse, Nicholas, and chromatic attended. These are the minutes.

Larry:

  • I'm tolerable fair
  • spent most of my time this week writing an additional translation from the standard grammar to a version of Perl 6 without regular expressions
  • that can conceivably run on top of Pugs
  • conceptually, I think it might give us a high-level bootstrap

Nicholas:

  • why no regular expressions?

Larry:

  • none of the current ways of getting at regular expressions with Pugs actually interface well with Perl 6
  • if I put the semantics in with a Perl 6 engine emulating regex semantics, I'd naturally get the Perl 6 linkage correct
  • I expect it's going to run dog-slow

Nicholas:

  • it's run-once

Larry:

  • it has to run once every time I change the standard grammar
  • it's yet another pseudopod in our amoeba-like flooding algorithm for finding a bootstrap

Nicholas:

  • only one needs to work

Larry:

  • it's having the great benefit of helping me understand the underlying semantics
  • the rules engine
  • I now what the linkage needs to be to methods in a grammar
  • the instantiation of the grammar is the current parse
  • contains information about what it is parsing
  • there's always a first argument to every method
  • implicit in rules
  • if you call a method explicitly, you have to put it in
  • basically the current hypothesis; the current position within the string
  • everything works with nested closures
  • pretty much all just single-assignment binding
  • you have to do it that way
  • relying the fact that I can use lazy list processing to implement continuations

Nicholas:

  • you will need hypotheticals to do this
  • backtracking for example

Larry:

  • as long as you attach them to the right hypothesis, hopefully they'll end up in the right place eventually

Nicholas:

  • are you saving state explicitly, or are you using Perl 6 data structures?

Larry:

  • they're match objects
  • the next rule takes the previous match object
  • it generates oodles of match objects to do this

Nicholas:

  • if it doesn't need a Perl 6 rules engine or backtracking, it may be slow
  • but because it needs less, it doesn't rely on things working all the way

Larry:

  • lazy lists, indirect binding, closures
  • it looks like it's going to work out
  • I'm having the appropriate amount of fun

Damian:

  • my main issue this week is packing
  • critical problem is, as always, "How do you get through Heathrow?"
  • I've written everything but my Vienna keynote, but I've plotted that
  • may have some new suggestions for what can go into Perl 7
  • no discernable Perl 6 work this week
  • would you like me to change the P6 update with regard to angle-tilde-tilde?

Larry:

  • not sure yet

Damian:

  • still tinkering in my head about the documentation stuff
  • I'll work on that on one or several planes

c:

  • finished my third Linux Magazine article
  • should get people up to the point of being able to write tests in PIR
  • have heard that people liked the first article and have started showing up to #parrot
  • reading garbage collection papers
  • have some ideas on generational systems

Allison:

  • working on the mod_perl 2 book this week
  • worked out a deal with O'Reilly which should let me work on Parrot half-time for the next year
  • full-time between now and December
  • half-time from January through March
  • March through June a quarter time

Patrick:

  • made the AST handle named parameters
  • NQP can now make calls using named parameters
  • NQP now handles subroutine and method declarations
  • now I just need to make them handle named parameters
  • then NQP will basically be done
  • then I can redo the Perl 6 compiler and a couple of others using NQP instead of PIR
  • we'll see how well that works
  • in doing NQP on NQP...
  • it's not self-hosting, but it uses the same model
  • ... it compiles faster than the Perl 6 model
  • that's kind of surprising but kind of not

c:

  • surprising?

Patrick:

  • we avoid one TGE step by building the AST as we parse

Allison:

  • that's a good optimization

Nicholas:

  • will NQP end up being self-hosting?

Patrick:

  • it could
  • it might not
  • I'm writing it twice actually
  • I write it once in the comments in NQP
  • then I write it in PIR
  • someone who wanted to make it self-hosting could
  • somebody looking at the PIR could just look at the comment and see what it's doing

Nicholas:

  • at some point you could automate that compiler rewriting
  • that's a little scary

Patrick:

  • we've talked about that
  • we could keep the PIR code in the archive

c:

  • how's the testing and documentation?

Patrick:

  • Colin Kuskie has been adding tests as I add features
  • he'll be able to write the tests for subroutines and subroutine calls
  • we're not falling behind on the testing for that
  • essentially the documentation for NQP is Perl 6
  • start with the README and see what pieces you need
  • then ask me questions and I'll give you answers