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
Setting
s 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