The Perl 6 design team met by phone on 09 December 2009. Larry, Allison, Patrick, Will, and chromatic attended.
Will:
- some work on NQP port of Partcl
- Patrick has been very helpful
- sent a message to the Parrot list about the planning meeting this Sunday
- initiated a community document to discuss those plans
Allison:
- implemented large chunks of obscure C code to perform fast string matching using the FFT
- wondering if that'd be useful in Parrot
- maybe we do our indexing operations by character set in the NFG form
- also does very basic pattern matching by leaving out optional characters
- could be useable in the core tests, where it's tricky to depend on PGE
- this was my final assignment before the Christmas break
- have a month off to work on Parrot stuff then
- I'll show off my assignment when I submit it
Patrick:
- finished my final report for my Hague grant
- haven't quite finished the grant, but left TODO items
- rather than trying to finish everything and then write the report, I'd draft the report and keep notes on what I needed to finish
- need to work on HLL interop
- enable Perl 6 and other Parrot languages to load libraries from other HLLs
- will work on that over the next few days
- had several coversations about optimizations, constants, and inferior runloops
- made minor PAST improvements
- integer constants can automatically promote to num constants without going through a PMC
- updated NQP to make it easier to write custom operator subs, if you're using the operator precedence parser
- implemented the beginnings of smart matching
- not full Perl 6 smart match
- makes sense in the Parrot context
- can match against regexes, tokens, rules, and any types with protoobjects
- code looks more like Perl 6
- not much on Rakudo besides answering questions
- will get back to the Rakudo-ng merge after finishing my grant work
- also worked on Partcl
- updated its regex syntax, particularly for enumerated character classes
- fixed it to handle unquoted, non-word characters in regexes
- previously it only handled barewords as literal matches
- it's closer to the Perl 5 syntax now
Larry:
- didn't like the name
PairValSet
, renamed it EnumMap
- likewise
PairSet
is now PairMap
, and PairVal
is just Enum
- so individual constant pairs now called "enums"
- we distinguish pairs, which have read-write values, from enums, which are constant in the value
- you can now do
.enums
on hashes and arrays as well as enumerations
- differs from
.pairs
, which give reference semantics into the values of the original data structure
.enums
gives you a constant snapshot
- David Green suggested renaming
Enum.name
to Enum.key
, and he was right, since they're constant pairs
- trying to be consistent about calling the whole type an "enumeration" and referring to the bits as "enums", even though the keyword is
enum
- thought people would rebel at typing the long name
- clarified that the anonymous
enum
is compile-time evaluated as an anonymous list of constants
- you can always cast to an
EnumMap
at run time for the other behavior
- simplifying conditional semantics
- STD parser now parses a
WHENCE
closure as part of the typename, rather than relying on subscript parse
- block escape within a closure within a string used to parse as a normal block by responding to comments outside of the block
- already fixed the embedded block in the regex syntax
- made that usable by strings and regexes now
- blocks in regular code try to figure out if they're at the end of a statement
- look for the trailing curly
- inside a string or regex, there are no statements
- it makes no sense to look for the end of the statement there
- the obsolescence messages were still in the old framework that upsets some Perl 5 people
- changed the wording to "Unsupported use of ..."
- #perl6 found a precedence inconsistency in parsing of list prefixes vs list infixes in NG
- turned out to be wrong in STD first, and NG copied it
- I fixed it in STD, Patrick fixed it in NG
- otherwise last week was rather too ADD-ish, so mostly did Q&A on IRC
c:
- fixed some bugs
- made some optimizations
- think I've fixed most constant PMCs in PBC now, which should help NQP and Rakudo
Patrick:
- it'll take a while before Jonathan and I can take advantage of that
- Allison, when you
push_eh
an ExceptionHandler onto an array in a context, it creates an RPA
- does that hold other things besides an EH?
Allison:
- potentially
- events get stored in the scheduler
- only EHs are scoped to a context
- the old
pushmark
/popmark
stuff to do actions used that same global array
- it may have changed to use the same array
- that's deprecated though
- they won't use that array for long
Patrick:
- I need something to replace
pushaction
and popaction
before they go away
- when we handle
LEAVE
semantics, we want to avoid generating an exception to leave that scope for caching
- I don't want to generate and rethrow actions to go up the stack
- those ops let me do that without generating exceptions
Allison:
- we do need singleton exception objects for
FAIL
and RETURN
- no extra information needed
- right now, you can insert anything you want in that array
- the
local_branch
and local_return
uses that array
Patrick:
- it shouldn't
bsr
and ret
may have
- I provide my own there
Allison:
- oh right
- I might not have checked in that code
Patrick:
- by the way, NQP doesn't use
local_branch
or local_return