Perl 6 Design Minutes for 29 July 2009

chromatic on 2009-08-12T19:43:44

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:

  • they know that

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