This Week in Perl 6, April 26 - May 3, 2005
Welcome to another week’s summary. This week I shall endeavor not to delete my summary accidentally or destroy the world. Here we go with p6c.
Perl 6 Compilers
Kiran Kumar found a bug in Pugs involving
for loops which use
$_ but don’t iterate over it. Aaron Sherman and Luke Palmer confirmed the bug. There’s no word as to its final status, but given the rate of development of Pugs…
Glenn Ehrlich noticed that Pugs’ Darcs repository wasn’t updating. Sam Vilain explained that occasionally a daemon needed kicking.
BÁRTHÁZI András announced the release of the latest version of Memory. He also put out a call for 85x75 pixel photos for the next version.
Stuart Cook decided that the easiest way for him to understand Pugs internals was to provide better documentation. To that end he started working with Haddock to automatically generate cross-linked documentation for Pugs. He even met with some success.
Garrett Rooney wondered why the
is export trait appeared to do nothing in Pugs. Stevan Little explained that it was just a place holder which, though it parses, does nothing semantically yet.
Autrijus proudly announced the release of Pugs 6.2.2. It features many, many changes. High on the list is a bunch of speed ups, and also thread-safe, deadlock-free internal storage.
Rob Kinyon noticed that Pugs had trouble on Cygwin. He has made some headway rectifying the situation, although work remains to be done.
Stevan has put some more thought into the TODO model for Pugs. His latest suggestion, annotating TODO tests with a flag indicating why they are not passing, seems a little less hackish then the last one and received general support.
Autrijus wanted to embed the newly released PGE, which is PIR code that runs on Parrot. He decided to embed Parrot into Pugs. He also posted an interesting link to JHC as a possible bootstrap solution.
Maybe I should have mentioned this first. Patrick R. Michaud released a new version of the Parrot Grammar Engine. It is entirely PIR code and generates PIR code. It has many features but not enough tests… <cough>hint</cough>.
Jared Rhine wondered if the monthly releases included April. Chip announced that April’s release would be slushier then most, but would start on the fourth.
François Perrad noticed a failure in
debuginfo. Leo pointed out that it was an issue of flushing output handles. Francois provided a patch (well, actually two patches). Warnock applies to the second.
Will Coleda thought that ParTcl’s GC bugs had finally gone away. Leo burst his bubble. Apparently these GC bugs can disappear and reappear according to sunspot activity.
Nick Glencross submitted a patch fixing a segfault in
load_bytecode. Jens pointed out that it should use
real_exception instead of
internal_exception. chromatic offered to write the test. There is no official committed message though.
Leo implemented a change in the interpreter
PackFile structure which has been under discussion for a long time. Unfortunately, it has the potential to break a lot of JIT stuff. Tests and fixes would be wonderful.
Nicholas Clark had some trouble with his Perl5 PMCs. Later, he posted a “mea culpa” email, but Leo provided some useful pointers anyway.
Bernhard Schmalhofer cleaned out an old ticket from RT.
Some time ago, Leo requested comments on the semantics of
assign. Brent “Dax” Royal-Gordon tried to de-Warnock the thread with his support. He also suggested a
Nicholas Clark struggled with a NULL pointer deref in
real_exception. Leo pointed him toward the correct approach.
Having finished overhauling the infix operators, Leo set to work updating the unary operators to provide variants which allocate their results.
Leo announced that he was removing the
die opcode and adding a Bruce Willis opcode in its place. Unlike Mr. Willis, the
die_hard opcode actually
died relatively easily. Leo then renamed it to just
die out of popular demand.
Nick Glencross found a core dump with the computed goto core. Leo explained that a hackish attempted optimization caused it. He also fixed it.
Juergen Boemmels made SVN ignore some .so files. Leo asked if it could also ignore .rej and .orig files.
Nicholas Clark found that
DYNSUPER did not work well with his dynamic classes. Leo provided a suggestion for something to try and also suggested a
super vtable call.
Autrijus wondered how Parrot carries around the type info for MMD. Leo provided answers.
Markus Amslser wrote a tiny webserver in IMC. This led to the discovery of that the binary to ASCII transcoding is missing. Leo suggested several possible solutions.
Nicholas Clark asked how best to use the 8 private bits of PMC in Ponie. His initial thought was to mark type with it. Leo suggested that adding the type to the flag bits was unnecessary, as one can usually just call a vtable or MMD function directly and the type will work out.
Leo added support for calling built-in MMDs on objects as methods.
Leo posted a summary and TODO for his overhaul of opcodes that return new results. Jerry Gay and Bob Rogers helped fill out the corners. Bob even provided some tests.
Robin Redeker wondered why Parrot had decided to go with a non-ref counting GC. Dan Sugalski took responsibility for the decision and explained his motivations. Non-ref counting GCs are essentially simpler, cleaner, and faster. You can get a more detailed answer from reading the thread or Dan’s Squawks of the Parrot: What the heck is: Garbage Collection from way back when.
Leo mused that he would like to deprecate the
fast_call PIR construct. No one squawked, so I call it officially deprecated.
Vladimir Lipsky and Leo went back and forth a few times working out thread primitives for Windows. I am not sure what state they finally reached.
Leo posted a proposal for a calling convention abstraction. No comments have appeared yet, but it has not been up for long.
Patrick R. Michaud wondered if PIR supported tailcalls and tailmethods yet. Leo provided a few pointers. Bob Rogers suggested a nice syntax, which Leo implemented.
Nicholas Clark noted a need for vtables in extend.h. Leo agreed that they should be auto-generated. chromatic eagerly requested the chance to write the Perl code that does this auto-generation.
Michael G. Schwern announced that he’d removed
BAILOUT from Test::Builder in favor of
BAIL_OUT. He admitted that a deprecated
BAILOUT would remain as undocumented. At some point we should update.
Perl 6 Language
Aaron Sherman wondered if he could generate anonymous roles that are also closures. It made my head hurt. People seem to think it’s possible though.
Ingo Blechschmidt wondered what
pick would return when called on a hash. Rod Adams suggested that it would return a pair. Larry thought that would be a good idea, if perhaps difficult to implement.
Joshua Gatcomb found that he could use junctions to quickly answer questions but not provide specifics. Sadly, he is not the first person to have this problem. Junctions naturally provide Boolean operations but do not naturally explain what motivated that answer. Perhaps they should be thrown out along with the axiom of choice. After all, do we really need a basis for ALL of our vector spaces?
Ingo Blechschmidt wondered if
is rw did anything for references, as you can still modify the value to which they refer. Juerd answered basically yes.
Jonathan Lang wondered about creating a complex number package. Including returning junctions of values for roots of unity. Unfortunately these lists can be quite large, even infinite. Thus, he wondered if he could use lazy junctions. Thomas Sandlaß conjectured that he could by the “law of laziness preservation”.
Aaron Sherman worried that the auto-threading of junction would actually run in separate threads. This is most assuredly not the common case, although some warped soul could implement it that way.
Autrijus asked what context
want would provide when used as an index. Larry provided answers.
Autrijus posted a link to a next-generation computer language from Sun called Fortress and then went on to ask about parameterized types, tuple types, and block labels. Bad Autrijus! Make summarizers lives hard. Then we have to punt like this rather than try to extract the three different threads at once.
Joshua Gatcomb wanted to know how he could restrict the scope of variables used in the conditionals of his
while statement to the loop. This led to some discussion about the implementation of
while as a macro or some other beast. Larry began to ponder the submacro.
David Christensen decided to try to add support for
LAST blocks and the like into Pugs. This led him to p6l with some questions about traits which are closures. Answers and suggestions followed.
Ingo Blechschmidt wondered how junctions of classes would act. The consensus seems to be that they act as type specifiers of a sort, restricting whatever the variables they describe can contain.
Luke Palmer wondered what exactly subtype declarations provided and suggested jettisoning them. Larry remained unconvinced.
Stevan Little wondered if there was some way to attach labels to blocks. Discussion ensued, including a comment from Larry that it won’t need to be redone.
Gaal Yahas proposed a basic
pipe built-in for discussion. Discussion followed. Larry mentioned that he has “pretty much” blessed
io (from IO::All).
Juerd wondered if
if as a function had unintended consequences. Fortunately,
if is not a function, it is a statement-level construct.
Juerd wondered if he could say
use strict & warnings. Larry explained that there were parsing problems with it and possibly limited utility, but he has not officially ruled it out, as the problems have workarounds.
This great quandary continues. This week, Larry is leaning towards the
.foo() == $_.foo() camp, but nothing is yet set. He also suggested
$^ as being equivalent to
$?SELF (which I really like). Time will tell how this one will work out. My prediction is that the argument will rage on until Pugs is ready to implement it and needs a definitive answer…then it will change a few more times.
Autrijus asked a few questions about the type system, and at which times it did what things. Larry provided some answers.
The Usual Footer
Posting via the Google Groups interface does not work. To post to any of these mailing lists please subscribe by sending email to
firstname.lastname@example.org. If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl. You might also like to send feedback to
Something wrong with this article? Help us out by opening an issue or pull request on GitHub