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