Perl 6 Design Minutes for 01 July 2009

chromatic on 2009-08-06T02:06:09

The Perl 6 design team met by phone on 01 July 2009. Larry, Allison, Patrick, Jerry, and chromatic attended.

Larry:

  • Daniel and I are trying to break use and require into primitives
  • decided on unambiguous authorites as creation dates for the lineage as the least incorrect default
  • also with provisions for abandoning a lineage or providing a local override
  • constant declarator currently has our scoping rather than my scoping
  • constant may end up being a routine declarator like macros are
  • lots of IRC conversation with Jonathan about how multimethods dispatch in the presence of constraints
  • clarified that
  • conjecture about the :D and :U modifiers on types for defined and undefined
  • clarified that the prefix syntax category is the only way to make a named unary
  • don't automatically get one with a single-argument function, which Perl 5 does
  • clarified some longest token whitespace semantics
  • defined some UTF constrained buffer types
  • added some Rat native types
  • lots of refactoring of STD
  • reordered things
  • renamed and commented variables for consistency and meaning
  • especially context vars
  • playing with the symbol table stuff to bootstrap it with use statements
  • the core Setting's symbol table is now generated from Perl 6 code
  • can actually call TOP instead of comp_unit
  • STD now supports the PROCESS namespace
  • supports a separate SETTING namespace from your core namespace
  • the Test and Debug packages are now on their own
  • symbol table YAML files now use .syml, a contraction of sym and yaml
  • symbol file for .pm files include .pm, but symbol files for Settings do not use .setting
  • you can't use a setting file directly
  • they're supposed to be the surrounding scope, not pulled into the current scope as use does
  • getting enums and constants to work correctly
  • STD now initializes all of the CORE, GLOBAL, and UNIT settings
  • the symbol table now installs & variants of the types
  • you can refer to them as if they were functions
  • added a snaptest target to STD testing so that I can test a snapshot of the compiler against the entire t/ directory

Allison:

  • submitted the PIR book to the printer
  • they're processing the cover and interior
  • working on the installation problems
  • doing an install, deleting the build directory, figuring out what breaks and why
  • mostly working with Tcl, will also do that with Rakudo
  • working on Parrot Foundation stuff: non-profit, election membership, etc

Patrick:

  • lots of work on the Parrot VM Workshop and YAPC
  • released Rakduo #18
  • talking to Jonathan about doing #19 or #20, just so we have someone else who's done one
  • VM workshop went very well, writing a summary about that
  • 30 - 40 participants
  • introduced PIR, PCT, a variety of things
  • tired by mid-Saturday, left it open for people to work on their own
  • they accomplished some impressive things
  • a couple of people wrote their own compilers in a couple of hours
  • well on their way to achieving their goals
  • unconference style on the second day
  • talked about embedded Parrot, installation issues, Parrot profiling, etc
  • came up with ideas and plans to make installation better
  • Todd Olson used DTrace for some useful benchmarking and profiling
  • even at the PIR level
  • didn't have to add any direct modifications to Parrot himself
  • he's sent me his scripts and basic information
  • can use that as yet another profiling toolchain
  • presented my Perl 6 talks at YAPC
  • lots of people looking at that
  • SD Times called and interviewed me (and Allison) to dispel myths about Perl 6
  • interview came out okay
  • went to talks, talked to a variety of people
  • recruited people to write code for and with Perl 6
  • should be seeing more users and contributors over the next couple of weeks
  • fixed a few Parrot bugs, some Unicode things
  • now we can define built-in operators in the Setting in Perl 6, rather than in PIR
  • now we can write more of the Setting in Perl 6
  • people are starting to migrate operators from PIR into the Settings
  • that was part of my first Vienna.pm day
  • spent yesterday cleaning up tickets as part of that day
  • Jonathan did the same
  • we closed 15-20 tickets; the absolute number wasn't quite 20
  • other people filed tickets while we were closing them
  • will do another Rakudo day this week
  • I'll fix up constant handling, rewrite properties on containers, and perhaps implement BEGIN blocks
  • trying to make arrangements to go to Lisbon
  • biggest blocker is GC bugs and memory corruption in Parrot
  • hard to test around those
  • whenever a Rakudo spectest fails, if it runs with -G I commit

Jerry:

  • at YAPC::NA last week
  • helped organize PVMW
  • Patrick did a spectacular job teaching and giving feedback
  • happy with what came out of that workshop
  • a lot of people have a better understanding of Parrot and Rakudo now
  • several people talked to me after the workshop and expressed interest in contributing more to both projects
  • gave a Parrot Foundation keynote at the conference
  • my laptop crashed hours before my flight
  • met with many folks in the hallway track
  • spoke to a couple of potential PaFo and Rakudo sponsors
  • spent the rest of my week on PaFo work
  • will continue for the near future, at least until our elections at our annual meeting

c:

  • fixed a few bugs
  • will fix a few more
  • talked to Christoph about writing a good callgrind-compatible profiling core for Parrot, will start on that
  • led a retrospective about Parrot development
  • will make some changes, but we have a lot to be proud of
  • started more discussion about L1 and how Parrot will look in the next 18 months
  • blocking on interesting bugs I can reproduce and fix

Patrick:

  • on &Type in the symbol table, what will that do?

Larry:

  • intended to prevent symbol table lookup from having to do multiple probes
  • if someone says &Int, it just finds the type
  • instead of having to fail to find it, then try again as Int

Patrick:

  • the case where someone says &Int?

Larry:

  • yes, where someone wants the conversion function that gives an Int

Patrick:

  • when might we see light at the end of the tunnel on the captures discussion?

Larry:

  • we've seen lots of lights

c:

  • there are four lights!

Larry:

  • if you and I and Daniel can agree on something, it's about right

Patrick:

  • I'll agree on what you decide
  • have no strong horse in this race
  • but I want something consistent that works

Larry:

  • and does what people expect
  • which is not necessarily consistent

Patrick:

  • having thought about binding and such, it's a long fight
  • I'm sure it is for you too
  • the recent changes, where parens return captures or commas produce them, seem like we've gone from captures being an advanced topic to use when doing funny things with argument passing to captures being something you fundamentally have to understand to do something as simple as my $a = (1, 2, 3);

Larry:

  • that's always been SMOP's take on captures
  • I feel the same way about minmax at this point
  • no one will believe the way it works

Patrick:

  • I couldn't believe its definition

Larry:

  • it's probably not well-formed
  • there are probably ways to fix it
  • might remove it, but it's not high on my list of priorities
  • hate to take it out from under people after they've put days of effort into it

Patrick:

  • the days of effort for me was identifying what it's supposed to do
  • it's a one-line function in the Setting once I understood it
  • taking it out will save us one line of code

Jerry:

  • is it in S29?

Patrick:

  • it's an operator in S03
  • there's a .minmax method available on ranges

Larry:

  • another strike against the operator

Patrick:

  • I was trying to reconcile them in my brain
  • they seem totally unrelated

Larry:

  • there's something zippish
  • a bunch of things have ranges
  • you want the minimum of all the mins and the maximum of all of the maximums
  • you don't want to take them all apart and put them all together again
  • probably just a library function

Patrick:

  • might be worth an operator if you had a reduce form that worked well
  • anyway, a definitive decision on captures would make me happier

Larry:

  • has various implications for usability by mere mortals
  • we want to get it right

Patrick:

  • quantified captures in regexps produce captures instead of arrays
  • that feels nice to me

Larry:

  • that feels nice to me
  • "The ? quantifier gives me an array, but I just want to know if it's there!"
  • sounds like the capture DWIM
  • it'll probably return a capture, even if other quantifiers don't
  • your question "What does + mean?" is very appropriate
  • what are the failure modes?
  • how silent or loud are they?
  • how much of this is coverable in education?
  • the more of that you have, the more you can't claim that it's a little language to learn to begin with
  • definitely a design issue in my ballpark

Patrick:

  • any clarification will speed Rakudo to getting rid of many things it does wrong currently