from Monday, November 30, to Sunday, December 6, in the year 2009Considering the Language:Enumeration types will be collections of
Enum
s, that is of pairs with constant values (formerly known as
PairVal
s). Like a
Pair
, an
Enum
has
.key
and
.value
, but both are read-only. An (anonymous)
enum
declaration creates an
EnumMap
, a sequence of
Enum
s, the values of which are determined at compile time. An
.enums
accessor will be provided by enumeration types to get at the associations (instead of
.mapping
), and by other containers as a read-only analog to
.pairs
.
The collection types
EnumMap
and its modifiable value analog
PairMap
(a sequence of
Pair
s) will do roles for both positional and associative access. At the implementation's discretion, the latter may use anything from linear scan to optimized hash-like lookup.
The mixins created with
but
fall into two categories: Mixing in an enumeration type adds a modifiable attribute. Mixing in a value adds a read-only accessor method. The attribute added for rw mixins starts out uninitialized, unless a
WHENCE
closure is given.
♢
Considering Rakudo:While the
master
branch remained quiet except for an improvement of
Rat
operators, the
ng
branch continued to be the focus of development. In the course of his work on the meta-object protocol, Jonathan Worthington implemented role to instance application. Stephen Weeks committed a first draft of
CATCH
and
CONTROL
. Solomon Foster and Moritz Lenz restored many parts of the core setting, and perlpilot added
while
and
until
statement modifiers.
Stephen Weeks plans to implement lazy
gather
and
take
, but is blocking on the redesign of Rakudo's iterator interface.
Meanwhile,
nqp-rx
acquired an initial version of the smartmatch operator, the
/.../
construct for writing regexes and improved longname syntax.
♢
Considering Parrot:Garbage collection gained further attention when Patrick Michaud posted an observation about heavy GC overhead which he presumed to be caused by a small number of mortal but long-lived objects and inefficient marking. Contrariwise, chromatic attributed the overhead to the large number of short-lived objects generated internally by the Parrot Calling Conventions (PCC). Both supported their arguments with interesting experimental data.
Various approaches were suggested, among them separate pools for immortal and PCC objects, combining objects to superobjects with escape pointer lists, stack allocation, and avoiding needless autoboxing.
Traces of recycled objects showed pointless GC runs during startup, which led to an adjustment of the replenish level factor.
Vasily Chekalkin merged the
CallSignature
and
CallSignatureReturns
PMC types in order to reduce the number of objects created. This change improved the
fib.pir
benchmark by 7%.
PCC learned to use the HLL type map when autoboxing values.
Patrick Michaud questioned the deprecation of label-based exception handlers, which led to discussions of continuations invoked as/by exception handlers and the resulting inferior runloop problem. [To the reporter's understanding this problem arises when an exception handler declared in one runloop is invoked in another (nested) runloop and then resumes execution by falling through to the surrounding code.] The general consensus seemed to be that while nested runloops should be removed on the long term, an intermediate solution — e.g. an explicit opcode for resuming execution in the runloop declaring the handler — was needed.
Jonathan Leto provided microbenchmark results for past and present parrot versions.
The question was raised whether PIR should get an
__END__
tag, but the response was mostly negative.
François Perrad committed many additions to and refactorings of
distutils
.
Geoffrey Broadwell reports that 80% of
plumage
refactorings are done and that it is time to add new features again.
♢