Perl 6 Design Minutes for 11 November 2009

chromatic on 2009-11-16T21:16:39

The Perl 6 design team met by phone on 11 November 2009. Larry, Allison, Patrick, Jerry, and chromatic attended.

Larry:

  • named all of the funny-looking blocks "phasers"
  • met with wide-spread approval, or at least humor
  • no change as to the language itself besides nomenclature
  • nice to have a handle to think of them as one thing
  • decided there's no name for the concept used by our lexically-scoped control exceptions
  • those are now lexotic
  • something that'll unwind the stack to a lexically-determined destination
  • noticed the old :panic modifier in S05
  • decided it was impossible to implement correctly
  • very little demand for it
  • couldn't think of a good use for it anyway
  • I removed it
  • the name interpolator, ::(), had some strange lookup rules
  • now the runtime lookup in that interpolation is identical to what it would be if the name had been there at compile time
  • clarified that empty blocks and non-matching conditionals return Nil, as suspected
  • documented that clearly now
  • STD now uses something like Patrick's O() assertion form instead of the wrong coercion semantics
  • Patrick also noticed that if you declare a module with a block, it did not disallow semicolon declaration
  • fixed that
  • found three places in the test suite where people had used semicolon syntax as forward declarations
  • fixed those too
  • decided that the STD grammar class needed to split into two
  • one is the mainline Perl 6 class
  • the other is the base class from which everything else derives
  • you don't want all of the rules of the mainline code in that one
  • started to split those
  • probably could use more reformatting for readability
  • thinking about how to do a real parallel NFA
  • reading up on the new Go language

Allison:

  • another small tasks week
  • reviewing patches and answering design questions
  • have a long list of things to do
  • put that list on the Parrot wiki, which has helped
  • Julian submitted a patch for one of those things
  • would like to get some time to work on Pynie
  • have three massive assignments due at the end of next week, so may not be able to get back to Pynie after that

Patrick:

  • the weeks are all blending together so well....
  • Jonathan noticed that on GitHub you can get a list of commits on a project's page
  • Rakudo commits yesterday exceeded a page
  • we're making excellent progress on Rakudo with the new grammar
  • wrote a post on use.perl.org about that last night
  • we're on track with our plan we published a couple of weeks ago
  • made the sanity tests pass sufficiently that we can run the test suite
  • now it's just a matter of re-enabling features to pass the test suite
  • most of those features are written in Perl 6
  • either because of the core Setting or because we went to rewrite them in Perl 6
  • should get major swaths of features working then
  • we'll see how that goes over the next couple of weeks
  • expect that we'll land the new branch sometime in December
  • we'll pass as many tests then as we did in the October release
  • the new version fixes many features we couldn't implement in the previous version
  • lazy lists and constant handling, for example
  • this week, I'll bring NQP into the Parrot repo
  • lots of people want to use it more easily
  • having Parrot compile and install it helps
  • will continue adding features to Rakudo
  • will guide others to add new features to Rakudo
  • it's at the point where lots of other people can do that
  • would still like to write a tutorial on how to write a compiler with NQP
  • it's probably worth waiting a week on Pynie to take advantage of that
  • figured out why NQP-rx code generation was slow
  • UTF-8 bit us again
  • took care of that
  • compilation time from actions.pm went from 108 seconds to 15 on Jonathan's machine
  • about a factor of ten speedup in compilation time

Allison:

  • some parts of Pynie need replacing

Patrick:

  • it's worth it if you want to use protoregexes or the new operator precedence parser
  • they'll give you speed too
  • will use Punie (Perl 1) as the example
  • it has a lot of the features you want in a language

c:

  • fixed a few bugs
  • talking design
  • talking development process and strategy

Patrick:

  • on the semicolon form of module declarators
  • the only model I can think of which works cleanly is that you can put anything you want prior to that declarator
  • once you write one, you can't write another one for the rest of the file
  • that's how I read it
  • originally, the semicolon form had to come first
  • that caused problems with importing things to declare
  • if you allow anything other than module declaration, that's a special case
  • it's easier to say that you get one semicolon form per file, and that's it

Larry:

  • as the errors show in the test suite, people will use the semicolon form out of habit
  • whatever they mean by it will be wrong
  • they use it as a forward declaration in the tests
  • that's neither of these interpretations

Patrick:

  • maybe the semicolon form is wrong
  • maybe we need a brace form which lets you slurp the rest of the file

Jerry:

  • some kind of EOF heredoc?

Larry:

  • if we do use it, I want it close to the top of the file
  • as soon as you put large blocks of things in front of it, you get into trouble
  • it's not obvious which package it is then
  • maybe there's some way of separating the name of the file from the declaration of its dependencies
  • let me think about that more

Patrick:

  • it's not pressing or urgent
  • Rakudo will continue to do what it does

Larry:

  • that hurts the tests, which assumed some other behavior
  • neither STD nor Rakudo caught these errors until I fixed STD
  • I like how STD handles this behavior better now