Perl 6 Design Minutes for 11 March 2009

chromatic on 2009-03-13T01:53:33

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

Allison:

  • mainly release preparation
  • the usual ticket closing, patch applying, test failure investigation
  • lots of document cleaning, especially on docs.parrot.org
  • that'll help people find useful information when they go there
  • the big thing for me now is Debian and Ubuntu packaging
  • doing that on a fake release tarball, so I know that the release process will work
  • 0.9.1 wasn't packagable, due to some failing tests
  • thinking about release names
  • could use some help from a Parrot test harness expert

Larry:

  • more outcomes of the Capture and Match simplifying in the specs
  • the Result object is available via the .rob method
  • the .text method is gone; it's now a coercion of the object to a string
  • numification now not related to the result object
  • it just numifies the string that .Str would return
  • exported methods clarified that generated multi has to check the type of its first argument consistent with the class in which it was declared, by default
  • overridable by an explicit type declaration
  • promotion of Lists all the way to a mutable Array type in Item context is overkill
  • in most situations where you want that, there are other hints you want to do that
  • such as assignments to an array
  • no longer does that promotion; that introduces unoptimizibility
  • method declarations used to be mixed up with other declarators
  • my used to be the private method declaration
  • now a method declaration simply puts the method into the current class, via the MOP
  • does not by default put it into any package or lexical scope
  • if you add my or our, it produces an alias which can be called as a subroutine
  • disallowed a bare <STDIN> and <>, either of which indicates thinking in Perl 5
  • put error messages for that in the standard grammar
  • now gives a decent error message if you forget a semicolon between two statements on a single line
  • when it can detect that at least
  • a placeholder argument that conflicts with a signature now gives a decent error message
  • the .parse and .parsefile methods now take an action argument, instead of using a global variable
  • package named variables all canonicalized into the standard form (package name at front)
  • can now recognize $?CALLER::CALLER::foo, recognize the package, and delay it until runtime
  • fixed a nasty bug where metaoperators with their own precedence levels were transparent
  • all of the other bugs are minor

Patrick:

  • primarily answered questions
  • working on the Rakudo patch process
  • fixed a PGE bug with the goal operator
  • otherwise, cleaning things up in the Settings and fixing small things in Rakudo

c:

  • revised the Parrot bug reporting and triaging policy

Allison:

  • in the Squaak tests, it's trying to open and run a test file it thinks is named -le

Patrick:

  • this is a Test::Harness problem
  • when Rakudo starts, it detects an argument of -le and exits quietly
  • it's in Test::Harness::Straps, if you're running T::H prior to version 3
  • it's in TAP::Harness, if you're using a newer version
  • Nicholas fixed it so that it's -e if you're using the most recent version
  • that's a problem if you're running something that isn't Perl

Nicholas:

  • they changed something in the T::H distribution where if you use Test::Harness::runtests(), your Perl 5 environment passes through
  • if you use TAP::Harness, it doesn't
  • may force you to check the version and gyrate through it
  • there's documentation somewhere about running a Ruby example without parsing the shebang line
  • see TAP::Harness::Source::Perl

Allison:

  • is there a ticket about that somewhere?

Patrick:

  • it's probably easier to add a workaround to PCT
  • it could detect that it's being called from a harness
  • I'll just put in the straight hack for now
  • that'll let other language use the Perl 5 test harness

Nicholas:

  • an option is to require a new enough version of TAP::Harness; I think 3.16
  • that does introduce a build dependency on a test version

c:

  • any chance we can get time on Google's mind control lasers to wipe out some old code?

Nicholas:

  • or a time machine
  • I read the message about subroutines and methods
  • methods, by default, go into classes
  • subroutines go into packages
  • are they in different namespaces?
  • does that mean classes and packages are distinct?

Larry:

  • classes and modules have packages
  • they're packages with separate keywords
  • when it sees a sub declaration in a class, it puts it in the package and defaults to our, just like Perl 5
  • when it sees a method declaration, it tells the class MOP to add a method
  • to add an alias to the package or lexical symbol table, declare it explicitly with our or my
  • that is not the default anymore
  • seems to simplify things
  • we're also trying to unify the calling mechanism for both
  • when you're in the dispatcher, calling a method, it's the same as calling a subroutine
  • we have to distinguish methods from subs, if we want is export aliasing, by which namespace they're in, not any property

Nicholas:

  • if I declare class Foo;, does a Foo package exist?
  • if I declare a sub bar in Foo
  • and a method bar in my class Foo, are they two different things?

Larry:

  • unless you declare the method with our, in which case you'll have a collision
  • that's like exporting it to your own package as a multi