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)

Saturday January 10, 2009
05:27 PM

Perl 6 Design Minutes for 31 December 2008

[ #38256 ]

The Perl 6 design team met by phone on 31 December 2008. Larry, Patrick, Allison, Jerry, Jesse, Will, and chromatic attended.

Patrick:

  • lots of Rakudo work since the last report
  • now passing 765 more tests than two weeks ago
  • many little things
  • some workarounds to get Perl 6 constructs to work
  • Unicode for example
  • temporarily in place until we get the full grammar
  • loops handle exceptions correctly
  • refactoring and revisiting subroutine parameters and variable handling
  • some of the existing code is starting to break
  • the refactor is going extremely well
  • things are much cleaner
  • re-reading the Synopses, now I also understand Perl 6's metamodel

Larry:

  • you'll have to explain that to me

c:

  • I'd like to get one for Parrot too

Patrick:

  • don't want to merge in my branch until we can do so without regression
  • classes don't quite work now
  • that'd be a serious regression
  • working on that now
  • but the branch has fixed several funny bugs
  • probably can close a dozen RT tickets after the merge
  • next up are the Hague grant refactors
  • added the goal matching syntax from S05
  • really understood now why Larry put that in
  • also need to sit down and write reports
  • don't want to pause my momentum to do that
  • in the next three weeks, I'll write a set of documents to describe PCT
  • "Here's how to start using it."

Jesse:

  • what could help you be or feel more productive

Patrick:

  • 800 passing tests in the past few weeks help
  • things around the house here help
  • running into very few blockers
  • begrudging sleep too

Jerry:

  • the holiday gave me a lot of time to think about Larry's comments on my first draft
  • wrote that down and committed
  • lots of positive changes shaping up pretty well in my mind
  • need some more reviews
  • had a good conversation on #pugs which led to bugfixes and explanations
  • will write documents to help new and inexperienced eyes on the documents
  • all options have a long description name
  • common options have short, single-letter names to allow clustering
  • the metasyntax to pass options to subsystems makes more sense now
  • devoting myself to S19 entirely
  • occasional Parrot builds to make sure nothing's broken
  • small bugfixes when I find the time or need a break

Allison:

  • finished and merged in the IO branch
  • did another branch to make the core IO types subclassable
  • otherwise helping other people meet their milestones
  • working on calling conventions
  • reviewing Reini's install stuff
  • getting the GC stuff moving

Will:

  • working on the deprecation removal milestone
  • trying to rip out as many of those as possible
  • poking Allison and others for feedback
  • I can be more efficient at annoying you if that's helpful
  • trying to get Partcl to run faster
  • no matter what I do, it seems to get slower and slower
  • the spectest takes four times longer in the past ten days
  • getting out of memory errors
  • if I fix the memory leak, that time might improve
  • generating a lot of PMCs
  • lots of memory pressure going on
  • hopefully I can pass along lessons learned to other language developers
  • none of them seem to be having the problems I've had

c:

  • helping remove deprecated features
  • working on some bug fixes
  • made PGE about a third faster last week
  • did some profiling
  • will be working on the incremental GC
  • don't expect many speedups

Larry:

  • returned from visiting relatives in Southern California
  • most of my time spent being an oracle to interpret the specs
  • elaborated on the meaning of the Whatever and hyper-Whatever terms
  • you might distinguish them by their signature

Patrick:

  • I no longer have a question about them

Larry:

  • Daniel Ruoso found out you can't pass a Capture as a parameter and bind it to a regular variable
  • it binds as an item
  • so now you assume the backslash on the argument
  • otherwise hacked in a few specified things that weren't in the grammar
  • fixed a few misparses
  • mostly just keeping everyone on track on IRC
  • don't have to travel until April
  • planning two major projects
  • will do a real DFA to replace the faked-up one with tries
  • want to cut down memory use and execution time
  • also want to move all operators out of the standard grammar into the prelude
  • need to teach the grammar about lexical scopes
  • then take a snapshot of a lexical scope
  • then dump a snapshot of a lexical scope of the prelude so it can start up in that scope
  • then move operator definition parsing into the prelude

Jesse:

  • had very nice lunch and coffee with Chip
  • hearing some ideas about Perl 5 on other runtimes
  • nothing fully baked yet
  • some prodding at PPI with the idea of transforming Perl 5 code into something that Parrot can run

Patrick:

  • the way to handle this is multimethods of the operator that do signature matching?

Larry:

  • the two Whatevers are different types
  • you get Code objects when you derive from them
  • a normal Whatever produces a Code object with a single argument
  • a hyper Whatever produces a Code object with a slurpy argument
  • if you ran a for argument with a slurpy, it'd slurp up all of the arguments
  • if we had a regular way to apply a signature to a set of arguments and report how far it gets, the for loop and this subscripting mechanism could use it
  • at some level, it would do a multi dispatch
  • if you have to introspect the arity of a Signature, you're doing something wrong

Patrick:

  • Rakudo builds closures for all subscripts
  • it can evaluate any Whatevers there then and DTRT

Larry:

  • pre-thunked closures
  • but you want to optimize that

Patrick:

  • we don't want to do subscripting that much anyway
  • if I assign Whatever to a scalar and use that within a subscript, does it work as a term?
  • played with having the parser detect a Whatever
  • it set a flag saying "You have to thunk this."
  • that doesn't help if it's buried

Larry:

  • you may have to put a | in front of a variable to get it to pay attention to slice context
  • like interpolating an argument list with a scalar variable still a scalar
  • unless you explicitly expand that scalar into thunks, it probably shouldn't

c:

  • that way lies Tcl's madness

Patrick:

  • we're trying to put navigational points through Perl 6's madness
  • I need to review the spec
  • I'm happy with how slicing works out in Rakduo right now
  • ranges of strings are weird
  • they don't act intuitively at all
  • they're weird to define in terms of autoincrement and autodecrement string magic
  • should we try to define ranges on strings not in terms of that on .HOW?
  • or ranges on single-character strings?
  • maybe it's really a Buf
  • inside a regular expression, someone wants to match a byte by doing \x0..\xFF
  • that cycles if you treat it as a range
  • unless you do it as a Buf

Larry:

  • the character class should not pay attention to magical increment

Patrick:

  • should it be codepoints?
  • a.._ in a character class is different from a range?
  • it's different and weird and hard to explain
  • people are having trouble in #perl6 understanding what should and shouldn't happen
  • maybe it's trying to be too magical for its own good

Larry:

  • maybe one could take a picture of a range that's numeric
  • specify them numerically, even in hex

Patrick:

  • maybe a range adverb indicating which kind of range you expect

Larry:

  • maybe
  • if it's ambiguous, it requires...

Patrick:

  • it just doesn't seem obvious
  • ranges ought to be obvious
  • it works great in the numeric range

Larry:

  • to use magical autoincrement, you could say a, b, c ... which creates a closure
  • it doesn't tell you where to quit
  • but presumably it's lazy
  • it's a thought
  • not sure it's a good thought

Jerry:

  • ran across a couple of things in S19 development
  • Unicode
  • I'm no expert, being an American
  • there's the encoding of a file you're reading to execute
  • or something typed on the command line to execute via -e
  • then there's setting your standard filehandles for a specific encoding/charset
  • I'm not sure how to address those
  • am I instructing the parser with -e to be Unicode-aware?
  • is this something overall to Perl 6 programs?
  • the same goes for filehandles

Patrick:

  • the encoding specifies how the bytes translate into codepoints
  • the charset maps those to glyphs or graphemes
  • if I use ASCII, my charset only goes up to codepoints 127
  • I use a fixed 8-bit encoding
  • if I use Unicode, my codepoints go up high
  • I have a range of charsets to use
  • people tend to specify an encoding
  • it's ASCII, ISO-8859-1 (Latin-1), or UTF-8
  • most people mean UTF-8 when they say Unicode now
  • that's what web sites tend to use

Jerry:

  • Windows uses UCS-2
  • whether it's long or not, every character takes up that amount of space

Larry:

  • Perl 6 doesn't really care about the encoding
  • we just have to know what it is
  • as soon as things get into the language, everything has "Unicode semantics", whatever that means
  • we have to know how to get into that semantics
  • without metadata, we guess or throw up our hands in despair
  • it comes down to metadata

Jerry:

  • could that fit in a file, directly after a shebang?

Larry:

  • that's probably the least of our worries
  • the filename, the command line, the places where POSIX ought to be shot
  • the problem basically is that POSIX doesn't give you the metadata
  • very weakly, they pretend like locales are sufficient for that purpose

Jerry:

  • for my working draft, should I just say that Perl 6 is a POSIX girl living in a POSIX world?

Larry:

  • assume that you're in a UTF-8 world

Jerry:

  • as far as setting filehandle encodings, that's just pass to Perl 6, the program, and not a specific subcomponent?

Larry:

  • if it needs specification in the program, it's specified to open or as a pragma

Jerry:

  • suppose I'm outputting a text file from the command line
  • I want to tell Parrot that I want a UTF-8 or ASCII encoding

Larry:

  • I don't think you'll go wrong in the future if you assume everything goes into UTF-8, or some BOM-marked UTF-16 or -32
  • let the other people define themselves as departures from that default

Patrick:

  • I agree
  • UTF-8 is well known and capable enough for most things
  • do everything as deltas from that

Larry:

  • this is our chance to do everything right
  • let's not choose the wrong default

Jerry:

  • I'd like to allow intermixed options and values on the command line
  • we can't say perl foo.pl -w

Jesse:

  • how do you differentiate running foo.pl and handing it the -w flag?

Jerry:

  • also not clear on negating an option
  • if the option is :name, you can negate it with :!name
  • that's the history character in certain shells
  • :/name is a workaround
  • Larry suggested :0name

Patrick:

  • Rakudo doesn't implement that yet

Jerry:

  • do we need more than one?
  • should we get rid of them?
  • short arguments are always single character

Jesse:

  • how about prefixing long options with no-

Jerry:

  • not very Perlish

Larry:

  • you might as well use \!
  • at least it's not ambiguous with the rest of the options

Jesse:

  • once you're into long words, you're into readability

Jerry:

  • :no-name looks different to me
  • it's actual Perl 6 syntax
  • that should set the value of something called no-name
  • rather than negating the value

Larry:

  • do what I do
  • change your history operator

Jerry:

  • Perl 6 is rewriting history now?

Patrick:

  • at some point, if you really want negation, :name=false
  • you're there

Larry:

  • shells do not pay attention to history characters without alphanumerics after them
  • maybe you can swap the bang and the colon
  • I wouldn't be surprised if someone didn't invent a shell which did that though

Jerry:

  • this will be the default argument processor for all user-defined programs
  • I want it to work for them too
  • I'm replacing Getopt::Long here
  • I can't do +name=value
  • should evaluate to name = value but false

Larry:

  • I hesitate to propogate the brain damage of the plus and minus to colons

Patrick:

  • I'd prefer not to see it at all

Jerry:

  • bang-dash, bang-double-dash, or bang-colon?

Patrick:

  • as long as I've been doing Unix command lines, those pluses bug me

Larry:

  • using them for beginning and ending sort fields, I can never remember which comes first
  • same with @+ and @- in Perl 5, and it's my language, darnit!
  • I'm pretty okay with the slash
  • we're using them in the sense of HTML tags: the end of a metamarker
  • :/ means the opposite of the beginning of something

Jerry:

  • it seems that zero will work

Larry:

  • it will, but it disappears against the word
  • it's not very visually distinctive
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.