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 <.foo>
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
Thank you !
thickas on 2010-04-05T09:44:09
.. much appreciated.
Good service
sjn on 2010-04-06T21:01:05
I agree. Thanks for writing these reports! :)