21 Jan 2010 chromatic   » (Master)

Perl 6 Design Minutes for 09 December 2009

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

Syndicated 2010-01-21 04:41:19 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!