This file is part of the Perl 6 Archive

Note: these documents may be out of date. Do not use as reference!

To see what is currently happening visit

Perl 6 Summary for 2004-11-01 through 2004-11-08


Welcome to yet another summary, brought to you (once again) with the aid of the musical stylings of Dar Williams and Soul Coughing and a small stuffed elephant name Aliya. And, without further ado, I give you Perl 6 Language (whose traffic has picked up a little)...

Perl 6 Language

What was that anonymous thing?

Juerd wondered what things could be named and what anonymous. Larry provided the answer: Subtypes, Enums, Lists (Lazy and Eager), Grammars, and Packages, but then threatened to attack Juerd with hot grits.

updated Apocalypses and Synopses

Larry proved links to the current versions of the various Apocalypses and Synopses. Unfortunately he forgot to start a new thread with his message... -- apocalypses -- synopses

suggested warning for overriding operators

Aaron Sherman wanted to receive a warning for defining things like multi sub *infix:+(...) {...}. But Larry reasoned the anyone who'd use the * there does not care for warnings.

Perl 6 Compiler

Last week, I bemoaned my lack of google (and thus links). But a couple kind souls pointed out that I could get links straight from the horses mouth: All I can say is, ::shrug:: "Who knew that there was an internet outside of google?". Fortunately, I do not have to admit to its existence as there were no message this week.

Parrot Internals

she-bangs for none!!

Last week James deBoer offered a patch to remove all of the shebang lines from config/*.pl (after his initial patch to add them to all of them was turned away). Warnock applies.

Solaris 9 troubles

Christian Aperghis-Tramoni has some trouble whil trying to install on Solaris 9. Warnock applies.

more vtables

Leo wanted to add a finalize vtable entry (in addition to destroy, which is apparently use for free memory and not active resources). Jeff commented on the difficulties implicit in finalizing stuff, and the thread ran out of gas.

build dynclasses by default

Last week, Leo was stalling to here about success and failures before adding them to the default build. Brent 'Dax' Royal-Gordon and Sam Ruby both chimed in with success. And so they did.

register frame recycling

Leo added in some basic continuation recycling. Dan didn't like that it required the user to clone return continuations into full ones. Leo agreed, but felt that a returncc function would be needed first. I wondered why we needed this recycling and couldn't just let the DOD/GC do it for us. The answer: speed.

upcase binary strings

Dan wondered what should happen if you tried to play with the case of a binary encoded string. The concensus seems to be either throw an exception or nothing, depending on settings.

setref poorly named

Sam Ruby was initially confused by the strange behavior of setref. Leo told him that it was intended to set a reference inside a reference type and noted that classes needs a clean up. With the advent of dynclasses, this sounds like a job for some adventurous lurker...

tracebacks pmc vs ops

Leo wondered if we should have a PMC that could access the entire call chain and do whatever evil it wanted. Dan conjectured that this sort of thing was evil enough that ops might be well advised. Leo initially put some methods into the continuation to do this, but later though about putting them into the interpreter instead. I like the interp idea.

parrot -t memory leaks

Last week our fearless leader notice some not insignificant memory leaks with parrot -t. This week our fearless pumpking fixed them.

Performance graphs

Matt Diephouse (assisted by Joshua Gatcomb) provided a pointer to a page of periodic parrot performances, provided as pretty pictures. Please provide possible improvement pointers.

uniline yield() and return()

Stéphane Payrard (whose name google objects to strenuously) resent his patch for uniline yield and return in PIR. Leo applied the patch.

mod_parrot 0.1

Jeff Horwitz released mod_parrot 0.1. Pretty nifty.

IO auto-flush troubles

Christian Aperghis-Tramoni wondered how to make stdout not buffer away his prompt. The answer (provided by Mary Pauley and Luke Palmer) require using pioctl and strange magic numbers.

bigChanges--; release++?

Since the big indirect register change has gone through, some voices suggested putting out a 0.1.2 release. Leo felt that it was too soon, but seemed to be holding a minority opinion. I vote that we release after the new register allocator (and possibly Dan's string stuff depending on how long it takes).

Dan's String Stuff

Dan is about to make some "Irrevocable Changes" so he decided to do his work in a branch named "pluggable_encodings", assuming he can use CVS (which is surprisingly hard at times). Since no one screamed foul, I think it is a safe assumption.

clone mmd

Sam Ruby submitted a patch adding mmd_clone for dynclasses. Leo suggested an alternate approach, and Warnock['s Dilemna] took over.

true coroutines

Klaas-Jan Stol wondered if parrot had "true" coroutine because Roberto Ierusalimschy (of Lua fame) called it into question. Some confusion ensued as to what the platonic ideal of a coroutine actually is, but the answer seems to be: we should and if they aren't patches welcome.

trouble with Closures and Subs

Klaas-Jan Stol was having trouble with closures and subs. Many people provided some very useful pointers. If you are writing a compiler for Parrot you should read this thread carefully. If you are writing a summary for Parrot you should skim it and punt.

Shared library and dynclasses

Sam Ruby wondered if dynclasses should link to Dan provided the answer: yes. Sam Ruby went on to suggest that if most PMCs would eventually become dynclasses, then (to reduce executable size, the parrot executable should probably also link to rather than including all of it. No one commented on this observation...

serach paths and libraries

Dan wants to stop being annoyed by library path issues. He figures that the right way to do this is to allow dynamic library loading. Best of all he wants the code to do that to be in the library. Thus he put out a request for the ability to embed bytecode into an executable. Brent 'Dax' Royal-Gordon provided a slightly too evil method of doing this. Other slightly less evil (or even good) options would definitely be received thankfully.

Benchmarks? tests? or both?

Joshua Gatcomb noticed that some benchmarks fail on occassion. Matt Diephouse suggested making them tests too. Leo felt that would be fine provided they did not take too long to run.

Fibonacci Still Slow

It is odd how the wheel comes full circle. Originally designed as an exercise in addition for students, the Fibonacci sequence has some really interesting mathematical properties. While comletely ignoring its unexpected niftiness (and explicit formula), this miraculous sequence is still used as busy work for poor creatures. This time the creature is parrot, and, despite Leo's best efforts, it is still slow. There was some talk of how to optimize this before Dan put the smack down all of it:

"No more performance changes. Period. We get parrot fully functional first."

Parrot on Windows

Jerry Wiltz wondered how to get Parrot on his poor Win XP box. Fred and Georgy provided many pointers. Christian Lott also had trouble, but Nicholas Clark, Ron Blaschke, Peter Sinnott, and Steve Peters all provided pointers.

Parrot build issues

Jack J. Woehr was having trouble building parrot on his Sun. Leo provided the needed help. But then ICU became problematic. Many people provided help and he eventually got it running forth, which promptly segfaulted. Jack sounded discouraged, but he really should stay with it now that he has gotten by the hard part...

detecting perldoc

James deBoer wondered if we should detect the presences of perldoc and fail to configure if it is missing. The concensus seems to be that we should detect the absence of perldoc, but if it is no there throw up a big fat warning and procede.

pow and other ops

There was/is a fairly long and ongoing discussion about ops on PMCs, which Sam Ruby unwittingly started when he asked for MMD pow. While there are people on all sides, it appears likely that the ops will stay.

C on parrot?

bloves wondered what the current state of C on parrot was. But I think he posted it through google groups (which does not actually reach the list) as I did not find it in my email. The answer is essentially non-existant, but if you are feeling brave/insane/suicidal patches welcome.

Streams and Filters

Ron Blaschke tracked does the problem with t/library/streams.t #14 on Win32. The guilty party is line endings. One workaround would be to have the file in question be set to binary in cvs (although that feels like cheating).


Adam Thomason provided a patch to fix some warnings. Leo applied it.

Register allocation/volatility

Despite Dan's line in the sand strong statements about no more optimization, Jeff Clites and Leo tossed about some radical ideas for how to speed everything up.

GC invocation

Leo suggested changing the GC from one that interupts everybody and does its thing, to one that waits its turn and does its thing. I am concerned that this could lead to resource starvation in a multithreaded system, but nobody else posted anything. Of course he only suggested this today.

eval questions

Leo wants some answers to some eval questions before he tries to clean up dynamic code compiling. Answers??

include perl 6 files in config

Gerd Pokorra wants to be able to run perl6 from anywhere. He even provided a means of achieving this end (although not in unified diff format as is the custom).

pioctl -> segfault

Stephane Payrard got a segfault while playing with the previously mentioned pioctl magic numbers. Leo speculates that this might be do to the lack of an end opcode.

[TODO] improve parrot-config.imc

Takers wanted.

Missing arguments

Klaas-Jan Stol wondered how to detecting missing arguments. Leo and Dan both pointed to the argument count registers.

Update to embed.pod

Stéphane Payrard provided an update to embed.pod. Leo applied it, but Brent 'Dax' Royal-Gordon cried fould over the including of parrot.h. Dan aggreed with Brent, and Stéphane Payrard provided a patch to remove the offending line.

calling convenctions, traceback, and register allocation

Leo suggested a new way to invoke functions which would clean up calling, tracebacks, and register allocation. While such a change would have great aesthetic value, Dan declared it premature as parrot is not yet fully specified. Doubtless this will rearrise later, as aesthetics is a powerful motivator.

The usual footer

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 [email protected] -- The Perl Foundation -- Perl 6 Development site -- Parrot Blog aggregator