Older blog entries for chromatic (starting at number 471)

Perl 6 Design Minutes for 07 April 2010

The Perl 6 design team met by phone on 07 April 2010. Larry, Allison, Patrick, Jerry, Will, and chromatic attended.

Larry:

  • clarified that object identity from WHICH may not be a mundane value type
  • instead object id's are of type ObjAt to avoid type name collisions.
  • rewrote misleading description of "thunk"
  • made some clarifications of the desired semantics of buffers
  • Buf is primarily a role for dealing compact, unsigned integer arrays in a stringy way
  • but a Buf may be instantiated with other numeric types as well.
  • removed bogus mentions of Buf8, Buf16, Buf32; only the native buf types are sized that way
  • STD now actually parses the insides of tr/// and carps about malformed ranges
  • labels are now stored symbolically as constants rather than types
  • so no coercion routine is added for the name, so it doesn't collide with the function namespace
  • labels are now constants with a unique label type to prevent confusion with ordinary constants
  • module subcompilation now reports the name of the file it's compiling
  • improved various error messages regarding foreach, !!op, $!{}, EOF, and missing punctuation after blocks

Allison:

  • worked on line number reporting in HLLs
  • no ticket to go on, no good examples
  • didn't make much progress, but didn't have much time
  • sounds like Christoph and chromatic are working on it
  • might look at TT #389

c:

  • you're welcome to it!
  • let me know if you have questions; it's close

Allison:

  • no travel plans for the next couple of months
  • should have a lot more Parrot time
  • probably time to consider another big project
  • probably GC related

Patrick:

  • updated the progress graph last night
  • up to date as of yesterday
  • Rakudo's passing over 30,000 tests, which is great

Jerry:

  • we have 27 mentors signed up for GSoC
  • a dozen student proposals have come in
  • the admission period ends Friday, so I expect at least a handful more
  • looks like a good year for proposals
  • trying to keep on track of Rakudo development
  • trying to be a go-between for Rakudo and Parrot
  • seems like it's helping Rakudo as Parrot addresses issues that come up

c:

  • Vasily and I fixed the Rakudo performance regression
  • we're going to experiment with immutable strings in a branch
  • expect some notable performance improvements there
  • also worked on the plan to fix line number reporting
  • need a test harness to help identify problems and avoid regressions
  • learned my lesson last time I worked on that....

Larry:

  • I cringe every time I hear "line numbers"
  • I like what Clang does about highlighting the arguments to functions
  • it'd be nice if we can do similar

c:

  • that'd require more changes to Parrot, but it's doable

Larry:

  • I just want people to bear it in mind

Allison:

  • there's no reason we can't have richer annotations
  • our first step is making sure the information we provide them (or they ask for) is accurate
  • is it time to have another big development meeting for Parrot?
  • the release is coming up

Jerry:

  • sounds good

Syndicated 2010-04-09 22:07:25 from pudge

Perl 6 Design Minutes for 31 March 2010

The Perl 6 design team met by phone on 31 March 2010. Larry, Allison, Patrick, Will, and chromatic attended.

Larry:

  • in SpecLand, made it clear that the brackets in pairs are not related to subscripts, but follow the corresponding fatarrow semantics
  • in particular, name extenders are just strings or list of strings, properly indicated by : or:() in most cases (this includes all operator names).
  • we now forbid name extension using the:{} keyless adverbial syntax
  • we don't need that because name extensions are really only supposed to use values, not closures
  • if we really, really, need to supply a closure as part of a name extension, we can put it in parens, as in:({}).
  • we can use that notation for supplying a closure as a first argument to a method without requiring a space between the colon and the curly, as in.map:{...}
  • people keep writing that and expecting it to work, so I thought it would be good to make it work
  • the colon is still require before the curlies, or it's a hash subscript
  • we now capitalize the Junction type again because I couldn't get people to stop capitalizing it
  • also, the native aspect of junctions is not their most salient difference from normal types
  • conjectured an Each type that autothreads lists like junctions, but is serial and lazy, and is used for its values in list context, not boolean context
  • in S05, did much cleanup of cursor semantics to reflect what STD and Rakudo actually do these days
  • retargeted the <&foo> regex assertion form to explicitly call a routine, just like always calls a method
  • a bare <foo> assertion now prefers to call a lexical function if visible, or calls as a method in current grammar if not
  • this is a compile-time distinction, not a fallback at run time
  • in code hacking, continued debugging of the backtracking transactions I added last week
  • gimme5 now sets the correct xact on || alternations
  • deleted more of the transactions that are no longer needed when building match results that are no longer hypothetical
  • a LazyMap now always passes through the first result regardless of its associated commit transaction state
  • that's because the first cursor in a lazy list always represents the current match hypothesis, not a future hypothesis that needs pruning
  • STD now parses to the new specs regarding name extensions not including:{}
  • now allow colon form of method arguments to omit the space if the next char is a left curly, which is what people seem to expect anyway
  • note that this makes the closure the first argument, not the only argument
  • STD now gives more useful error messages when user says things like 'if' as a function call (if(...) {...}), or a statement control like 'given' where one isn't expected ($x = given {...})
  • STD now properly objects to unrecognized internal regex modifiers such as:has
  • improved the message on adverbs with empty angles (:foo<>) to list some better options
  • the problem arises when people think that the angles produce a null string, when in fact they produce a Nil list
  • other malformed pairs are also better diagnosed, such as:! not followed by an identifier, or pairs with duplicate arguments
  • added a new rule that traps all warnings and errors
  • STD now uses suppose in place of custom try blocks in diagnosing such things as two terms in a row, or unexpected infixes
  • also uses suppose to soften the warning about backtick-less embedded comments by not complaining if the supposed comment eats the whole line anyway
  • put in some code to de-dup identical warnings
  • STD now includes the signature's return type (after -->) in the check for redundant 'of' types
  • did various tiny speed tweaks, fossil removals
  • started playing with how to mark sink context and pure operations
  • split out Actions.pm from viv so that it can be used by other STD-based AST builders
  • this is in preparation for propagating attributes up and down the AST such as sink context and purity
  • eventually this will result in "Useless use of" messages where appropriate, not to mention the ability to do constant folding

Allison:

  • worked on the compact_pool() function
  • split it into a series of smaller functions
  • it could use more work, but it's an improvement
  • found one possible bug
  • worked on some documentation, especially for PMC attributes

Patrick:

  • reviewed some patches to add variable handling in regexes
  • they need some changes, but the overall concept is good
  • reviewed a few other messages
  • most of my time is going toward my family
  • hope to get more time to be more active in the next couple of days, but I can't promise that yet

Will:

  • talked to Jonathan about Rakudo Star priorities
  • he's very pleased with the memory fixes
  • the next thing on his list is getting good line numbers in reported errors
  • closing tickets
  • working to get rid of the last recursive Makefile
  • may wait until after the new release, when we remove a lot of deprecated things
  • practicing my NQP skills by working on Tcl again

c:

  • worked on the Rakudo memory problems
  • Vasily and I fixed the big memory use problem
  • still some performance tuning to do there
  • wrote up tasklists for two other important performance pieces
  • will work on line numbers after we get performance back

Syndicated 2010-04-05 04:42:21 from pudge

Perl 6 Design Minutes for 24 March 2010

The Perl 6 design team met by phone on 17 March 2010. Larry, Allison, Patrick, Jerry, and chromatic attended.

Larry:

  • clarified that nearly all normal operators autothread, including === and eqv
  • specced the \| parcel parameter syntax
  • documented that R metaoperator does not change associativity
  • clarified that trusts traits do not extend to child classes, and moritz++ specced it
  • in STD, we now suppress spurious errors from badinfix lookahead (and react more accurately to bogus terms)
  • now put the error location pointer before a bad infix, not after
  • we no longer assume missing block punctuation is always semi or comma, but keep them as a suggestion
  • missing punctuation message now points before any whitespace
  • awesomified error message about no unspace in regexes to explain how to quote space or #
  • pass single coeff to radcalc to make:16<.BABEFACE> easier to allow
  • gives better message on missing ** part of radix literals
  • worked around fact that:: doesn't correctly suppress relexing of multi tokens
  • scrapped the workaround and did a complete refactor of commit point transactions; no longer uses exceptions to commit
  • instead, it walks the current commit chain to the proper commit target to disable choosers that should not choose any more options
  • commit chain aliasing and forking to make a cactus stack is now managed by cursors, mostly transparently
  • weighed in on the subject of stability domains (or lack thereof) in Rakudo *

Patrick:

  • still working on personal issues, but hope to have some resolution by Saturday
  • haven't had much time to work on Rakudo, but show up on #perl6 to give advice sometimes
  • read Larry's email to the list; it was very helpful

Allison:

  • met some interesting people at SxSW doing open source education technology
  • reviewing the roadmap
  • the GC sounds like the most important thing to work on next
  • trying to catch up from having spotty network access lately

Jerry:

  • the other Rakudo developers have started weekly planning meetings
  • Jonathan has taken the lead
  • plenty of contributors are in the meeting and offered to take on new tasks
  • Rakudo Star may have a smaller scope, but it'll still come out in Q2
  • it's nice to see that the Rakudo community continues even as Patrick has an extended absence
  • still some Parrot issues affecting Rakudo
  • PaFo hopes to have its 501(c)3 application done by summer

c:

  • bugfixes
  • minor optimizations
  • helped merge the PCC refactor branch
  • working on Rakudo memory issues (long analysis follows, partly Parrot GC and partly NQP behavior)

Syndicated 2010-03-31 21:20:11 from pudge

Perl 6 Design Minutes for 17 March 2010

The Perl 6 design team met by phone on 17 March 2010. Larry, Allison, and chromatic attended.

Larry:

  • documented which ops don't autoclose with *, including assignment
  • conjectured a generalization of the closure-calling context (value-only lists) that subscripts enforce
  • this generalization might allow the autoclosing of some of the current exceptions such as 1..*
  • added Z to go with X metaop; documented that X and Z desugar to higher-order methods, crosswith and zipwith
  • speculate about how to zip/cross dwimmily with non-identical ops; possibly creating a real use case for surreal precedence
  • however, for now sticking with conservative approach of requiring parens on differing list infixes
  • hacking on viv again
  • trying to get that bootstrapped, so I don't have to use gimme5
  • unbitrotted viv --p6 so it exactly reproduces STD.pm again
  • various developments with viv --p5 toward replacing gimme5
  • should make it easier to emit other parsers eventually
  • may emit Rakudo code someday
  • it's a race to see whether STD can do that before the current Rakudo parser resyncs with STD
  • anyone who wants to bootstrap on some other VM might want to use that
  • mostly tired of writing in the subset of Perl 6 that gimme5 understands
  • mostly hacking on better error messages, as always
  • catches use of non-$ hard reference
  • STD now read minds of people who forget that ".meth I" is a two-terms-in-a-row error
  • now produces good messages on attempts to use y/// or tr/a-z/A-Z/ syntax
  • now reports "previous line missing its semicolon" in the unexpected block checker
  • ambiguous use of. probably indicates p5-think, not missing method parens
  • STD now has in a q-like sublanguage for tr/// string parsing
  • implements the MONKEY_TYPING constraint on augment and supersede declarators
  • various random cleanups and bugfixes
  • added Z metaoperator
  • lots of works on regex flags to unify them into a single %*RX structure at parse time
  • makes it easier to do all of the lexical scoping in parallel
  • can now remap run-time's $?FOO variables to parser's $*FOO dynamic variables
  • otherwise, bugfixes, spec cleanup, and test cleanup

Allison:

  • working on tickets
  • updating the Parrot roadmap to match our Rakudo Star support plan
  • working on the mini-language in NQP for a class assignment
  • found a new Pynie developer who saw my talk at Pycon
  • may be doing a Summer of Code project in it
  • answering lots of questions on IRC and helping out with ideas

c:

  • working on lots of little bugs for Parrot
  • should have the method namespace bug fixed, with help from Andrew
  • exploring some optimization possibilities
  • should be able to merge the PCC refactor shortly
  • Allison, see TT #1511

Allison:

  • we need to add a new opcode, something like set_want
  • call it to update the CallContext with expected return information

c:

  • works a bit like Perl 5 there
  • we could use that information for MMD, that'd be interesting

Syndicated 2010-03-31 21:17:44 from pudge

Perl 6 Design Minutes for 10 March 2010

The Perl 6 design team met by phone on 10 March 2010. Larry, Allison, Patrick, Jerry, Will, and chromatic attended.

Larry:

  • scrapped @array[%100_000] modular subscript notation in favor of a more general mapping closure
  • put back:s file test, removed:z,:T,:B,:M,:A,:C
  • clarified that these are defined on IO, not on strings
  • deprecated the {*} and #= reduction stub notations in grammars
  • attributive parameters now default to is copy binding; but easy for an attribute to override this with is ref
  • tried to move operator definitions to CORE; found one approach that doesn't work and abandoned it
  • STD now allows _ in numeric variable names like $10_000.
  • factored out curlycheck so we can use it on any trailing curly
  • postcircumfix:<{ }> now uses curlycheck for consistency
  • STD now speculates missing semicolon when two terms in a row are separated by at least one newline
  • removed mention of *.notdef in favor of:!defined
  • still need to remove it from the spec though
  • ambiguously rebound outer lexicals now detected even if ambiguity propagates from an inner scope
  • reports more pertinent information in that case so the difficulty can be understood by the user
  • various random debugger refactorings
  • properly scope dynamic package names for block-oriented packages to include name declaration
  • package_def of; packages now eats statementlist itself to stay inside proper scope
  • much work on package qualified names
  • correctly parse <$x> part of FOO::<$x> as part of variable name
  • correctly follow symbolically indirected OUTER:: links
  • find_top_pkg no longer cares if name ends in::
  • STD now figures out whether initial components lead to package or lexical scope
  • no longer scans outer scopes on qualified names
  • now handles FOO::<$x> form in check_variable
  • no longer checks for @/% mistakes on qualified names

Patrick:

  • haven't had much hacking time lately due to personal demands
  • should be able to hack again later today and the rest of the week

Allison:

  • worked on the PCC refactor
  • that went well; the hackathon was good
  • it didn't pull in a lot of people, but me dedicating the weekend to it was helpful
  • also pulled in a few other people willing to try things out
  • we made good progress
  • our initial task is over
  • we're in the nebulous stage of debugging
  • need to review a change in optional return values
  • also worked on Ubuntu and Debian packaging
  • Parrot 2.0 is in both
  • it'll be in April's Lucid Lynx Ubuntu

Jerry:

  • Google Summer of Code is starting
  • TPF and PaFo are teaming up this year
  • we're working on the organization application
  • Jonathan Leto is leading things and I'm backing him up
  • we're looking for mentors and ideas; see the TPF GSoC wiki page

Will:

  • started going through Rakudo's RT queue
  • did more Parrot building and cleanup work
  • no longer invoking Perl to invoke the C compiler for each build file
  • shaved some time off the build
  • eliminated one recursive make, leaving two
  • then I can remove more things from config

c:

  • worked on a bunch of branches
  • fixed a couple of bugs
  • hope to get more bug fixing time in

Syndicated 2010-03-23 01:37:49 from pudge

Perl 6 Design Minutes for 03 March 2010

The Perl 6 design team met by phone on 03 March 2010. Larry, Allison, Patrick, Jerry, Will, and chromatic attended.

Larry:

  • noted how lastcall allows nextsame control of nested dispatchers
  • reserved the final paren-based shape declaration syntax without committing to it meaning anything
  • clarified that Nil itself is defined but likes to produce undefined values when indexed
  • added some clarifications of how the series operator deals with type information
  • clarified that Pair.ACCEPTS uses "so" and "not" semantics so:s returns True or False
  • removed the 1/2 and +2-3i literal forms, now rely on angle forms <1/2> and <+2-3i> for literals, and the bare forms now rely on constant folding rather than a fragile special syntax
  • in STD, made undeclared variables more fatal
  • STD now tries to be helpful if the user makes the typical P5-ish variant-sigil mistake on arrays and hashes
  • also improved error message on the -{}> kind of mistake that P5 programmers will make
  • my $a, $b now gives better message
  • STD now reserves the () shape syntax per current spec
  • fixed regression on indirect method knowing that method name is not bound early
  • moved unexpected-!! panic from infixstoppers to infix:<!!> for better extensibility
  • so a user's infix definition isn't ignored if it starts with !!
  • you can define user operators starting with that, and it only complains for the right reasons now
  • STD now gives an accurate message when a prefix is missing its term
  • removed deprecated rational and complex literal forms from STD
  • much preliminary work for moving operator defs to CORE.setting, not yet checked in
  • only blocker is not being in Copenhagen

Patrick:

  • Jonathan, Carl, Moritz, and Martin will be there
  • I proposed a panel discussion instead of my talk on Tuesday afternoon at 3 pm
  • I'll be online then
  • can't make it due to sudden personal reasons
  • will be online quite a bit the next few days though
  • can participate in the hackathon remotely
  • worked mostly on helping other people get their tasks done
  • updated the parser to handle more operator conditions
  • working toward enabling user-defined operators
  • quite a few new people submitted patches
  • several were non-trivial
  • one patch put grammars, regexes, and tokens back in Rakudo
  • that's not trivial and it worked pretty well
  • I'm reviewing patches and making comments
  • lots of good progress
  • expect lots more during the hackathon

Allison:

  • going to work on code stuff this weekend instead of traveling
  • had a very productive trip
  • glad to be home to get work done
  • working on the PCC branch this week
  • should be, fingers crossed, small and easy to get done
  • want to avoid creature feeping
  • get the re-ordering through and move on

Jerry:

  • having trouble building Rakudo on Windows
  • have time to debug with people online
  • this is preventing me from talking to Patrick about and working on S19

Patrick:

  • we can work on that tomorrow

Will:

  • saw that problem on p6c as well
  • fixed a Parrot bug for Patrick related to STRING indices
  • we have some speed fixes on top of that
  • still working on the build cleanup
  • hope to merge to trunk in the next two or three days

c:

  • haven't had and won't have much time
  • fixed a few bugs
  • working on helping other people get stuff done

Jerry:

  • is there a hackathon or meeting time available after OSCON?

Allison:

  • recommend the weekend after

Patrick:

  • there'd have to be a hackathon for me to get TPF sponsorship

Jerry:

  • the pace of spec changes has picked up
  • any ideas what's driving that?
  • is it different from before?
  • was the end-of-year lull the same as before?

Larry:

  • everyone did take a break over Christmas
  • most of the changes are still simplifications
  • or responses to implementation issues
  • dealing with inconsistencies

Patrick:

  • a lot of implementation issues have come up over the past three weeks

Larry:

  • ng has flushed out a lot of design issues

Jerry:

  • that's great!

Patrick:

  • that's great for Larry, but I have a deadline!

Allison:

  • remember, it's a stake in the ground
  • "This is a release of Perl 6 you can use NOW!"

Patrick:

  • we're driving the spec with regard to lists and arrays

Larry:

  • they essentially have the same structure
  • they need separate typology
  • you need to know whether to clone an iterator
  • that's the only reason you have to know

Patrick:

  • did you see my comment about binding being the distinguishing feature?

Larry:

  • I think about that in inside out terms
  • not sure I can put that in words yet
  • had a conversation with Solomon about the FP view of iterators and arrays
  • that's some of my thinking
  • do we promise to hold a pointer fixed, or go on to the next thing?
  • whether that thing is persistent is mostly the bailiwick of the GC, from the standpoint of the language

Patrick:

  • I wasn't sure how that applied to my specific context
  • maybe I should work up a description of words or implementation
  • some lists I want to keep around reified elements
  • some lists I don't
  • the distinction is whether it's bound to any variable

Larry:

  • may depend on what it's bound to
  • we might make the keeparound promise only for binding to @

Patrick:

  • I came up with binding to $ examples
  • we can get laziness but eat up a ton of memory
  • if we throw things away when iterating, we get more things wrong

Larry:

  • it's a matter of tracking
  • are we bound to something that tells the GC to keep the rest of the list around?
  • that's the FP view

Patrick:

  • that's not just a GC view
  • it's how people refer to them
  • my GC is taken care of by my virtual machine anyway
  • it's about reachability from the HLL
  • or did you see it disappear

Larry:

  • that's whether you have a reference to it

Patrick:

  • how do you know whether to keep a reference to it?
  • I've produced this element
  • can I send it back to the caller
  • or do I need to keep it around so something else can get to it
  • if the iterator itself is bound, you keep the reference
  • if it's not bound, you can return it but not keep the reference around
  • I'll write up my thoughts

Jerry:

  • will these changes settle down after Rakudo *?
  • are they a precursor to that release?
  • will they continue afterward?
  • will Rakudo * go stale?
  • that's a tough one to answer

Patrick:

  • I can't guarantee stability at this point
  • we want a useful release
  • we'd like not to have any deprecations after that point
  • given how implementations and applications drive implementations
  • Rakudo * exists to encourage people to develop applications
  • we've never made that stability an explicit goal for Rakudo *
  • we'll probably institute deprecation cycles when it comes out
  • we don't want to change the world out from under people
  • it doesn't represent a spec freeze
  • thinking of a separate distribution release from the compiler release
  • a three month stability cycle of releases for Rakudo *
  • a different point of view
  • any distribution release doesn't have to be tied to the newest compiler release
  • I see Rakudo * as a series of releases, not a single release

Syndicated 2010-03-13 23:19:22 from pudge

Perl 6 Design Minutes for 24 February 2010

The Perl 6 design team met by phone on 24 February 2010. Larry, Allison, Patrick, and chromatic attended.

Larry:

  • my work last week was almost entirely responsive to various discussions on irc and p6l, even when it doesn't seem like it
  • clarified that LEAVE-style phasers do not trip till after an exception is handled (and not resumed)
  • the implementation of take is specifically before unwinding even if implemented with a control exception
  • simplified series operator by moving generator function to the left side (any function on right side will now be a limiting conditional)
  • a * is no longer required to intuit the series on the left; the absence of generator before the... operator is sufficient
  • first argument on the right of... is now always a limiter argument
  • for convenience and consistency, added a new...^ form to exclude a literal limiter from the generated series
  • unlike ranges, however, there is no leading exclusion ^... or ^...^
  • series is a list associative list infix, and each... pays attention only the portion of the list immediately to its left (plus the limit from the right)
  • an "impossible" limit can terminate a monotonic intuited series even if the limit can never match exactly
  • variables now default to a type of Any, and must explicitly declare Mu or Junction type to hold junctions
  • this is to reduce pressure to duplicate many functions like == with Mu arguments; most of our failure values should be derived from Any in any case
  • a Mu result is more indicative of a major malfunction now, and is caught at first assignment to an Any variable
  • Instant/Duration types are biased away from Num and towards Rat/FatRat semantics
  • Instant is now completely opaque; we no longer pretend to be the same as TAI, numerically speaking
  • Instants are now considered a more basic type than epochs, which are just particular named instants
  • all culturally aware time can be based on calculations involving instants and durations
  • list associative operators now treat non-matching op names as non-associative rather than right-associative, forcing parens
  • Whatever semantics now autocurry any prefix, postfix, or infix operator that doesn't explicitly declare that it handles whateverness itself
  • WhateverCode objects now take a signature to keep clear how many args are not yet curried
  • so *+* is now more like WhateverCode:($x,$y)
  • autocurrying is still transitive so multiple ops can curry themselves around a *
  • added semilists as Slicel type to go with Parcel
  • this allows us to bind @array[1,2,3] differently from @array[1,2,3;4,5,6], for instance
  • the Matcher type now excludes Bool arguments to prevent accidental binding to outer $_ when closure is needed
  • when and ~~ will now warn of always/never matching on direct use of True or False names as matcher
  • STD generalizes \w lookahead to all twigils now
  • STD now treats non-matching list associatives as non-associative
  • things like 1 min 2 max 3 are now illegal, and require parenthesization for clarity
  • STD now treat invocant colon as just a comma variant so it does not fall afoul of the list associativity change
  • CORE now recognizes the TrigBase enumeration

Patrick:

  • first release of the new branch of Rakudo last week
  • passing ~25,000 tests at the release
  • thanks to optimizations from chromatic, Jonathan, and Vasily, Rakudo has a lot of speed improvements
  • in particular, it can run those tests in under 10 minutes, non-parallel, depending on your hardware
  • older releases took 25 minutes and more
  • the regex tests will slow things down
  • ultimately, we're seeing a big speed improvement over the past releases
  • cleaned up lists and slices, now they work pretty well
  • worked with Solomon Foster and others to speed up trig operations
  • fixed a bug related to lexicals declared in classes
  • fixed the long-standing and often recurring problem with curlies ending a line/statement causing the next statement to be a statement modifier
  • easy to fix in the new grammar
  • that was nice
  • made an initial implementation of the sort method
  • it's very short, because Parrot provides one
  • there are a few bugs in Rakudo there still, but I'll get them
  • planning for the Copenhagen hackathon on March 5 - 9
  • Jonathan and I have been updating the Rakudo roadmap
  • will check that in in the next couple of hours
  • so far, every time we review it, we surprise ourselves at how much we've accomplished
  • we're meeting all of the top priority goals without making any heroic efforts
  • we'll put those goals in as well as timelines
  • most of the major tasks from previous roadmaps have happened

Allison:

  • working on Python this week
  • attended Python VM summit, Python language summit, and PyCon
  • Parrot's on good track to support what Python needs
  • useful to make community connections
  • when I reviewed Pynie, I was surprised to see how close it is to supporting the whole Python syntax
  • some of those features are big, like objects
  • but we should support them soon
  • Debian packages delayed by the absence of a sponsor
  • they should go into Debian soon though
  • I put in a request for feature-freeze exception for Ubuntu 10.4
  • Parrot 2.0 should go in
  • haven't made any commits to the PCC branch
  • that'll be a top priority for next week

c:

  • fixed a Parrot GC bug for last week's Rakudo release
  • made some optimizations in Rakudo and Parrot
  • helped Jonathan find a few more
  • fixed a long-standing math MMD bug
  • still working on HLL subclassing; more tricky than you think
  • may be some conflicting design goals about vtable overriding and MMD

Allison:

  • Patrick, do we need an explicit deprecation for old PGE and NQP?

Patrick:

  • I think Will already added one for NQP
  • we can add one for PGE if we need
  • they don't necessarily have to disappear at the next release
  • but no one's planning to maintain them

Allison:

  • no reason not to put in the notice now
  • we don't have to remove them at the earliest possible date

Syndicated 2010-03-02 05:12:09 from pudge

Perl 6 Design Minutes for 17 February 2010

The Perl 6 design team met by phone on 17 February 2010. Larry, Allison, Patrick, and chromatic attended.

Larry:

  • much work clarifying relationship of parcels to everything else (<a b>, assignment, arguments, captures, parameters, signatures, gather/take, and loop returns)
  • we now list all scope declarators in one spot
  • conjectured some ideas on how to handle the allomorphism of literals more dwimmily
  • had already specced some of this behavior for literals found inside qw angles.
  • literals that exceed a Rat64's denominator automatically keep the string form around for coercion to other types
  • clarified that anon declarator allows a name but simply doesn't install it in the symbol table
  • respecced the trig functions to use a pragma to imported fast curried functions
  • still uses enum second argument for the general case (rakudo is still stuck on slow strings there)
  • on iterators, renamed.getobj to.getarg since arguments are the typical positional/slicey usage
  • signatures are never bound against parcels anymore, only against captures
  • we now use "argument" as a technical term meaning either a real parcel or an object that can be used independent of context as an argument
  • anything that would stay discrete when bound to a positional, basically
  • return, take, and loop return objects are also arguments in that sense
  • they all return either a parcel or anything that can stand on its own as an argument
  • STD now adds a shortname alias on adverbialized names, ignores collisions on the shortname for now, which is okay for multis
  • STD now complains about longname (adverbialized) collisions
  • STD no longer carps about duplicate anonymous routine declarations
  • made the undeclared type message the same for parameters as for other declarations
  • clarify the error message about anonymous variables
  • no longer report a $) variable error where ) is the $*GOAL
  • add WHAT etc. to list of functions that require an argument

Allison:

  • working on two HLL implementations
  • one is Pynie, the other is Camle
  • nothing to do with Caml or ML
  • I've noticed huge improvements in NQP-rx from the previous NQP
  • can't say which feature improvements make the most difference, but I'll migrate Pynie pretty soon to take advantage of the new version
  • continuing to shepherd Debian and Ubuntu packages

Patrick:

  • essentially all I did was unify things
  • previously it had been two or three tools
  • it's just one

Allison:

  • even the syntax seems more regular

Patrick:

  • there are more pieces available in NQP-rx
  • Rakudo's -ng is now master
  • the old master is now -alpha
  • we took a big hit on spectests, but they seem to be coming back quickly
  • 5000 tests pass on trunk now
  • we have 16k or 17k we haven't re-enabled; they make the spectest slower
  • Jonathan thinks we may pass 25,000 tests now
  • that's great, considering where we were a week ago
  • I redid Rakudo's container, value, and assignment module
  • previously variables held values directly
  • now they contain reference PMCs
  • that cleaned up many things
  • we use more PMCs, but now we don't clone and copy as much
  • we move references around more
  • seems closer to how Perl 6 handles things
  • was much easier than I expected
  • updated the NQP-rx regex engine and built in constant types
  • handles Unicode character names
  • reclaims plenty of tests
  • answered lots of questions for people adding things into Rakudo
  • prioritizing other people writing code over writing code
  • increases our developer pool; seems to be working well
  • new release of Rakudo planned for tomorrow
  • don't know how many tests we'll pass, but it should go well
  • plan to put in a few things like sort and grammars over the next week
  • then I'll review the RT queue to find bugs and (hopefully) closeable bugs

c:

  • working on GC tuning
  • also working on String PMC tuning
  • working on built-in types and their behavior as classes and parent classes
  • the multidispatch bugs in particular I hope to solve

Syndicated 2010-02-25 00:27:32 from pudge

Perl 6 Design Minutes for 10 February 2010

The Perl 6 design team met by phone on 10 February 2010. Larry, Patrick, Will, Jerry, and chromatic attended.

Will:

  • working on simplifying Parrot's build process
  • trying to remove an invocation of Perl 5 for every compilation
  • it's old and a waste of many things
  • hope to have that removed by the end of the week

Jerry:

  • the new #ps time should help me to attend
  • looking forward to a Parrot/Rakudo workshop, possibly at YAPC::NA
  • already working on artwork
  • would like to get the command-line done for Rakudo *
  • lacking tuits
  • need some time with Patrick over the next few days
  • weekends should free up after next week

Larry:

  • refined the specified semantics of bitwise operators
  • changed ugly **() special form to prefix:<||> by analogy to prefix:<|>, and relationship of ** to *.
  • STD now accepts prefix || for slice interpolation
  • deleted old p5=> that masak++ noticed
  • added explicit copyright notices to STD files
  • spruced up error message on -> in postfix position (either pointy block or Perl 5 method dereference)
  • mostly just served as Chief Resident Oracle on IRC

Patrick:

  • had a nice vacation in Florida
  • didn't have as much hacking time, due to plane delays
  • should get back to coding later today
  • working on the Rakudo hackathon in Copenhagen on March 6 and 7
  • core hackers session on 8th and 9th there
  • looking forward to that

c:

  • fixed a couple of bugs
  • did a bit of optimization
  • wrote out a GC optimization plan
  • wrote plan for a sweep free GC
  • think we can get those both going in the next week

Jerry:

  • noticing a lot of new branches and removals and new things in Parrot recently
  • are these following the roadmap?
  • are people going off on their own?

Will:

  • the deprecation stuff is all documented and seems reasonable
  • Andrew's discussion today is new stuff, but a reasonable discussion to have
  • I'm working on cleanup stuff
  • having a roadmap and trying to force people to stick to it is always... impossible
  • people will work on what they find shiny or what blocks them
  • if it's not on the roadmap, it's okay if it's not hurting the project

Jerry:

  • we've changed our deprecation cycle
  • was that change enough to unstick people to do something?
  • was it beneficial to our users and our core developers?

Will:

  • definitely a positive

Jerry:

  • still not a lot of mailing list discussion
  • how is Parrot meeting Rakudo's goals for the Rakudo * release?

Patrick:

  • as it stands today, it's adequate for what we need
  • if it weren't, you'd be hearing about it
  • the next thing for us is performance
  • any performance improvements are welcome
  • the biggest thing there is GC, and that's an area of focus
  • no big pushes I need to make lately
  • have noticed Andrew's desire to remove some Parrot features
  • they're useful from an HLL perspective
  • I do worry about changes to core Parrot divorced from HLL concerns
  • I don't know who's going to be the traffic cop for those changes
  • I don't have time to do it

Will:

  • based on the discussion in channel today
  • making Parrot leaner, faster, smaller may not necessarily jive with keeping the features as they exist now
  • he's not trying to remove features
  • he's trying to get the same effect with a faster Parrot

Patrick:

  • I agree with those motives

Will:

  • even if we do rewrite things, they have to work more or less as they do right now

Patrick:

  • reviewing the roadmap from December....
  • GC work is happening
  • no one seems to work on subroutine leave semantics
  • Stephen Weeks is the best one to look at that
  • performance is our biggest need right now
  • but the -ng branch performs better for various reasons
  • has anyone built -ng against the latest Parrot?

Will:

  • I think Vasily has checked his branches against Rakudo
  • not sure if that was against -ng

Patrick:

  • master and -ng are pretty close together in terms of the Parrot core
  • we'll make -ng the master branch very soon
  • unless I get bogged down on iterators again

Syndicated 2010-02-19 03:31:59 from pudge

Perl 6 Design Minutes for 03 February 2010

The Perl 6 design team met by phone on 03 February 2010. Larry, Patrick, and chromatic attended.

Larry:

  • more cleanup of iteration semantics
  • no longer signal end with Nil, but with special EMPTY failure
  • this can support either unthrown or thrown exception styles
  • added in batching iterator interface
  • proposed new E operator for efficient list end detection; gathering feedback
  • detangling of sigils from contexts; for example, @ no longer implies flattening
  • coercions all defined to take parcels so they don't flatten accidentally
  • more cleanup of various types (captures,lists) that should be considered parcels
  • forcibly amputated the @@ sigil; have fixed up most of the bloody stumps
  • instead of *@@ parameters, we now have a ** slice marker on parameters
  • removed references to [;] reduction since it wouldn't work (because of return parcel embedding)
  • new **() interpolator instead
  • clarified that function calls in a list are called eagerly, but their results are potentially lazy
  • (also mentioned ways to make the call lazy too)
  • renamed iterator methods for more clarity, removing contradictory usages of "item"
  • iterators now iterated with get, getobj, batch, and batchobj
  • specced that a missing maximum allows the iterator to decide batch size.
  • get and getobj must be atomic under multi-threading so message queues work (but maybe that's backwards, and push should be atomic)
  • slice now defined to turn subparcels into Seq objects
  • spec that most of the work of flat and slice are done by binding to *@ or **@
  • new flat operator detangles flattening semantics from normal unmarked list semantics
  • for all specced functions, *@@ parameters changed to **@
  • multiple dimensions now defined in terms of nested parcels, not feeds, to avoid implying multithreading on every subscript
  • either range or series iterator now autotruncates in a subscript
  • no autotruncation on left end of a subscript anymore
  • did some cleanup of feeds; more is needed to have clearer target semantics
  • feeds no longer take a whatever target with implicit semantics; just use an explicit target
  • not much hacking, but edited tests to change @@ to something else appropriate
  • tracked name changes in CORE
  • wrote a long screed on why Perl 6 has one-pass parsing and why typenames must be pre-declared

Patrick:

  • working on interators and lists in the -ng branch
  • brought up a few issues with Larry as appropriate
  • took issue with others, as appropriate
  • happy with our progress there
  • expect to make this branch the new master in the next day or so
  • will be some regressions, but it's time to do it
  • there's no development taking place on other branches, so let's commit and do it
  • people will be comfortable about doing their own work and not having it lost on some other branch

c:

  • looking into GC tuning and ideas
  • still working on getting methods out of namespaces
  • need four uninterrupted hours

Syndicated 2010-02-18 04:58:35 from pudge

462 older 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!