Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

chromatic (983)

  (email not shown publicly)

Blog Information [] Profile for chr0matic []

Journal of chromatic (983)

Friday March 20, 2009
03:50 PM

Perl 6 Design Minutes for 18 March 2009

[ #38677 ]

The Perl 6 design team met by phone on 18 March 2009. Larry, Allison, Jerry, Nicholas, Will, and chromatic attended.


  • spent a large part of the past week preparing for Parrot 1.0
  • making lots of test packages for Ubuntu and Debian
  • lots of spit and polish finishes before the release
  • I didn't warn our admins that we'd get a traffic spike
  • but I didn't expect that either, so I'm pleasantly surprised
  • will work on the Pynie implementation in the next week
  • partly because I'm going to Pycon


  • some bugfixes for Parrot
  • some longer term planning
  • will write up some thoughts on future Parrot architecture in the near future
  • otherwise trying to finish the Modern Perl book


  • helped get Parrot 1.0 out
  • a lot of people chipped in
  • Allison dedicated a lot of time to it, so she deserves a lot of credit
  • gave a talk at SPUG last night on Parrot 1.0
  • well-received
  • will generate some more interest in local interest
  • some people asked about writing their own languages
  • which was the goal of 1.0


  • CJ Collier sent me a positive note about your talk last night


  • I think there's a dynamic languages conference at Microsoft in April
  • I'll find out more details
  • otherwise, Google accepted TPF for GSoC 2009
  • just made it public an hour ago
  • we need people to sign up as mentors
  • we need ideas
  • there's a wiki page we can update


  • been a busy boy!
  • junctions are now a native type that you aren't allowed to change the internals of
  • .eigenstates is now a private method
  • it was too tempting for people to play with
  • if they want to get at that method, they have to persuade the junction type to trust them
  • we decided that blocks should not autothread
  • they should generally be transparent to datatypes which transfer in and out of them
  • the default parameter to a block is now Object and not Any
  • subroutines and methods take an Any, so they still autothread by default
  • you can force an autothread by passing an Any as a parameter
  • lots of little cleanups
  • no longer an int prefix operator; we have typecasts
  • it was ambiguous as to whether it expected a following term
  • general cleanup on other confusing words of that type
  • we've created a category of syntactic terms which are values: pi, e, enums
  • they're not 0-ary functions
  • they don't expect a following term
  • we're breaking the Perl 5 notion that constants are merely 0-ary functions
  • typenames already were these singleton values
  • they were typically undefined protoobjects
  • now you can declare constants in this category
  • they're defined but parse the same way as types do
  • last week we turned the Result object into a hash element .<?>
  • then it was an object attribute, .rob
  • we've noticed that as it's used mostly to create ASTs
  • now it's available through the accessor .ast
  • I didn't like the term "result object" anyway
  • S05 uses the term "result" 95% of the time to refer to something else
  • they're now abstract objects or AST objects
  • reviewed the IO spec
  • simplified it massively
  • fixed many syntax errors and brainos
  • somewhat cleaner now
  • decided that the .() for a normal function call was bogus
  • the dot forms other than that are all a form of dereferencing
  • on a normal function call, it's syntactic sugar for the bare parens as part of the special form
  • because it was confusing as to accessor functions, we removed the special dot form
  • you can still put whitespace with a backslash, but not the dot form
  • .() needs some object which responds to the Callable role
  • we now have non-sigil constant declarations: constant pi = 3
  • spec'd a while ago, but I never managed to get that into STD
  • other big effort was to get viv --p6 to spit out a perfect copy of
  • it's a deparser
  • I managed to get it to that point, but not always by the correct means
  • match objects now -- not quite specified yet -- have the notion of accessing the captures in the order of parsing, left to right
  • makes it very easy to write a translator
  • you can traverse them in order and translate the ones you want according to type
  • no need to reconstruct the order of the nodes
  • this is often useful
  • makes it easy to process if some of the captures capture multiple things under the same name
  • choice of accessing by name and by array under that
  • my next goal is to rewrite gimme5 as a Perl 5 emitter using viv
  • then I'll have a real parser which spits out code
  • looked at some of the tests
  • constant.t had several tests inside hard-wired evals
  • they're invisible when I run my standard parsing tests
  • I took them out
  • if something isn't parsing there, someone needs to add fudge comments
  • I wonder how many other evals hide broken syntax


  • that's a holdover from the Pugs tests
  • should be reasonably easy for Moritz and the other folks to catch
  • it's unusual they didn't catch that


  • improved a lot of error messages
  • I love error messages
  • if you use the semicolon stub form of a sub or something, it complains about a missing closure
  • reasonable error messages for extra decimal points
  • created a bug in heredoc processing by changing the internals of my nibbler
  • have to pull out the insides of the quoted string to find the closing heredoc terminator
  • shot myself in the foot on that one
  • cleaned out a lot of dead wood


  • woohoo on the Parrot release!
  • woohoo on the Summer of Code!
  • interested to note that Rakudo's implementation of state variables came after Perl 5's implementation


  • been working on This Week in Parrot posts up to the 1.0 release
  • will do a double-long one next week as I skipped last week
  • need to get both Tcl and APL working again
  • ignored those in favor of helping with 1.0
  • going through the usual ticket mongering and removing deprecated things
  • that's much more satisfying now that 1.0 is out
  • and today is Rachael's birthday, so you have to put this in the notes
  • no singing


  • in Perl 5 at work, we've had an ideological battle about use constant
  • which I know the optimizer can inline
  • and the other is the use of Readonly, which uses tied variables
  • the XS version flips the READONLY flag
  • the latter interpolate in strings, even though they're not inlined


  • they interpolate in Perl 6 inside a closure block, "{pi}"
  • not as big an issue if you use the sigil in front
  • the question is "Does the compiler know about the value?"
  • that's irrelevant to the sigil in the front
  • Perl 6's readonly is runtime only
  • a true constant you can constant fold at compile time
  • you can't do that with readonly, because it might have a different value next time


  • it's not necessarily immutable


  • all formal parameters are readonly by default
  • but they might have different values on the next call
  • we're distinguishing between constant and readonly in Perl 6
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.