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 2005-05-24 through 2005-05-31


Welcome to another Perl 6 summary, brought to you by Aliya's new friends, Masha Nannifer and Philippe, and my own secret running joke. Without further ado, I bring you Perl 6 Compiler.

Perl 6 Compiler

method chaining

Alex Gutteridge discovered that he couldn't chain attribute access like $; in Pugs. Later he provided his example in test form (in case anyone wanted to add it). Maybe they were added to the test suite, maybe not: Warnock applies.

Pugs link issues on Debian Sid

B\xC1RTH\xC1ZI Andr\xE1s was having trouble making Pugs work on Debian Sid with perl 5 support. Autrijus provided helpful pointers. I assume from his final silence that the final pointer worked.

Pugs.AST.* compilation

Samuel Bronson wanted to speed up the compilation of Pugs.AST.* modules by turning off optimizations. Autrijus told him that this was a core module that needed it speed, and optimizations would stay.

Pugs.Types export list

Samuel Bronson added an export list to Pugs.Types. Autrijus happily applied it and send him a commit bit.

export withArgs from Main

Samuel Bronson added an export to Main. Samuel Bronson happily applied it himself this time.

out-of-date hs-plugins

Vadim was having trouble compiling Pugs with Parrot support. Autrijus helped him fix his problem, and there was much rejoicing.

chomp problem

Jens Rieks found a problem with chomp and submitted a test. Warnock applies.

Pugs makefile issue

Gr\xE9goire P\xE9an noticed that pugs was creating a useless Pugs.exe.bat. Autrijus asked if he would be willing to investigate a patch. He responded that he would put it in his queue.

loop or do

Gerd Pokorra wondered why do { ... } was in Pugs reasoning that loop { ... } while was the correct thing. Luke Palmer explained that do { ... } was part of the with or without a postfix while .

PxPerl with Pugs 6.2.5 and Parrot 0.2.0

Gr\xE9goire P\xE9an announced that the release of PxPerl which includes Pugs 6.2.5 and Parrot 0.2.0. This means that windows folk can test Pugs and Parrot without having to fight with compilers.

BUILD errors

Carl Franks was confused by that handling of a named argument to a constructor. He asked for confirmation but none was provided. Perhaps this poor summary save him.

whitespace and function calls

David D Zuhn didn't know that whitespace between and function call and its parentheses was forbidden. Carl told him that and about the .() variant which allows whitespace.

Pug's make cean issues LONG commands

Carl Franks noticed that make clean issued a command so long that it broke his nmake. Fortunately he had a really old nmake and updating fixed the problem.


thr_windows.h with MinGW

Fran\xE7ois Perrad provided a patch fixing two compilation problems in thr_windows.h. Warnock applies.

Parrot Slides?

Adam Preble posted a request for slides and notes on Parrot and Perl 6 for a presentation he was working on. Many people provided links in various languages. I usually steal from Dan's presentations when I need something like this...

Problems with Perl 5.6.1

Fran\xE7ois Perrad had a problem building Parrot with MinGW and Perl 5.6.1. The problem was related to windows and its binary vs text distinction. This problem will also crop up if you ever try to seek on files in windows. Not that I have ever lost several days debugging that problem.

ordered hash thoughts

Leo posted his thoughts on a modification to ordered hash as adding a new element by index breaks the string hashing part of it. Dan suggested that the ordered hash just pitch exceptions in the bad cases as it was designed to be lightweight and fast.

subrules tests

Dino Morelli provided a patch adding tests for subrules to PGE. Warnock applies.

python on parrot

Bloves inquired as to the state of python on parrot. The phrasing of the question itself provided some confusion. Michal Wallace provided a link to pirate, hoping it would help.

Resizable*Array defeats list.c

Slowly but steadily my {Fixed,Resizable}<type>Array PMCs are defeating the less consistent array implementations. Leo offered the job of slaying list.c to any interested partied. Jerry Gay expressed interest.

encodings on 'char constants'

Bob Rogers wants to be able to supply an ecoding for his character constants that use ' . He also wanted to find the integer that corresponds to a character. Leo explained how he could do the former and that ord was is used for the latter.

Broken Links

Fayland Lam pointed out that the links from the last summary were a little broken. Hopefully this summary will be better.

refcounts and DOD

Michal Wallace wondered how best to make python's refcounts work for embeding it in Parrot. Nicholas Clark pointed out that Parrot_[un]register_pmc would work. Dan noted that if the python library was going to be made a parrot extension they could be noops as Parrot's DOD would do necessary work.

BigInt fixes

Kevin Tew added somes tests and fixes to BigInt.pmc. Leo applied the patch.

MinGW and GMP

Fran\xE7ois Perrad provided a patch fixing GMP for MinGW. Leo provided a slight correction which Fran\xE7ois incorporated. Leo then applied the patch.

index failures

Roger Browne found a failure in the index opcode. Leo fixed it.

MinGW and GDBM

Fran\xE7ois Perrad provided a patch fixing GDBMfor MinGW. Leo applied the patch.

mod operation fails with negative integers

Roger Browne noticed that moding with or by negative integers could produce negative such as 3 mod -3 = -3 . Leo fixed them to provide 0. I have that fact about C. Not that I have ever lost several days debugging that problem either.

tracing and debuging

Leo noted that debuging parrot has gotten more difficult as the number of abstractions has increased. Is your compiler, imcc, your PMC, or parrot broken? Maybe two or three of them? To facilitate debugging leo suggested a debug_break opcode and a Debugger PMC. It sounds nifty. He also added support for lexically scoped trace and debug flags.

adding Unicode, Hex, and Octal escapes

Will Coleda added more complete escape sequence support to Tcl. Matt Diephouse integrated the patch into his latest version.

State of ParTcl

Will Coleda proudly noted that as of r8193 ParTcl was passing all tests even with gc-debug. Much praise goes to Matt Diephouse for his cleanup of the tclparser.

strength reduction optimization

Curtis Rawls provided a flurry of patches improving parrot's strength reduction optimization. Leo applied the patches.

TODO: readline support

Leo put out a request for adding readline support to parrot.

get_mmd_dispatch_type fix

Vladimir Lipsky provided a patch which fixes a bug in mmd.c. Leo applied it.

unitialized variable

Vladimir Lipsky fixed an unitialized variable. Leo applied the patch.

improved loadlib handling

Bob Rogers improved the handling of absolute paths by loadlib. Leo applied the patch.

dod sweep fix

Vladimir Lipsky prevented the NULL PMC_EXT from being added to the pmc ext pool during a dod sweep. Leo applied the patch.

packfile double destroy

Vladimir Lipsky fixed a problem with double destruction of nested packfiles. Leo applied the patch.

Tcl autoconverts List <-> String

Tcl can autoconvert between lists and strings. Will Coleda wondered how to implement this behavior to best support language interoperability. Suggestions were offered, no real agreement on the best solution though.

TODO classification

chromatic, inspired by Pugs, added TODO classification to Parrot::Test. He threatened to apply the patch if there were no objections... none yet.

HLL group support

Leo added support for loading high level language PMC groups dynamically using the .HLL directive. This will load the lib dynamically and change the return type of some ops to reflect the HLL's preferences. It is nifty.

Pistol Wielding Parrot

Leo put out a request for PIR versions of the Computer Language Shootout tests This will provide a means of gauging Parrot's performance against other languages. Kinda nifty.

nmake v1.5 issues

Nigel Sandever was also having trouble with overly long lines and nmake. Upgrading nmake fixed his problem too.

optimizer producing bad code

Nick Glencross noticed that the optimizer was producing some bad code. Leo fixed one of the problems, but missed the other.

Keys design

Dan posted an explanation of his original design for keys.

Loop improvements

Curtis Rawls provided a patch to improve the loop struct in imcc optimizer. Leo applied it and asked if he would take a whack at reducing the resource consumption of Bill Coffman's register allocation patch. Dan and Bob Rogers both expressed interested in speeding up the compiler.

Perl 6 Language

hash slices

Carl Franks thought he was having trouble with hash slices. Actually he was having trouble with the s/->/./ in his perl5 conversion.

Perl6 and refactoring support

Piers Cawley resurected Matisse Enzer's thread about IDE's and tools for Perl 6. He observed that Perl 6 might provide a great deal of support for such things. Deborah Pickett noted that it might not be theoretically possible to parse Perl 6 safely. Luke Palmer felt that it would not be possible given BEGIN blocks and the like.

$*OS but OS::unix

Rob Kinyon suggested that $*OS be a class which mixes in the correct OS::class. Then MMD could be force to do the heavy lifting. I like this idea.

reduction junctions and cribbage scoring

Rob Kinyon wanted to uses junctions and reductions to score cribbage hands. Unfortunately, He was using junctions as a set. This led to discussions of the correct implementation and of a Set module that should be included in Perl 6. I want such a set module to have a powerset function which returns the powerset of a particular set (preferably lazily instantiated). Also, my cribbage scoring algorithm is better: (1) lay down hand (2) announce score (3) peg.

syntax for using perl5

Autrijus added support to Pugs for using Perl 5 modules. This led him to wonder what the correct syntax for this actually was. Many suggestions, but no decisions, arrived.

MMD and SMD interaction

Yuval Kogman wondered how MMD and SMD would interact. Warnock applies.

making perl 6 grammars generative

aufrank wondered if perl 6 grammars could be made generative. I would say that this does not belong in the core simply because of its niche application; however, if I were to do this I would start by using the Perl6 grammar grammar and modify the way the parse tree is used. Sadly, aufrank posted to google groups so nobody else expressed opinions.

Links and References

Thomas Sandla\xDF suggested a Link class to fill the role of auto-dereferencing variables that Luke was calling "transparent" references.

use syntax

Rob Kinyon wondered how exactly ranges of versions and multi language interoperability would work in Perl 6. Rod Adams provided a few answers.

Anonymous classes

Simon Cozens announced that he was having a lot of fun converting Maypole to Perl 6, then he asked how make anonymous subclasses which inherit from other classes and add new methods. Ingo Blechschmidt provided the answers.

introspectable code objects

Ingo Blechschmidt thought it would be nifty if code objects were fully introspectable. Luke thought that it would too, but felt that being able to access them at the statement level might be problematic. I think most of what Ingo would want this for can be accomplished by macros which parse normally (or modify a block), but then munge the resulting match object approriately.

signatures as first class types

Yuval Kogman hoped that signatures would be available as first class types in Perl 6. Ingo Blechschmidt agreed, and Sam Vilain pointed to the start of a such a translation.

new and MMD

Carl Franks wanted to create a specialized on argument new using MMD. Damian told him that his technique was a way to do it, and that BUILDALL would still be called by bless.

code ownership and debugability

Yuval Kogman posted his thoughts on code owner ship and debugability in the age of frameworks and generated code.

strongly typed containers

Yuval Kogman was wondering how to make a container class which can be strongly typed (similar to C++ templates). Sam Villain provided a pointer to earlier threads and mentionded Haskell's Generic Algebraic Data Types.

constants and optimizations

Ingo Blechschmidt wondered how to create constants so that the optimizer would be able to do as much as possible. Damian suggested that macros would be one solution. This makes me wondered if there is a way to declare a function so that a macro version for constants is also created automatically. That would be nifty.

Date Time formatting

Nathan Gray wondered what sort of Date/Time Formating Perl 6 would support. Rob Kinyon suggested porting DateTime. This certainly sounds like something that belongs in a module.

and pow, I got illuminated

After much discussion, the thread I started about reductions on empty lists has been weighed in on by @Larry. Damian feels that it should fail as finding an approrpriate identity operator is no simple task. Some how a discussion of modulus and division slipped in too.

sub call vs MMD

Luke Palmer wanted a sanity check on sub calls vs MMD. Larry provided an answer but did not weigh in on his sanity.


People continue to be very devided about (1,(2,3),4)[2] and @x = [1,2,3] . There are strong opinions on both sides about arrayrefs in array and scalar context. I appear to be allied with the losing side. Hopefully things will change.

unicode cheat sheet

Rob Kinyon posted a request for a unicode cheet sheet so he could make his own nifty symbols. Gaal Yahas and Sam Vilain provided pointers.

comprehensive list of rules tokens

Jeff Pinyan wants a comprehensive list of perl 6 rule tokens so he can create a Perl 5 module to parse them. Much discussion ensued.

Default invocant of methods

Ingo Blechschmidt wondered if a methods Class would be allowed as a default invocant or only instances of it. Somehow this led Larry to musing about Class a a role than people can mixin instead of inherit from. He confuses me.

The usual footer

To post to any of these mailing lists please subscribe by sending email to <[email protected]>, <[email protected]>, or <[email protected]>. 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