The Perl 6 design team met by phone on 22 August 2007. Larry, Patrick, Jesse, Nicholas, and chromatic attended.
c:
- fixed several Parrot bugs
- we now have Tcl, Lua, and Perl 6 all which can work at the same time
- I want to make sure they stay working
Jesse:
- are you having fun in GC land?
c:
- I think a good refactoring is in order
- I despair of anyone understanding it well without that anyway
- so hopefully making it cleaner and not throwing away metadata will help find or fix the bugs
- my immediate goal is to fix any blockers that people run into
- also work in the HLL system for Parrot; that's the source of the Lua, Perl 6, Tcl bug
Patrick:
- I'm blocking on time
- it's been quite a week this past week
- just released Parrot 0.4.15
- just a few cleanups necessary
- NQP has come along extremely well
- it's nearing completion for its use as a tool in other compilers
- may be able to write some example applications in NQP probably within the next 24 hours
- we can interface to libraries such as the SDL bindings
- I already have the transformation for the abc language written in NQP
- NQP parses it
- it just needs a few extra pieces to compile or run
- that could happen within the next 24 to 48 hours as well
- then I'll start on Perl 6
- a side benefit is that I've had a good chance to readdress some of the Perl 6 blockers and solve them for NQP
- they're trivial now in Perl 6
- they're now part of the AST nodes
- lots of features will just start to work for Perl 6 once it moves to NQP
- Larry's work on the standard grammar has been extremely helpful
- NQP has followed it as much as possible
- that's helped find missing spots in the standard grammar
- Larry's revised it based on that feedback
- some of the tough things in the Perl 6 grammar are now easier there
Jesse:
- I get people asking how they can help with NQP
- can you break off a few chunks of 20 minutes or so for people to help?
Patrick:
- there's not much left with NQP
- with Perl 6, there are a few
- people who want to help need to look at what it would take to help
- Colin's driven a lot of the updates
- adding various updates and statements
- usually he'll say, "I want to add an operator"
- he wants one to look at to cargo-cult
- I've had to write one, then he goes from there and writes the others
- he's added most of the fundamental pieces to NQP
- I've done more architectural work and work on the compiler toolkit
- I'll make an effort to make list tasks on NQP, Perl 6, or abc
- another interesting task for a PIR hacker is to make the other SDL examples work with NQP
Larry:
- I wrote a little program last week which processes the standard grammar
- Pugs can process and run it
- it can parse rudimentary expressions
- it supports most of the constructs used in the standard grammar so far
- just hacked in a first whack at bindings
- let us produce an AST
- that's still a work in progress
- that flushed out a few more issues with the standard grammar
- takes about a minute for Pugs to compile the standard grammar after post-processing
- not exactly speedy
- the actual pattern matching it does right now isn't optimized
- parses everything to use
gather
and take
- lazy lists already give you basically continuations underneath
- this parser can have many different simultaneous backtracks held in reserve in a list
- for a minimal match, just read your lazy list in order
- to be greedy, reverse that list and read it in the opposite order
- seems to work out nicely
- conceptually pretty
- avoids throwing continuations directly at the reader of the code
- for a ratcheting grammar, it could be faster by getting rid of the
gather
/take
Nicholas:
- could someone else work on that particular pass?
Larry:
- someone else is helping me... rhr... Ryan Richter
- I'm concentrating on correctness now
- because each of these possibilities gets generated on the fly, each has to keep its own match object
Jesse:
- how memory intensive is that?
Larry:
- it depends on how many matches you have in the air simultaneously
- in theory, if it's lazy enough, "no more than you need"
- when it tries to be greedy when you didn't want it to be greedy, you use a lot of memory
- sweeping that under the carpet of laziness fixes that issue nicely
- that means I don't have to think about backtracking
- just attach the state to the right continuation going forward
- probably reinventing a packrat parser
- I figure out I need something and do it, then find out someone already has a name for it
- I don't know if this will ever be used for a real bootstrap, but it's definitely flushing a lot of issues out
- exactly what objects do we need
- we have current language, current continuation, match object...
- are they the same or different?
- exactly how many objects do we pass down through it
- also trying to do a better parsing of embedded sublanguages such as double-quoted variants
- there's a kludge for finding terminators
- I don't think that's very clean
- I think the grammar will clean up in a few places because of this
- don't know how much time I'll have, as we leave for Vienna on Saturday
Jesse:
- how much have you followed what Flavio's been doing as of late?
Larry:
- keeping half an eye on it
- they can pass parameters to methods in kp6 and are working on subroutines
- they seem to whack on it frequently
Jesse:
- I talked to Steve Peters
- he's had more time free up recently
c:
- I checked in a couple of patches and have a couple more to review from him
Patrick:
- STD.pm looks like a problem if you have a subroutine followed by a bare block
- it parses as if it's postcircumfix braces after the sub
Larry:
Patrick:
- the
<routine_def>
rule eats up the trailing whitespace
- in NQP, I created an
<afterws>
assertion that determines if the current position follows a memoized <?ws>
- the
<postop>
only goes if it's not after whitespace, that is, token postop { <!afterws> ... }
- it seemed to work pretty well
- that's an advantage of the tests that Colin's putting in
- putting in the explicit "did I just eat whitespace?" test works pretty well
Jesse:
- I presume we're off next week because of YAPC::EU
- we'll pick up the following week