Perl 6 Design Minutes for 10 October 2007

brian_d_foy on 2007-10-11T21:48:00

The Perl 6 design team met by phone on 10 October 2007. Larry, Allison, Jerry, Patrick, and chromatic attended.

Larry:

  • mostly glaring at various implementations of tagged DFA algorithms
  • I want something like that for my lexer
  • played with the Perl 5 bindings to TRE by the person who did the NFA paper
  • it's buggy
  • now I'm looking at the equivalent implementation under Haskell, which supposedly fixes these bugs
  • it's a little less accessible to someone without Haskell-fu
  • I'd love to have it if someone would hack a Pugs binding for it
  • might have to translate it to Perl 6 myself
  • it's possible that I might need to do that anyway
  • most of these things use a POSIX interface
  • it's not quite what I want
  • they're good at telling you which submatches matched where
  • they're not so efficient at telling you which branch the match took
  • you end up going back out and looking at the submatches
  • it already had that information when it matched the thing
  • in the long run, we'll end up writing it ourself
  • the tagged DFA knows which transition it makes when it's making it, but throws away the whichness in favor of the POSIX interface
  • it's very close to what we need to intermix the imperative and declarative worlds of pattern matching

c:

  • are you blocking on anything?

Larry:

  • if someone hacked the interface to TDFA in, I could play with it without having to translate it
  • it's a slowdown
  • but if we're going to end up with that algorithm in Perl 6 anyway, it's not really a block
  • more of a frustration
  • haven't done anything else that anyone's asked me to do

Jerry:

  • helping with the OO cleanup
  • there are about 25 failing tests remaining
  • we're really close
  • inspired by a question on #parrot this week
  • looking at the Warren Abstract Machine (PDF) which underlies most Prolog engines
  • I wonder if the Perl 6 regex machine alone is enough to implement that

Larry:

  • you can certainly play with the backtracking for that
  • you need something to do the unification for you

Allison:

  • Curtis Poe played with implementing Prolog in Perl 5

Larry:

  • there'll be enough primitives there to do it at one level or another
  • all you need is a Turing-complete language

Allison:

  • also working primarily on the object model
  • we went down from 2000 failing tests to 24 in the past week
  • we did find at least one GC bug
  • we decided to wait to merge the object branch until just after the next release
  • Will might want to do the release earlier
  • I'll leave that up to him
  • also working on the Events PDD, which is due next Monday
  • will finish that in between fixing tests on the PDD15 branch
  • we've only just started talking about the exceptions implementation
  • I know Jerry wants to wait to branch until after we roll the PDD15 branch in
  • we can wait on that
  • hopefully the changes for the Events PDD won't be too big there

Patrick:

  • the exceptions implementation doesn't seem too far off
  • mostly we're missing definitions of some of the standard exceptions

Jerry:

  • the exception hierarchy

Allison:

  • it's a mess

Jerry:

  • I have a feeling we'll change a lot of real_exception() calls to create_exception()

Allison:

  • we're using real_exception() in a lot of places we should be using something internal
  • that's because internal_exception() doesn't really work

Jerry:

  • that's more of a cleanup and refactoring

Patrick:

  • mostly worked on the new object model as well
  • didn't get to everything else I hoped to
  • they're still on deck
  • expect to get to them later this week
  • will finish up the TGE things for PDD15 tonight
  • hopefully that'll clear up some of the failing tests
  • then I'll be back to writing the AST PDD
  • then working on the AST refactor
  • the codebase is getting smaller, which I like

c:

  • also working on PDD 15
  • fixed some scary bugs
  • will work on the OrderedHash problem if there's a test case

Jerry:

  • I have one for you

c:

  • poked at Lua, but the code isn't clear enough for me to get good wins there
  • I broke it pretty badly, but hopefully it'll get better
  • no checkin there yet
  • also did some profiling, but inconclusive yet
  • it'll be easier to profile when languages/perl6 runs completely
  • I have some ideas

Allison:

  • we had a long discussion of alternate programming styles for PGE yesterday in #parrot
  • it's not quite OO and not quite procedural

A long discussion of continuations, coroutines, and ratchet followed.


No WAM!

Ovid on 2007-10-13T21:03:08

I used to like the Warren Abstract Machine, but eventually I realized that it suffers from a very common problem in logic and declarative languages: it's bag-oriented instead of set-oriented and is thus a flawed model forcing people to do grunt work to filter duplicates. This is a huge mistake. I don't (yet) know of a natural common language which avoids this, but if one is found, it's worth looking at.