Perl 6 Design Minutes for 24 February 2010

chromatic on 2010-03-02T05:12:09

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
  • Instants 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