November 29, 2009

Seven Days between the Parrot and the Camel

from Monday, November 23, to Sunday, November 29, in the year 2009

Considering the Language:

Seeking a word that conveys both allness and nothingness, Larry Wall renamed the root of the Perl 6 type hierarchy to Mu, an allusion to the Zen concept of "no thing" or emptiness as the nature of all things. (Cows were also mentioned.)

The radical change to Mu was the outcome of a wider exploration: undef as a term becomes obsolete, as there will be no singleton undefined value in Perl 6, but rather various flavours, for example the most undefined Mu, other protoobjects carrying type information, failure objects (created with fail), or Nil.

Said Nil is no longer a type, but a name for the empty parcel (), which represents the absence of return values and resets containers to their initial value upon assignment (Mu for untyped scalar containers).

The sink prefix dissolves returned values to Nil, which can help trigger actions in case of empty lists as in "for @some || sink { warn "None!" } {...}".

The convenience macro .notdef and multi notdef will be useful for matching undefined values.

The chapter about enums in Synopsis 12 got expanded. Enum types are no longer roles, instead the types of enum values will just be guaranteed to be derived from and convertible to the enum's base type. Enum keys may be used as type names (each type containing a single enum value). The enum type itself appears like a typename package containing a set of constant declarations and supplies a .mapping method to get at the translation of symbolic values to enum values.



Considering Rakudo:

Patrick Michaud's reimplementation of "Not Quite Perl", nqp-rx, kept improving: Quoted strings can now be used as method names (including interpolation), regexes learned to heed :pos and :continue options, and Stephen Weeks contributed exception handling via try, CATCH, and CONTROL.

The rakudo ng branch continued climbing up the spectest curve, which turned out steeper than initially hoped for, as many test files require features beyond those actually targeted by the respective test.

Still the branch made good progress, as the Rakudo developers added eval, lazy signature binding, regexes, and parts of the meta-object protocol, which was the focus of Jonathan Worthington's Rakudo Day.



Considering Parrot:

Last week, chromatic had observed that in one of Rakudo's use cases the repeated marking of a modest number of long-lived objects consumed over 88% of total CPU time. This finding led to discussions about garbage collection this week, and to the general agreement that a generational garbage collector would be an important improvement. Allison Randal confirmed that garbage collection will become a likely focus of development after release 2.0.

Cotto committed an NQP port of the profiling script pprof2cg, noting, however, that it was 26.5 times slower than the Perl version.

Patches by bubaflub and kurahaupo converted further tests from Perl 5 to PIR.

Allison Randal sent a note about MMD to the parrot-dev list, outlining how hypercube graphs could be used for fast calculation of Manhattan distances during dispatch.

Plumage saw a lot of refactoring and glue code reduction as more features of nqp-rx became available. Geoffrey Broadwell proposed a naming scheme for plumage dependencies which seemed to be well received. François Perrad continued work on his distutils package and contributed plumage metadata for several projects. As of this writing, the metadata base of plumage counts 23 projects.

No comments:

Post a Comment