Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

chromatic (983)

chromatic
  (email not shown publicly)
http://wgz.org/chromatic/

Blog Information [technorati.com] Profile for chr0matic [technorati.com]

Journal of chromatic (983)

Monday June 15, 2009
08:38 PM

Perl 6 Design Minutes for 06 May 2009

[ #39125 ]

The Perl 6 design team met by phone on 06 May 2009. Larry, Allison, Patrick, Nicholas, and chromatic attended.

Larry:

  • refactored my phone
  • refactored various functions
  • comb now defaults to matching single characters
  • a words method now does what comb used to do
  • did some work on pick
  • looked at most of the functions in containers to see whether they out to return a List or a Capture which returns an Item
  • depends on whether the function would ever be used to pull a single thing out
  • whether people expected it to do the right thing as an Item
  • pick is one of those functions
  • worked on the semantics of has
  • the initializer semantics; the syntax hasn't changed
  • worked on the relationship between multiple has if you have multiple attributes
  • straightened out a mismatch between prefix parsing specification and implementation
  • turned the term "protoobject" into "type object"
  • thinking about the notion of braided languages
  • Perl isn't a single language
  • also a regexp language, a quoting language, a quasi-quoting language
  • they hand off to each other
  • they have to keep track of each other; I call that a "braid"
  • how you override one language in another
  • how do you handle regexp language changes from regular Perl, when you're not in the regexp language at the time?
  • thinking about how to get the derivations to work correctly
  • when you parse a regexp or a quote
  • now instead of starting at a language like q, it starts at the current q-ish language in your braid
  • in support of that, I implemented temporization of context variables in gimme5
  • used to temporize current braids to a lexical scope
  • added a block after try in parsing
  • it uses that rather than parsing the block as the first argument of a list operator
  • likewise the other statement prefix operators
  • added the auxiliary hides trait
  • the \c notation for characters allows any radix of integer inside the list
  • the \c, \o, and \x notations all parse consistently now
  • enums are parsed more correctly
  • they don't give bogus duplicate warnings
  • if you declare a lexical symbol with :: in it, assumes you're referring to a subpackage of the current lexical scope
  • means something different from a symbol intended to scan outward
  • along with the notion of braided languages and derivability, derived languages can add more parser variables ($?foo) with a virtual function for lookup
  • avoids clobbering the core definitions
  • worked on role parameters
  • they're now in the role's pad, like normal signature parameters
  • started playing with the YOU_ARE_HERE stub used to define the effective insertion location of your code into a Setting
  • determining which lexical pad to dump as the Setting's context for use by other compilation units
  • did a lot of work on error messsages
  • some of my ||s suppressed panic messages
  • more useful error message on the null pattern (//)
  • gives a better message if you slurp your control block in the preceding expression

Patrick:

  • had a lot of discussions online
  • not as much coding as I like
  • seem to be answering questions for others
  • quite a bit of work on Rakudo internals refactoring
  • that'll make it easier to switch it over to be its own HLL in Parrot
  • moved things around
  • made a single constant definition we can change when we move it over to its own HLL
  • also moved all of the Parrot HLL mangling into its own source code files
  • easy for us to manage there
  • fixed some bugs
  • talked with Jonathan about refactoring the P6object implementation
  • used in Rakudo and PCT for Perl 6 object-like behaviors
  • he's working on that refactoring now
  • found and fixed a couple of bugs handling implicit slurpy positionals
  • made Rakudo's standard IO handles default to UTF-8 encoding
  • gives people behavior more like they expect
  • working on changes to the Array and List implementation
  • currently List inherits from ResizablePMCArray
  • we'll change that to contain it
  • that should clean up a lot of behavior
  • Rakudo passed the 11,000 spectest mark as of two days ago

Allison:

  • spent some time on ticket, milestone, and roadmap maintenance
  • helping other people start or continue their tasks
  • launched the install PDD out of draft
  • it doesn't address every question, but I cleaned out all of the inaccuracies
  • fits our current plan
  • probably needs more expansion when we figure out the source of some of our problems building Rakudo and Partcl
  • the general problem is that we've built all of our languages from the build tree, never and installed Parrot

c:

  • I've been explaning Perl 6 roles on my new weblog
  • lots of feedback
  • still lots of explaining to do
  • also been profiling Parrot and Rakudo startup
  • Parrot's a lot faster now (cotto and bacek's work on vtable init helped immensely)
  • Rakudo's getting faster, but it has a ways to go
  • will keep working on that, but the progress has been decent with little investment
  • discussed exception handling with Allison
  • came up with a preliminary design to handle the interior runloop exit there
  • just syntax to hide tricky semantics

Patrick:

  • when dealing with exceptions, handlers, and returns for subroutines
  • it'd be nice to force a return from a subroutine higher up in the caller chain
  • akin to Perl 6's leave semantics
  • trying to do that without throwing an exception....
  • if we do it with exceptions requires every block to have a handler

Allison:

  • invoke the return continuation several levels back?

Patrick:

  • is that easily doable at this point

Allison:

  • we have all of the ability for that, but no syntax for it

Patrick:

  • I don't necessarily need syntax for it
  • the natural approach is to find the appropriate caller
  • I need to do that anyway
  • then ask for its ReturnContinuation
  • then invoke that with the values I want to return to its caller

c:

  • makes sense to me

Patrick:

  • that may exist in PIR syntax like that anyway
  • if the easy invoke doesn't work, use some combination of set_returns

Allison:

  • not sure if we have in PIR right now the way to ask the caller for its return continuation
  • you can do it from C
  • we can add something which does that

Patrick:

  • if I ask for a Sub's current context
  • I could write a method on a sub to do that
  • it'll be easier and nicer when our contexts are PMCs
  • as an intermediate case, that would be it
  • related to that, this might be there too
  • is there a way for a Sub to register behavior to execute just before it exits

Allison:

  • are those like the LEAVE hooks in Perl 6?
  • we have a place to store them now
  • we don't right now have a way of flagging a particular handler to execute at block scope exit
  • would it make sense to call that an event?

Patrick:

  • it might
  • before saying what we do and don't have
  • one piece of this is that there's still a push_action opcode

Allison:

  • it never worked
  • we're removing it
  • the global stack never synchronized with continuations
  • it dummied up to work, but it doesn't have the automatic stack cleanup behavior

Patrick:

  • the other possibility is the presence of ONEXIT or LEAVE hooks on Subs in Parrot

Allison:

  • do you want all Subs to have that
  • or at runtime would you want to attach a handler to that sub?

Patrick:

  • it might be nice to have that at compile time
  • I suspect it'll end up being an attached block

Allison:

  • can we tie that cleanly with other execution pieces?
  • NEXT and LAST etc

Patrick:

  • the biggest difference with LEAVE is that it's not exception-based
  • Larry thinks of it as natural to a block
  • PCT models the rest as exceptional

Allison:

  • it sounds like a handler to store in the local handler list
  • mark it so that it's clearly not an exception
  • we have handler flags -- exception, event, etc
  • we add to the execution code for Subs
  • as it returns or ends, it checks to see if there was a handler
  • invokes it if so

Patrick:

  • sounds good to me
  • it's come up if you're thinking about these issues anyway

Nicholas:

  • how useful is MAD that's in Perl 5 blead still?

Larry:

  • I don't know
  • it may turn out to be very important
  • depends on how possible it is to write a decent Perl 5 parser in Perl 6
  • where decent is a very peculiar definition meaning "indecent"
  • this is unknown
  • for interleaving Perl 5 and Perl 6 on various VMs, some VMs will use a Perl 5 compiler written in Perl 6
  • that may not be a solution as nice as using the real Perl 5 parser which knows its own idiosyncracies

c:

  • sometimes it does

Larry:

  • that's the point
  • I'd hate to have to have to hack it up again
  • that was a lot of work

Nicholas:

  • it seems to suffer slow bitrot
  • no one seems to try to keep it up to date
  • when people change the parser, they don't change it
  • the question is if people still use it

Larry:

  • the vision is still to have a Perl 5 to Perl 6 translator
  • that's been on hold until we have a viable target to translate to
  • the demand for that will re-arise at some point
  • if it bitrots, it bitrots
  • that doesn't bother me as much as if people felt like ripping it out
  • the way to unbitrot it was roundtripping the test suite and fixing any problems
  • we'd just go back to doing that again until everything was reannotated the way it needs to be
  • the standard for when you know you're storing enough information is being able to reproduce it

c:

  • is there a test target to handle that?

Larry:

  • I used special scripts to do that
  • didn't expect other people to maintain that
  • it's MAD for a reason
  • nobody's tried to write a Perl 5 parser in Perl 6 yet
  • it's theoretically possible

Patrick:

  • depending how much fidelity you need for the actual Perl 5, you can get a pretty good way

Larry:

  • considering how much effort has gone into PPI, you can get a PPI-like result
  • that only takes you so far though

Patrick:

  • maybe a GSoC project next year would be for someone to start hacking something together with PPI
  • it'd be a worthwhile project

Larry:

  • we already have a Perl 5 to Perl 6 translator based on the state of MAD
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.