2 Mar 2010 chromatic   » (Master)

Perl 6 Design Minutes for 24 February 2010

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

Syndicated 2010-03-02 05:12:09 from pudge

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!