Considering the Language:
Enumeration types will be collections of
Enums, that is of pairs with constant values (formerly known as
PairVals). Like a
.value, but both are read-only. An (anonymous)
enumdeclaration creates an
EnumMap, a sequence of
Enums, the values of which are determined at compile time. An
.enumsaccessor will be provided by enumeration types to get at the associations (instead of
.mapping), and by other containers as a read-only analog to
The collection types
EnumMapand its modifiable value analog
PairMap(a sequence of
Pairs) 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
butfall 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
WHENCEclosure is given.
masterbranch remained quiet except for an improvement of
ngbranch 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
CONTROL. Solomon Foster and Moritz Lenz restored many parts of the core setting, and perlpilot added
Stephen Weeks plans to implement lazy
take, but is blocking on the redesign of Rakudo's iterator interface.
nqp-rxacquired an initial version of the smartmatch operator, the
/.../construct for writing regexes and improved longname syntax.
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
CallSignatureReturnsPMC types in order to reduce the number of objects created. This change improved the
fib.pirbenchmark 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
Geoffrey Broadwell reports that 80% of
plumagerefactorings are done and that it is time to add new features again.