The Perl 6 design team met by phone on 24 February 2010. Larry, Allison, Patrick, and chromatic attended.
Larry:
- my work last week was almost entirely responsive to various discussions on irc and p6l, even when it doesn't seem like it
- clarified that
LEAVE
-style phasers do not trip till after an exception is handled (and not resumed)
- the implementation of take is specifically before unwinding even if implemented with a control exception
- simplified series operator by moving generator function to the left side (any function on right side will now be a limiting conditional)
- a
*
is no longer required to intuit the series on the left; the absence of generator before the ...
operator is sufficient
- first argument on the right of
...
is now always a limiter argument
- for convenience and consistency, added a new
...^
form to exclude a literal limiter from the generated series
- unlike ranges, however, there is no leading exclusion
^...
or ^...^
- series is a list associative list infix, and each
...
pays attention only the portion of the list immediately to its left (plus the limit from the right)
- an "impossible" limit can terminate a monotonic intuited series even if the limit can never match exactly
- variables now default to a type of
Any
, and must explicitly declare Mu
or Junction
type to hold junctions
- this is to reduce pressure to duplicate many functions like
==
with Mu
arguments; most of our failure values should be derived from Any in any case
- a
Mu
result is more indicative of a major malfunction now, and is caught at first assignment to an Any
variable
Instant
/Duration
types are biased away from Num
and towards Rat
/FatRat
semantics
Instant
is now completely opaque; we no longer pretend to be the same as TAI, numerically speaking
Instant
s are now considered a more basic type than epochs, which are just particular named instants
- all culturally aware time can be based on calculations involving instants and durations
- list associative operators now treat non-matching op names as non-associative rather than right-associative, forcing parens
Whatever
semantics now autocurry any prefix, postfix, or infix operator that doesn't explicitly declare that it handles whateverness itself
WhateverCode
objects now take a signature to keep clear how many args are not yet curried
- so
*+*
is now more like WhateverCode:($x,$y)
- autocurrying is still transitive so multiple ops can curry themselves around a
*
- added semilists as
Slicel
type to go with Parcel
- this allows us to bind
@array[1,2,3]
differently from @array[1,2,3;4,5,6]
, for instance
- the
Matcher
type now excludes Bool
arguments to prevent accidental binding to outer $_
when closure is needed
when
and ~~
will now warn of always/never matching on direct use of True
or False
names as matcher
- STD generalizes
\w
lookahead to all twigils now
- STD now treats non-matching list associatives as non-associative
- things like
1 min 2 max 3
are now illegal, and require parenthesization for clarity
- STD now treat invocant colon as just a comma variant so it does not fall afoul of the list associativity change
- CORE now recognizes the
TrigBase
enumeration
Patrick:
- first release of the new branch of Rakudo last week
- passing ~25,000 tests at the release
- thanks to optimizations from chromatic, Jonathan, and Vasily, Rakudo has a lot of speed improvements
- in particular, it can run those tests in under 10 minutes, non-parallel, depending on your hardware
- older releases took 25 minutes and more
- the regex tests will slow things down
- ultimately, we're seeing a big speed improvement over the past releases
- cleaned up lists and slices, now they work pretty well
- worked with Solomon Foster and others to speed up trig operations
- fixed a bug related to lexicals declared in classes
- fixed the long-standing and often recurring problem with curlies ending a line/statement causing the next statement to be a statement modifier
- easy to fix in the new grammar
- that was nice
- made an initial implementation of the
sort
method
- it's very short, because Parrot provides one
- there are a few bugs in Rakudo there still, but I'll get them
- planning for the Copenhagen hackathon on March 5 - 9
- Jonathan and I have been updating the Rakudo roadmap
- will check that in in the next couple of hours
- so far, every time we review it, we surprise ourselves at how much we've accomplished
- we're meeting all of the top priority goals without making any heroic efforts
- we'll put those goals in as well as timelines
- most of the major tasks from previous roadmaps have happened
Allison:
- working on Python this week
- attended Python VM summit, Python language summit, and PyCon
- Parrot's on good track to support what Python needs
- useful to make community connections
- when I reviewed Pynie, I was surprised to see how close it is to supporting the whole Python syntax
- some of those features are big, like objects
- but we should support them soon
- Debian packages delayed by the absence of a sponsor
- they should go into Debian soon though
- I put in a request for feature-freeze exception for Ubuntu 10.4
- Parrot 2.0 should go in
- haven't made any commits to the PCC branch
- that'll be a top priority for next week
c:
- fixed a Parrot GC bug for last week's Rakudo release
- made some optimizations in Rakudo and Parrot
- helped Jonathan find a few more
- fixed a long-standing math MMD bug
- still working on HLL subclassing; more tricky than you think
- may be some conflicting design goals about vtable overriding and MMD
Allison:
- Patrick, do we need an explicit deprecation for old PGE and NQP?
Patrick:
- I think Will already added one for NQP
- we can add one for PGE if we need
- they don't necessarily have to disappear at the next release
- but no one's planning to maintain them
Allison:
- no reason not to put in the notice now
- we don't have to remove them at the earliest possible date