Older blog entries for chromatic (starting at number 465)

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

Perl 6 Design Minutes for 27 January 2010

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

Larry:

  • tweaked definition of when a series operator is considered infinite
  • nailed down more list assignment semantics with respect to interators
  • clarified how ($a, $b, @a) = 1..* works
  • KeyWeight deletion criterion kept consistent with other KeyHash types
  • negative keyweights are allowed to fail at pick time
  • "mostly eager" now assumes unknown closure generators are probably infinite
  • random whackage on List, Seq, Parcel, Capture, Iterator, Nil etc.
  • List is now simply the iterator role, and doesn't do Positional
  • Seq takes over Positional duties for reified (or reifiable) value lists
  • think of Seq now as a constant Array (but also lazy like Array)
  • Iterable now means you can ask for an iterator, but doesn't do List
  • Array, Seq, etc do Iterable, but not List
  • only actual iterators do List
  • Nil is defined as a suitable sentinel for both list and slice iterators
  • continued to rethink that with pmichaud++ et al
  • we'll probably end up with an EMPTY special exception object to be the iterator sentinal
  • proposed an E operator to go with it to make testing for EMPTY across multiple iterators very fast
  • other than that, mostly just bug whacking, no major refactors
  • still thinking about doing real LTM for STD
  • did lazify Cursor's fnum->fate translations for shorter LTM candidates in preparation for smarter LTM
  • we don't need special objects for the items that get matches
  • we do need to think more about the hyper cases
  • how to do list processing using balanced trees of delegated sub refs
  • don't want to build in serial assumptions where we don't need them

Patrick:

  • made the Rakudo #25 release last week
  • it was much easier to make the release than explain what we were planning to do instead
  • also working on iterators and lists
  • NG branch is blocking on that
  • worked on the design in my head for three weeks
  • realized that we were doing iterators completely wrong the other night
  • Larry's making some useful changes to the spec in response
  • there are still some unclear spots in the spec
  • we need an implementation to figure those out
  • my biggest question is the relationship between List, Parcel, Itertor, and array
  • as of this morning, I think I have it
  • that code seems to be working and efficient
  • so far it's working well
  • continuing with that
  • wrote a very short range iterator prototype that colomon has used
  • also write a map iterator that works
  • coming up with examples for the zip operator was nice
  • good ideas for what we need to be able to do
  • objects that can iterate have a.iterator() method
  • to interpolate that into a list,.list() returns a flat Parcel for that iterator
  • Parcels know how to generate Iterators
  • those know how to handle Iterators of Iterators
  • I suspect that's how we do hyper iteration
  • change Parcels to understand that
  • adding pieces back into the ng branch
  • next I have to fix slurpy parameters
  • many of our builtins need that
  • need to figure out Jonathan's code to do that
  • after that, I'll do arrays
  • that should remove the blockers on the ng branch

Allison:

  • working on Pynie
  • Francois has helped greatly to update it for Plumage

c:

  • still working on the TT #389 fix
  • think I have the right design, just need time to implement it
  • working on a potential new time for #parrotsketch

Allison:

  • thinking about hackathons
  • would be nice to have a Rakudo hackathon at YAPC::NA

c:

  • Parrot will come up; didn't it come up about half the time last year?

Patrick:

  • it was all Parrot

Allison:

  • you'll have an influx of Rakudo interest two months after Rakudo Star

Patrick:

  • probably will have one before then
  • but can tell people "Go to YAPC; we'll show you how to help in person there"

Syndicated 2010-01-29 21:00:38 from pudge

Perl 6 Design Minutes for 20 January 2010

The Perl 6 design team meet by phone on 20 January 2010. Allison, Patrick, Will, and chromatic attended.

Allison:

  • did distro testing on Ubuntu and the Mac
  • set up a Hardy chroot; Parrot works just fine there
  • have a feeling we missed some deprecations, but we have a lot in there
  • enough to work on for three months

c:

  • I added the STRING idea, to give us the possibility of the value semantics change

Allison:

  • less stressful to have three months at a time
  • otherwise working on class assignments

Patrick:

  • family illness knocked me out for a few days
  • we'll postspone the January release for up to a week
  • going to make the Rakudo-ng branch the master branch
  • that won't take more than a week
  • we'll release by Thursday of next week
  • also need to make the -ng branch build with Parrot 2.0.0
  • need to merge some outstanding patches to make that work

c:

  • are you going to stick with 2.0.0?

Patrick:

  • unless we need a change in Parrot that we can't live without, yes

Will:

  • we could do a point release if you need one

Patrick:

  • that's up to Parrot
  • from Rakudo's perspective, that's not terribly important
  • we're shifting everything around for the -ng branch
  • we'll definitely stick the February release to Parrot 2.1
  • I'll post messages to the list about the new release plan shortly

Will:

  • working on the one_make branch in Parrot
  • trying to mark dependencies properly in a single Makefile
  • get some of that out of the configure system
  • we should be able to merge to trunk in a day or two
  • there's still more work to do, but we're at a merge point soon

c:

  • released Parrot 2.0.0 yesterday
  • sending out release announcements soon, but the code is out
  • Stephen Weeks helped me fix up PGE not to fetch methods from namespaces
  • should be able to merge the TT #389 fix branch to trunk very soon
  • will take a look at other Rakudo blockers after that

Syndicated 2010-01-28 00:10:27 from pudge

Perl 6 Design Minutes for 13 January 2010

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

Larry:

  • made constant declarations more consistent with type declaration syntax
  • removed various spec fossils regarding the old:by modifier
  • reworked KeyHash docs to make the semantics clearer
  • refactored regex AST methods out of Cursor
  • symbol table files are now compiled into their own subdirectory
  • STD can now use modules defined in the test suite
  • testing STD against the test suite now produces many fewer warnings about missing modules
  • STD now specifically disallows forms like:!foo(0) and:5bar[42] that supply unexpected args
  • STD now tracks 'of' types in declarations and prevents spurious 'of' types
  • STD treats anon enums, subsets, and constants etc more consistently
  • removed old type slot from constant declarator, now uses more standard type slots
  • random bug fixing
  • errors with expectation lists are less noisy, no longer reporting lookaheads and whitespace

Patrick:

  • lots of thinking
  • looking at Rakudo-ng today
  • plan to do lists tomorrow
  • want to get those out of the way
  • Jonathan and I think we can merge it for the January release
  • should know more after the weekend

c:

  • working on TT #389
  • :method should not add entries to NameSpace
  • PGE/TGE have problems
  • will not land for 2.0
  • may add (and immediately deprecate) an experimental op to help migration

Syndicated 2010-01-26 22:54:19 from pudge

Perl 5 Design Minutes for 06 January 2010

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

Larry:

  • in Spec Land, renamed p{} to qp{} to avoid using up another common single letter
  • bare say/print is now just a warning
  • Carl Mäsak dug up fossilized restriction on hash literals, which I removed
  • since the insides of blocks are now parsed as statements, there is no longer an inconsistency in line-ending curlies
  • refined the picking vs grabbing semantics with respect to immutable vs mutable bags and such
  • to avoid legacy confusion, renamed break/continue to succeed/proceed
  • clarified that an implicit succeed returns the value of the whole when block
  • it is not somehow magically inserted around the last statement
  • renamed true to so to avoid confusion of the predicate with the True enum value
  • at the suggestion of moritz++, split Any up into Any and Cool types
  • Cool stands for Convenient OO Loopbacks, or any other acronym you'd like
  • the built-in types derived from Cool are the ones that do Perlish dwimmy coercions
  • user types still derive from Any by default, so aren't born with gazillions of methods
  • conjecturally, also keep "last-resort" multis in Cool package
  • responded non-explosively to a potentially explosive rant/twitter
  • clarified various things in response
  • it is not necessary that all implementations be equally good at everything
  • there will be a minimal Perl 5ish grammar alongside STD that any VM can support as a well-behaved subset
  • it is also acceptable to support bug-for-bug compatibility with Perl 5
  • the language designer is neither omniscient nor omnipotent
  • the design process is therefore convergent on the part of all parties involved
  • the rate of convergence is an emergent property, and is to be forced
  • convergence is deemed to be positive as long as anyone is still working on Perl 6
  • the solidification of the spec is also part of the convergence, and depends on proven implementation
  • unproven parts of the spec are to be considered implicitly conjectural
  • as implementations converge on specs, we can throw out or delay parts of the spec that as yet unproven
  • everyone is allowed to panic once.
  • on to implementation, found fencepost precedence error inside list prefix
  • moved the default initparse method from STD into Curso so other grammars don't have to define it
  • added quote modifier:p (aka:path) so we can form the qp{} path literal
  • installed better warnings about bare say/print
  • generalized the say/print warning to anything a p5er might try that might be in p6 without the defaulting
  • STD and CORE now support recent renamings to so, succeed, and proceed
  • no longer reports "Bogus statement" when "Missing term" is more accurate
  • now catches/\b/ and advises to use an appropriate p6 word boundary assertion instead
  • emits better message when an intended reduce is interpreted as composer
  • detects most attempts to use postfix after whitespace, and suggests omitting whitespace
  • now parses tick-less embedded comment syntax as line-end comment (but still warns for now)

Patrick:

  • took the last couple of weeks off
  • keeping up with things, but not much writing code
  • read the S01 changes with great interest
  • glad to see them
  • answered some PGE questions for Carl

Larry:

  • we've talked about them all along
  • they weren't written down in an obvious place

Will:

  • working on Parrot
  • trying to move as much out of the configure process into a Makefile as possible
  • intended to improve the build
  • attempting to remove recursive makes
  • avoid unnecessary rebuilds
  • improve dependency tracking in the build
  • probably ready after 2.0

Patrick:

  • I'm impressed
  • thanks for taking that on; we needed it

Allison:

  • working on deprecation notices
  • we've talked about a lot of things over the past six months
  • not sure they're all in the file appropriately

c:

  • working on bugfixes
  • also working on deprecations

Patrick:

  • I intend to merge the ng branch before the January release
  • some people are antsy, but I have a lot of confidence
  • we'll probably pass about 70% of the test suite
  • it looks like a regression, but we have different features added now
  • lazy lists work, for example
  • lots of things fudged in the previous version work now

Syndicated 2010-01-23 00:12:46 from pudge

Perl 6 Design Minutes for 16 December 2009

The Perl 6 design team met by phone on 16 December 2009. Allison, Patrick, Jerry, and chromatic attended.

Patrick:

  • finished my Hague Grant
  • sent the final report to Jesse to wild approval
  • drafted a new version of PDD 31 on HLL interop
  • write some code to implement part of that in NQP's HLLCompiler
  • added various tests
  • need to get languages using that now
  • Rakudo will use that
  • it's the basis for Rakudo's use and import
  • if it works for Rakudo, it should follow for other languages which use HLLCmpiler
  • had a few comments about missing pieces and corrections
  • it's still a draft spec, but we need iteration to finish the spec
  • working on little bits of code here and there
  • adding features for projects which use NQP
  • trying to return to using Rakudo and updating the -ng branch

Allison:

  • working on the Pynie refresh this week
  • started over with the Python 3 grammar
  • have that translated into NQP-rx
  • it compiles and can parse a few things
  • working my way through the grammar
  • no actions set up yet

Patrick:

  • there is a.DEBUG rule
  • call it on a subrule to turn on tracing from that rule down
  • that saves you from having to put in panic statements

Allison:

  • is there a good NQP-rx tutorial for actions?

Patrick:

  • working on it
  • is your work in the Pynie repo?

Allison:

  • it's in Mercurial on bitbucket.org under project pynie
  • that's what Python 3 uses
  • also the Parrot roadmap session went very well

Jerry:

  • we still have some actions to take based on that work
  • need to convert our priority list into Trac tickets and wiki items
  • Parrot's goal for every month until Rakudo * is to support Rakudo * and HLLs in general

Allison:

  • that's valuable
  • it changes our priorities in the next year
  • it moves things between "would be nice" and "necessary"

c:

  • worked on the roadmap session
  • helping with the Context/CallSignature merge
  • will do a dry run of the Rakudo release today

Syndicated 2010-01-22 01:52:43 from pudge

Perl 6 Design Minutes for 09 December 2009

The Perl 6 design team met by phone on 09 December 2009. Larry, Allison, Patrick, Will, and chromatic attended.

Will:

  • some work on NQP port of Partcl
  • Patrick has been very helpful
  • sent a message to the Parrot list about the planning meeting this Sunday
  • initiated a community document to discuss those plans

Allison:

  • implemented large chunks of obscure C code to perform fast string matching using the FFT
  • wondering if that'd be useful in Parrot
  • maybe we do our indexing operations by character set in the NFG form
  • also does very basic pattern matching by leaving out optional characters
  • could be useable in the core tests, where it's tricky to depend on PGE
  • this was my final assignment before the Christmas break
  • have a month off to work on Parrot stuff then
  • I'll show off my assignment when I submit it

Patrick:

  • finished my final report for my Hague grant
  • haven't quite finished the grant, but left TODO items
  • rather than trying to finish everything and then write the report, I'd draft the report and keep notes on what I needed to finish
  • need to work on HLL interop
  • enable Perl 6 and other Parrot languages to load libraries from other HLLs
  • will work on that over the next few days
  • had several coversations about optimizations, constants, and inferior runloops
  • made minor PAST improvements
  • integer constants can automatically promote to num constants without going through a PMC
  • updated NQP to make it easier to write custom operator subs, if you're using the operator precedence parser
  • implemented the beginnings of smart matching
  • not full Perl 6 smart match
  • makes sense in the Parrot context
  • can match against regexes, tokens, rules, and any types with protoobjects
  • code looks more like Perl 6
  • not much on Rakudo besides answering questions
  • will get back to the Rakudo-ng merge after finishing my grant work
  • also worked on Partcl
  • updated its regex syntax, particularly for enumerated character classes
  • fixed it to handle unquoted, non-word characters in regexes
  • previously it only handled barewords as literal matches
  • it's closer to the Perl 5 syntax now

Larry:

  • didn't like the name PairValSet, renamed it EnumMap
  • likewise PairSet is now PairMap, and PairVal is just Enum
  • so individual constant pairs now called "enums"
  • we distinguish pairs, which have read-write values, from enums, which are constant in the value
  • you can now do.enums on hashes and arrays as well as enumerations
  • differs from.pairs, which give reference semantics into the values of the original data structure
  • .enums gives you a constant snapshot
  • David Green suggested renaming Enum.name to Enum.key, and he was right, since they're constant pairs
  • trying to be consistent about calling the whole type an "enumeration" and referring to the bits as "enums", even though the keyword is enum
  • thought people would rebel at typing the long name
  • clarified that the anonymous enum is compile-time evaluated as an anonymous list of constants
  • you can always cast to an EnumMap at run time for the other behavior
  • simplifying conditional semantics
  • STD parser now parses a WHENCE closure as part of the typename, rather than relying on subscript parse
  • block escape within a closure within a string used to parse as a normal block by responding to comments outside of the block
  • already fixed the embedded block in the regex syntax
  • made that usable by strings and regexes now
  • blocks in regular code try to figure out if they're at the end of a statement
  • look for the trailing curly
  • inside a string or regex, there are no statements
  • it makes no sense to look for the end of the statement there
  • the obsolescence messages were still in the old framework that upsets some Perl 5 people
  • changed the wording to "Unsupported use of..."
  • #perl6 found a precedence inconsistency in parsing of list prefixes vs list infixes in NG
  • turned out to be wrong in STD first, and NG copied it
  • I fixed it in STD, Patrick fixed it in NG
  • otherwise last week was rather too ADD-ish, so mostly did Q&A on IRC

c:

  • fixed some bugs
  • made some optimizations
  • think I've fixed most constant PMCs in PBC now, which should help NQP and Rakudo

Patrick:

  • it'll take a while before Jonathan and I can take advantage of that
  • Allison, when you push_eh an ExceptionHandler onto an array in a context, it creates an RPA
  • does that hold other things besides an EH?

Allison:

  • potentially
  • events get stored in the scheduler
  • only EHs are scoped to a context
  • the old pushmark/popmark stuff to do actions used that same global array
  • it may have changed to use the same array
  • that's deprecated though
  • they won't use that array for long

Patrick:

  • I need something to replace pushaction and popaction before they go away
  • when we handle LEAVE semantics, we want to avoid generating an exception to leave that scope for caching
  • I don't want to generate and rethrow actions to go up the stack
  • those ops let me do that without generating exceptions

Allison:

  • we do need singleton exception objects for FAIL and RETURN
  • no extra information needed
  • right now, you can insert anything you want in that array
  • the local_branch and local_return uses that array

Patrick:

  • it shouldn't
  • bsr and ret may have
  • I provide my own there

Allison:

  • oh right
  • I might not have checked in that code

Patrick:

  • by the way, NQP doesn't use local_branch or local_return

Syndicated 2010-01-21 04:41:19 from pudge

456 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!