Dear readers and protagonists!
As you know when you are reading this, I have not been able to deliver weekly summaries for a while. Just as the activity of the Perl 6, Parrot, and Rakudo projects leapt upward, the workload in my job increased and I found myself unable to stay at the screen after hours.
I have not at all lost interest in these projects, which in fact are becoming more inspiring every day. I still follow your work closely and I am considering other formats of summarizing that might allow me to contribute again.
Thanks for sharing your enthusiasm and for your encouraging comments!
Lithos
February 28, 2010
February 02, 2010
Seven Days between the Parrot and the Camel
from Monday, January 18 to Sunday, January 24 in the year 2010
Considering the Language:
Synopsis 7 was updated to better define the notions of mostly lazy, mostly eager and strictly eager.
List assignment semantics have been refined: List assignment will be mostly eager, meaning that it will cause evaluation of the leading part of the right-hand side that is known to be finite. In any case, list assignment will evaluate enough elements to fill scalar slots in the signature, so
There were several changes to types involved with sequential things (
The
In item context, a list is turned into a lazy
The empty
The deletion criterion of
♢
Considering Rakudo:
Patrick Michaud returned to Rakudo development and updated Rakudo to work with Parrot 2.0. He also enabled basic list assignment and in the process triggered refinements of the spec. He also prepared Rakudo development release #25.
Jonathan Worthington taught the ng branch the
Solomon Foster worked to make the ng branch pass some list-related tests.
♢
Considering Parrot:
Parrot 2.0.0 was released on Wednesday, January 20 by chromatic. Major features are the merged
Right after the release, James Keenan merged the noalignptrs branch into trunk, removing a needless configuration step, and the no_running_make_test branch, which gets rid of an unused harness option.
Stephen Weeks worked on the pge_no_namespace_methods branch to fix method lookup in PGE.
♢
Considering the Language:
Synopsis 7 was updated to better define the notions of mostly lazy, mostly eager and strictly eager.
List assignment semantics have been refined: List assignment will be mostly eager, meaning that it will cause evaluation of the leading part of the right-hand side that is known to be finite. In any case, list assignment will evaluate enough elements to fill scalar slots in the signature, so
($one, $two, @many) = 1..*
will eagerly calculate $one
and $two
. Portions of a list that end with an exact value will be treated as finite, even if it is infeasible to actually evaluate all elements up to that exact value.There were several changes to types involved with sequential things (
List
, Seq
, Parcel
, Capture
, Iterator
):The
List
role represents lazy access to a list. The iterator of a list is the list itself. Thus Iterator
, the type of Perl lists, does the List
role. However, types doing the List
role will usually be hidden from casual view, as iteration is typically triggered by context, not by calling iterator methods.List
does no longer do the Positional
role, but it gains a method new
and a sub list
for creating a List
that visits all iterable elements of the given arguments.Seq
does the Iterable
role and is allowed to generate its values lazily. The elements that have already been reified, however, will be considered immutable. (The Iterable
role also replaces the Each
role mentioned in sections about hyperoperators.)In item context, a list is turned into a lazy
Seq
object. A Parcel
also turns into a Seq
object in item context.The empty
Parcel
(called Nil
) will evaluate to a null list in list context and to an empty Seq
in slice context. As iterators can never return a Parcel
, Nil
will be used as the value that marks the end of iteration.Array
also gets a new
method.Blob
does the Stringy
role. Conjecturally Stringy
might be split into two roles: a general one containing operations for dense sequences (which both Blob
and Str
are), and a specialized one for operations specific to characters (done only by Str
).The deletion criterion of
KeyWeight
was brought in line with the other containers. Keys will only be deleted when their weight goes exactly to zero. Implementations may complain, however, if a negative weight is used.♢
Considering Rakudo:
Patrick Michaud returned to Rakudo development and updated Rakudo to work with Parrot 2.0. He also enabled basic list assignment and in the process triggered refinements of the spec. He also prepared Rakudo development release #25.
Jonathan Worthington taught the ng branch the
$foo.'methname'()
syntax and the default *%_
parameter of methods, making the branch pass several tests of method invocations. He also improved the handling of has
attributes.Solomon Foster worked to make the ng branch pass some list-related tests.
♢
Considering Parrot:
Parrot 2.0.0 was released on Wednesday, January 20 by chromatic. Major features are the merged
CallContext
PMC that also supports attribute-based introspection and the improvements of the PMC freeze code.Right after the release, James Keenan merged the noalignptrs branch into trunk, removing a needless configuration step, and the no_running_make_test branch, which gets rid of an unused harness option.
IMCC
now forbids the use of macro labels outside the macro definition, and thereby fixes a reported segfault.Stephen Weeks worked on the pge_no_namespace_methods branch to fix method lookup in PGE.
♢
January 26, 2010
Seven Days between the Parrot and the Camel
from Monday, January 11 to Sunday, January 17 in the year 2010
Considering the Language:
There were no spec changes except for some typo fixes.
One of the fixes sparked some discussion about the correct reading of the sentence "Regexes are now first-class language, not strings".
Larry Wall refactored the
Kyle Hasselbacher contributed many spectests for RT tickets and split up the smartmatch operator tests into several files.
♢
Considering Rakudo:
Jonathan Worthington returned to Rakudo development and immediately increased the momentum of the ng branch by implementing parametric roles, role punning, and "
Solomon Foster made exponentiation right-associative as per
John Harrison fixed
♢
Considering Parrot:
Peter Lobsinger merged the pmc_freeze_cleanup branch to trunk.
James Keenan merged the branches remove_Parrot_ex_calc_handler_offset and tt473_remove_memcpy_aligned to trunk.
In the tt389_fix branch for fixing bug 389, chromatic was blocking a bit on related fixes to PGE/TGE. He expects the branch to land just after release 2.0. A separate branch pge_no_namespace_methods has been created to fix PGE not to look for methods in namespaces.
Vasily Chekalkin started the gc_encapsulate branch for improving the encapsulation of pluggable garbage collectors.
Peter Lobsinger added the
Aninhumer contributed documentation about defining subs in PIR. He also suggested mentioning Duke Leto's GitHub mirror as an easy place to apply documentation changes.
"
François Perrad added new meta data for Cardinal and Forth to plumage.
♢
Considering the Language:
There were no spec changes except for some typo fixes.
One of the fixes sparked some discussion about the correct reading of the sentence "Regexes are now first-class language, not strings".
Larry Wall refactored the
Cursor
class in his STD grammar implementation.Kyle Hasselbacher contributed many spectests for RT tickets and split up the smartmatch operator tests into several files.
♢
Considering Rakudo:
Jonathan Worthington returned to Rakudo development and immediately increased the momentum of the ng branch by implementing parametric roles, role punning, and "
my Can of Beer $starobrno
" declarations.Solomon Foster made exponentiation right-associative as per
STD.pm
and implemented Complex.roots
and Num.Complex
.John Harrison fixed
List.new(1, 2, 3)
.♢
Considering Parrot:
Peter Lobsinger merged the pmc_freeze_cleanup branch to trunk.
James Keenan merged the branches remove_Parrot_ex_calc_handler_offset and tt473_remove_memcpy_aligned to trunk.
In the tt389_fix branch for fixing bug 389, chromatic was blocking a bit on related fixes to PGE/TGE. He expects the branch to land just after release 2.0. A separate branch pge_no_namespace_methods has been created to fix PGE not to look for methods in namespaces.
Vasily Chekalkin started the gc_encapsulate branch for improving the encapsulation of pluggable garbage collectors.
Peter Lobsinger added the
testG
make target and -G
harness flag for running the tests with the gcdebug
runcore. He reports 8 failures currently on Linux x86_64 using this flag. He also disabled Garbage-collection when threads are used as they don't play nice together.Aninhumer contributed documentation about defining subs in PIR. He also suggested mentioning Duke Leto's GitHub mirror as an easy place to apply documentation changes.
"
vv
" and similar NCI signatures have been deprecated.François Perrad added new meta data for Cardinal and Forth to plumage.
♢
January 15, 2010
Seven Days between the Parrot and the Camel
from Monday, January 4 to Sunday, January 10 in the year 2010
Considering the Language:
The spec remained quiet except for some cleanup and clarification:
Declaration examples were updated to properly use
Some fossils using the range constructor
Remnants of
♢
Considering Rakudo:
While still waiting for the return of its main protagonists, the ng branch made some progress:
Jonathan Scott Duff implemented unspace parsing and parsing of variable shapes in declarations.
Solomon Foster added
Stephen Weeks added
♢
Considering Parrot:
In the one_make branch, Will Coleda has already converted
Vasily Chekalkin changed tailcall ops to detach the
In order to fix bug 389 (methods are wrongly entered in namespaces), chromatic started the tt389_fix branch.
The
François Perrad added a separate
♢
Considering the Language:
The spec remained quiet except for some cleanup and clarification:
KeyHash
containers will have a default value (such as 0
or ''
or Nil
or Bool::False
) and delete any entry if its value goes to this default.Declaration examples were updated to properly use
constant
as a type declarator syntactically.Some fossils using the range constructor
..
with the obsolete :by
adverb were fixed to use the ...
sequence operator.Remnants of
.true
changed to .so
.♢
Considering Rakudo:
While still waiting for the return of its main protagonists, the ng branch made some progress:
Jonathan Scott Duff implemented unspace parsing and parsing of variable shapes in declarations.
Solomon Foster added
log
functions with $base
parameter.Stephen Weeks added
&warn
.♢
Considering Parrot:
In the one_make branch, Will Coleda has already converted
data_json
, pirc
, nqp
, imcc
, and json
to use included Makefile fragments instead of recursive make
invocations. Each subproject provides a Defines.mak
and a Rules.mak
file so all variable definitions can be gathered before the rule definitions start. The checkdepend.pl
tool now has a --dump
option for printing the preprocessed Makefile and checks .include
and load_bytecode
dependencies of PIR files in addition to C #include
s.Vasily Chekalkin changed tailcall ops to detach the
RetContinuation
from the context in an attempt to fix the elusive bug 1393. The issue does not seem to be fully resolved, however, as James Keenan still reports test failures.In order to fix bug 389 (methods are wrongly entered in namespaces), chromatic started the tt389_fix branch.
The
OrderedHash
PMC has been deprecated.François Perrad added a separate
install-doc
target for installing documentation files and examples.♢
January 06, 2010
Seven Days between the Parrot and the Camel
from Monday, December 28 in the year 2009 to Sunday, January 4 in the year 2010
Considering the Language:
Larry Wall updated Synopsis 1, explaining the spiral, cooperative, and convergent design process of Perl 6. He emphasized that Perl 6 will be anything that passes the official test suite owned by the community. The spec will not be frozen prematurely: Specced features should be considered conjectural until they have been proven in an implementation. The rate of convergence is, according to Larry Wall, an emergent property, and cannot be forced, but only encouraged by cooperation.
The standard Perl 6 grammar will be able to parse a well-behaved subset of Perl 5. Implementations will only be required to support this subset.
♢
Considering Rakudo:
Apart from continued core setting work by David Romano and Moritz Lenz, the ng branch remained mostly silent. Stephen Weeks added a first draft of a new
The master branch learned
♢
Considering Parrot:
In the one_make branch, Will Coleda is working towards a single top-level makefile that includes submakefiles instead of invoking
Vasily Chekalkin created the boehm_gc branch on which he integrated the Boehm-Demers-Weiser garbage collector into Parrot as an alternative to the default mark-and-sweep collector. Results so far suggest that the Boehm GC — being a conservative GC — turns out slower than Parrot's primitive but exact GC that knows about the internal structure of Parrot objects.
Peter Lobsinger and Kevin Tew continued work in the
James Keenan merged the branch for removing
Vasily Chekalkin applied a patch by Jimmy to use
François Perrad added Forth to
♢
Considering the Language:
Larry Wall updated Synopsis 1, explaining the spiral, cooperative, and convergent design process of Perl 6. He emphasized that Perl 6 will be anything that passes the official test suite owned by the community. The spec will not be frozen prematurely: Specced features should be considered conjectural until they have been proven in an implementation. The rate of convergence is, according to Larry Wall, an emergent property, and cannot be forced, but only encouraged by cooperation.
The standard Perl 6 grammar will be able to parse a well-behaved subset of Perl 5. Implementations will only be required to support this subset.
♢
Considering Rakudo:
Apart from continued core setting work by David Romano and Moritz Lenz, the ng branch remained mostly silent. Stephen Weeks added a first draft of a new
Failure
class. Jonathan Scott Duff renamed break
/continue
to succeed
/proceed
.The master branch learned
:l
for checking whether a file is a symbolic link (contributed by Heikki Mehtänen).♢
Considering Parrot:
In the one_make branch, Will Coleda is working towards a single top-level makefile that includes submakefiles instead of invoking
make
recursively. Some of the required dependency cleanups already propagated to the trunk.Vasily Chekalkin created the boehm_gc branch on which he integrated the Boehm-Demers-Weiser garbage collector into Parrot as an alternative to the default mark-and-sweep collector. Results so far suggest that the Boehm GC — being a conservative GC — turns out slower than Parrot's primitive but exact GC that knows about the internal structure of Parrot objects.
Peter Lobsinger and Kevin Tew continued work in the
pmc_freeze_cleanup
branch that aims at cleaning up and unifying PMC freeze/thaw serialization and packfile reading/writing. They were already able to eliminate the need for EXTRA_IS_PROP_HASH
. The prophash handling is now contained in a single function and plans are to move it to default.pmc
.James Keenan merged the branch for removing
Parrot_ex_calc_handler_offset
back to trunk.Vasily Chekalkin applied a patch by Jimmy to use
UINTVAL
s to store the number of Parrot registers.François Perrad added Forth to
smoke_languages.pl
.♢
Subscribe to:
Posts (Atom)