5 Apr 2010 chromatic   » (Master)

Perl 6 Design Minutes for 31 March 2010

The Perl 6 design team met by phone on 31 March 2010. Larry, Allison, Patrick, Will, and chromatic attended.

Larry:

  • in SpecLand, made it clear that the brackets in pairs are not related to subscripts, but follow the corresponding fatarrow semantics
  • in particular, name extenders are just strings or list of strings, properly indicated by : or:() in most cases (this includes all operator names).
  • we now forbid name extension using the:{} keyless adverbial syntax
  • we don't need that because name extensions are really only supposed to use values, not closures
  • if we really, really, need to supply a closure as part of a name extension, we can put it in parens, as in:({}).
  • we can use that notation for supplying a closure as a first argument to a method without requiring a space between the colon and the curly, as in.map:{...}
  • people keep writing that and expecting it to work, so I thought it would be good to make it work
  • the colon is still require before the curlies, or it's a hash subscript
  • we now capitalize the Junction type again because I couldn't get people to stop capitalizing it
  • also, the native aspect of junctions is not their most salient difference from normal types
  • conjectured an Each type that autothreads lists like junctions, but is serial and lazy, and is used for its values in list context, not boolean context
  • in S05, did much cleanup of cursor semantics to reflect what STD and Rakudo actually do these days
  • retargeted the <&foo> regex assertion form to explicitly call a routine, just like always calls a method
  • a bare <foo> assertion now prefers to call a lexical function if visible, or calls as a method in current grammar if not
  • this is a compile-time distinction, not a fallback at run time
  • in code hacking, continued debugging of the backtracking transactions I added last week
  • gimme5 now sets the correct xact on || alternations
  • deleted more of the transactions that are no longer needed when building match results that are no longer hypothetical
  • a LazyMap now always passes through the first result regardless of its associated commit transaction state
  • that's because the first cursor in a lazy list always represents the current match hypothesis, not a future hypothesis that needs pruning
  • STD now parses to the new specs regarding name extensions not including:{}
  • now allow colon form of method arguments to omit the space if the next char is a left curly, which is what people seem to expect anyway
  • note that this makes the closure the first argument, not the only argument
  • STD now gives more useful error messages when user says things like 'if' as a function call (if(...) {...}), or a statement control like 'given' where one isn't expected ($x = given {...})
  • STD now properly objects to unrecognized internal regex modifiers such as:has
  • improved the message on adverbs with empty angles (:foo<>) to list some better options
  • the problem arises when people think that the angles produce a null string, when in fact they produce a Nil list
  • other malformed pairs are also better diagnosed, such as:! not followed by an identifier, or pairs with duplicate arguments
  • added a new rule that traps all warnings and errors
  • STD now uses suppose in place of custom try blocks in diagnosing such things as two terms in a row, or unexpected infixes
  • also uses suppose to soften the warning about backtick-less embedded comments by not complaining if the supposed comment eats the whole line anyway
  • put in some code to de-dup identical warnings
  • STD now includes the signature's return type (after -->) in the check for redundant 'of' types
  • did various tiny speed tweaks, fossil removals
  • started playing with how to mark sink context and pure operations
  • split out Actions.pm from viv so that it can be used by other STD-based AST builders
  • this is in preparation for propagating attributes up and down the AST such as sink context and purity
  • eventually this will result in "Useless use of" messages where appropriate, not to mention the ability to do constant folding

Allison:

  • worked on the compact_pool() function
  • split it into a series of smaller functions
  • it could use more work, but it's an improvement
  • found one possible bug
  • worked on some documentation, especially for PMC attributes

Patrick:

  • reviewed some patches to add variable handling in regexes
  • they need some changes, but the overall concept is good
  • reviewed a few other messages
  • most of my time is going toward my family
  • hope to get more time to be more active in the next couple of days, but I can't promise that yet

Will:

  • talked to Jonathan about Rakudo Star priorities
  • he's very pleased with the memory fixes
  • the next thing on his list is getting good line numbers in reported errors
  • closing tickets
  • working to get rid of the last recursive Makefile
  • may wait until after the new release, when we remove a lot of deprecated things
  • practicing my NQP skills by working on Tcl again

c:

  • worked on the Rakudo memory problems
  • Vasily and I fixed the big memory use problem
  • still some performance tuning to do there
  • wrote up tasklists for two other important performance pieces
  • will work on line numbers after we get performance back

Syndicated 2010-04-05 04:42:21 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!