The Perl 6 design team met by phone on 29 July 2009. Larry, Allison, Patrick, Nicholas, and chromatic attended.
Larry:
- decided to reserve semicolon in regexp as a non-metacharacter
- it's a sequence point
- it's either quoted or misparsed and have run off the end of the regexp
- it's too easy to get out of sync otherwise
- it's like disallowing two terms in a row as a guaranteed sequence point
- a parsing sanity spot
- renamed non-chaining infix to structural infix
- not that much better a description, but it's better than an inaccurate, negative word
- pulled off the
:trig
tag
- we always include the trig and numeric functions
- removed their string argument modes; they're enums now
- lexically scoped, defaults to the trig base you want
- if someone backslashes a space or a pound sign in a regexp, we can't decide whether it's an unspace or a quoted character
- disallowed that
- you must use the single-quote form of quoting for space or pound sign
- removed inadvertent backtracking from parse failures in regexps
- semicolons now analyzed per earlier discussion
- fixed a bunch of error messages related to the old Perl 5 form of sigils plus curlies
- more humanization of error messages to make them less computer sciencey
- instead of "parsefail" it now says "Sorry!"
- people won't feel like they're turning into a robot as they're learning to program
Patrick:
- will people say that Perl 6 is a sorry language?
Larry:
- instead of a message complaining "couldn't find a MultiSig", whatever that is, it says "Signature failure"
- looked for token names that'd be confusing to the novice user
- gave them DBAs to produce more recognizable error messages
- infix hypers had a misleading message on missing RHS; fixed that
- put a yellow marker at the transition between the red/green parts of error messages
- assignment op used on something too fiddly gave an error about "multiplication too fiddly"
- fixed that to say that the assignment was too fiddly
- error messages at the beginning or end of the line now marked
- you can have an infix where you expect a term where it's not confusable as a prefix
~~
could be two string prefix operators, but that's useless
- parser can now tell it's out of sync there
say ~~$something
, for example
- fixed an infinite recursion bug in LTM
- reorganized the perl6-projects.org page to make it more community oriented
- the community aspects were in the miscellaneous section
- that didn't seem right
- other minor tweaks
Allison:
- gave a last-minute Parrot talk, scheduled the night before
- filled up the room
- lots of good comments
Patrick:
- brought a lot of people to my talk
Allison:
- talked to a couple of businesses about running dynamic languages in small, embedded environments
c:
- going to be a couple of years
Allison:
c:
- gives the technology a couple of years to catch up
Allison:
- build Debian and Ubuntu packages for Parrot 1.4
- includes a working
pbc_to_exe
- we can build installable packages for Pynie
- Rakudo will be able to do that soon
- Parrot 1.4 is in Ubuntu Karmic, will be in the 9.10 release
- the Parrot PIR book is now available in online stores, including Scribd
Patrick:
- Rakudo #19 released last Thursday
- I was busy doing other things
- Moritz Lenz did the release; it worked out really well
- our bus number increased on releases
- I've decided not to do any releases myself in 2009
- I've done four; that's my quota
- we already have release managers for September, October, and November
- may be able to recruit someone at YAPC::EU or online
- Moritz can tell you that it's pretty straightforward
- I didn't even know when the release occurred on Thursday
- I reviewed the announcement and changelog on Wednesday night
- didn't hear anything about it until someone congratulated me in person
- that was really nice
- Saturday before the release I had to do some quick changes due to a Parrot hashing order change
- quick fix there
- attended Damian Conway's Perl 6 Tutorial
- very enjoyable
- pleased to see how much Rakudo implements that he covered
- not sure if he did that on purpose; had the impression he covered what he thought necessary
- noticed a place where Rakudo doesn't handle nested comments correctly and fixed that
- fixed several other string bugs here and there
- correct smart matching on
Code
blocks
- finally have a plan to migrate PGE to the STD model without breaking the existing PGE codebase today
- simultaneously adding new features to NQP
- NQP will get regexp support
- the specialized Perl 6 grammar tool will likely disappear over the next few releases
- people who want new and fancy regexps will use NQP
- people who want compatibility with the old stuff will continue to use it
- compiler writers will be able to write their entire compiler (with the possible exception of builtin functions) in NQP
- it will also be much faster
- NQP will also become register aware
- can declare lexicals which correspond to Parrot registers within a block
- can write register-aware code using NQP
- the idea is that either PCT or the grammar engine could be written in NQP
- may not do it as an official source
- being able to point to equivalent NQP code would be helpful
- that'll push me a long way on my Hague grant
- should be able to do those in the near future
- Jonathan and I have worked out some changes to Rakudo's lexical handling
- we plan to work on that this weekend in Lisbon
- writing in my journal and planning for Lisbon
- planning a major Rakudo release sometime over the next eight months
- plan to hold BOFs and various other discussions with heavy Rakudo contributors to make a detailed plan
- similar to the Parrot Developer Summit last November
- that work has begun and is going well online
- I have
make
working from an installed Parrot
- can build Rakudo from an installed Parrot
- think it even works on Sun environments, which Andy Dougherty is looking at now
- there's also a simple
make install
target in the ins2
branch
- want to merge that to trunk
- should be able to build and install Rakudo by the next release
c:
- fixed a blocker for Rakudo's lexical handling
- going through Coverity scans; happy to see those again
- cotto and I are still working on the design and implementation of the profiling runloop
Nicholas:
- Rafael did smart match in blead for 5.10.1
- Paul Fenwick found the revised RHS semantics difficult to train
- Rafael reverted some of it
- Ricardo Signes didn't like some of its semantics either
- people found it a bit too smart
- has this bit people in Rakudo yet or at all?
Patrick:
- there are people who've said that it's too smart in Perl 6
- the DWIMminess has been too high for them
- there haven't been enough people saying that for us to dial it down
- plenty of us like it as it is
Larry:
- also Perl 6 has a type system that supports it
- the places of difficulty is where we don't distinguish between defined and undefined versions of the same type
Patrick:
- from the implementation side
- if Jonathan or I removed the right-handedness of the dispatch, we'd both choke
- we rely on that operator for more than just smartmatch
- MMD and grep rely on it
- any place we rely on dispatch to the right-hand operator needs it
- removing it would mess up our dispatching
Larry:
- it's impossible to optimize otherwise
- if you have a switch statement with
when 1
, when 2
, when 3
... it's matching numerically
- it's not a lookup in an array because the lhs is an array
- that'd be unacceptable
Nicholas:
- in Perl 5, I think it calls code refs when it finds them in places
- what does Perl 6 do?
Patrick:
- it calls them with the lhs as the argument
- there are some special cases like regexes I mentioned
Larry:
- that's what
grep
is doing
- its first argument is one of those smart match blocks
Patrick:
- that's how we implemented it in Rakudo
Larry:
grep
's first argument doesn't have to be a block then
c:
- we could override
grep
in Perl 5 if the implementation were similar
Nicholas:
- it's cleverer than I think
- also simpler than I think
- it's nice to find