Perl 6 Design Minutes for 25 February 2009

chromatic on 2009-02-28T00:02:00

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

Patrick:

  • continuing to prepare Rakudo for its next release
  • expect that to happen today
  • for now, the releases will be alphabetical: words beginning with A, B, C, D, etc.
  • partially to emphasize that I don't consider these user-ready releases
  • putting a number on that may imply that
  • no easy way to tie releases to numbers right now anyway
  • some people have said "What happens when you get to X?"
  • I hope we're releasing official releases by then
  • updated Rakudo's test harness
  • no longer requires Parrot's test harness
  • it now passes over 7000 spec tests
  • Jonathan gets most of the credit for that
  • he's been closing tickets and fixing bugs while I've been working on build issues
  • totally unplanned to hit that number
  • updated the spectest progress files to show our progress
  • haven't updated the graph today
  • following along conversations and trying to keep track of various changes

Allison:

  • spent the week mainly on install stuff
  • various languages can build from an installed Parrot without depending on the build directory
  • still some hard-coded paths within Parrot's configuration system for C compilation
  • Rakudo and Partcl can definitely build from an installed Parrot
  • need to do Pipp next
  • set up a languages repository on svn.parrot.org
  • waiting for some admin work on that
  • came up with a saner version number strategy

Patrick:

  • I find it much easier to say that January and July are the memorable releases than to attach numbers to them

Allison:

  • with Ubuntu, it's likely we'll get 1.0 and 2.0 into the distribution and not say 1.4
  • they have an upstream packaging freeze about a month before we put out our release
  • the release that goes into their 09.10 will be 1.0, not 1.4, because the latter won't be out in time

c:

  • why not 1.3?

Allison:

  • that's a developer release

c:

  • we're going to have to talk about that

Allison:

  • we have a final copyright assignment from the Perl Foundation to the Parrot Foundation

Jerry:

  • have some small pending changes to S19
  • nothing much to report there
  • Google's giving a GSoC presentation at the University of Washington
  • they've asked me to speak about our experiences last year with TPF
  • I'll invite people to join the Perl and Parrot Foundations project this year
  • hope to have an ideas page to point people at at that point

c:

  • have you spoken to Jonathan Leto about that?

Jerry:

  • only heard about it yesterday
  • it's on my list
  • looking for presentations on GSoC to find slides to borrow
  • about all I've had time to do lately

Larry:

  • having a really nice problem
  • a lot of people are helping to flesh out the specifications
  • the nice problem is that they have to be managed
  • trying to oversee what people are hacking into the new specs
  • want to make sure things don't go too far afield
  • weighed in on event processing and inexact numeric matches on the mailing list
  • nothing there is quite spec-worthy yet
  • doing name-whackage of various sorts
  • killed off the $*DEFIN, $*DEFOUT, $*DEFERR symbols which emulated Perl 5's old IO select states
  • not it relies on that those are contextual vars: $*IN, $*OUT, $*ERR
  • any scope can override them
  • that's simplification
  • many compiler variables that were redundant and error prone with regard to nested scopes
  • you now chase links through your symbol tables to find out your lexical or package nesting
  • unhandwaved how a setting can loop around user code
  • you can mark it so that it knows how to dump the lexical scope surrounding user code
  • there's a stub in there called YOU_ARE_HERE
  • I'm open to better names
  • clarified associativity at the same precedence level
  • that can happen with user-defined operators
  • non-associative in that case, so you get an error
  • noticed that the tighter and looser precedence generators only produced precedence levels that were close to one that exists
  • wanted the ability to define something in the middle
  • if you use both in the same precedence level, it splits the difference

c:

  • sounds like you need a synonym: between

Larry:

  • tried that, but you have to specify two things anyway, and there's already syntax for that
  • after the discussion of time semantics, put in two core types: Instance and Duration
  • defined to be well-behaved in terms of time
  • most of my standards hacking has been in user-oriented error messages
  • now an error message that warns you if you try to use a C++ constructor

c:

  • can we backport that one?

Larry:

  • it's also a valid Perl 5 constructor
  • just thought it would be more insulting to call it a C++-style constructor :-)

c:

  • I still want it

Larry:

  • previous patch to catch Haskell-style open-ended ranges where you leave out one of the terms
  • that prevented talking about any .. operator in square brackets
  • we couldn't use the notation where you put square brackets around infix operators
  • I had to fix that
  • fixed up the warning when interpreting if() as a function call
  • introduced enum names into the symbol table
  • it's a bit of a hack
  • anonymous enums now parsed correctly
  • no more complaints of missing package when you use CALLER:: or CONTEXT::
  • can now introduce term symbols, as well as prefix, infix, and postfix
  • other random warning-suppresion bugs

c:

  • working on project management, version numbers, deprecation, triaging guidelines
  • trying to fix as many bugs as possible
  • reviewing SKIP and TODO tests

Jerry:

  • I read your Setting work this week
  • can you roll back a Setting?
  • can you access something outside the current Setting?
  • I don't have a use case
  • is it as simple as calling OUTER::Setting?

Larry:

  • if there are multiple settings, they're just enclosing lexical scopes
  • any mechanism to navigate lexical scopes works
  • the outermost is CORE:: and so forth

Jerry:

  • to cut off a file in mid-stream processed with -n, could I close the handle in CORE::?

Larry:

  • chances are that's a dynamic variable, a $*ARGV equivalent

Jerry:

  • can I find out which Setting I'm currently in?
  • finding out its name
  • inside my current runloop, can I tell which Settings I have loaded?

Larry:

  • we probably want to have a way of naming them, much as CORE:: has a name
  • lexical scope should have a way of saying "My lexical scope has a name, and it is..."

c:

  • O-S-C-A-R?

Larry:

  • ... but I haven't thought about that yet

Jerry:

  • any status on protoregexes and stuff?

Patrick:

  • I end up being the person of last resort to do things that need doing
  • had hoped that other people would pick up the ball on build issues and stuff
  • I can make predictions for the next few months, but life catches me off guard
  • once I get back to working on PGE, it won't take too long
  • it would bug me more if the lack of those features were holding Rakudo back
  • that doesn't appear to be the case
  • we're making good progress and we're getting new features
  • we could use them for adverbs, but we can work around that now
  • if that reaches a pain threshold, it'll move it higher in the queue
  • that's where I'm focusing my efforts

Jerry:

  • Jonathan's very good at moving things forward

Patrick:

  • it's fortunate that each of us tends to like doing what the other person hates
  • with the exception of lexicals and the build system

Allison:

  • no one ever wants to do a build system

Patrick:

  • delayed binding helps this though
  • seeing grammar changes as they come up makes it easier to figure out what to do
  • with the Setting code now, and features written in Perl 6, we're closer to finishing one of my milestones

Jerry:

  • how will the install process be for Rakudo?
  • it seems like Parrot is doing the heavy lifting there

Allison:

  • I've been working on independent building
  • what would you like for installing?
  • an install script where you identify your language files, and it puts them there?
  • you have a languages/ directory in the Parrot lib directory
  • you have configuration files that tell you where they are
  • you just copy files after that

Jerry:

  • certain things might need changing
  • grouping the docs?
  • cross-indexing?
  • if you're doing dynops or dynpmcs?

Allison:

  • haven't been doing any doc installs, just executable files
  • maybe they should go in with the Parrot docs
  • installation works via a MANIFEST
  • you specify the type of file with a tag in the MANIFEST, whether doc or lib
  • are you happy to have a MANIFEST in your language directory
  • let the installer take care of it for you?

Patrick:

  • if there's a script to do the install, we'll probably use that
  • I just want to get it so that people can build and run Rakudo
  • I'll probably look at installation in a month or two

Allison:

  • I'll look at a simple MANIFEST for Rakudo
  • will patch your Makefile for that
  • will build a basic installer script
  • it'll be a basic, working install

Jerry:

  • the mk_languages_shell.pl script needs an update to make a MANIFEST
  • François has been keeping that up to date

Allison:

  • I haven't added MANIFEST to any other languages yet


transcribe-o

ChrisDolan on 2009-03-01T14:28:57

after the discussion of time semantics, put in two core types: Instance and Duration

Should be "Instant" not "Instance"