This Week in Perl 6, August 17-23, 2005

All–

Welcome to another Monday summary, which hopefully provides some evidence that Mondays can get better. It always feels like writing summaries is an uphill battle, so perhaps I should switch to writing about Perl 6 Language first and Perl 6 Compilers last. Then it will be downhill–maybe next time.

Perl 6 Compilers

More Random Pictures

Autrijus posted links to two more images he had created. This time the images were not about Pugs, but were just kind of cute. He also provided an explanation of one when prompted.

Methods as Functions

Yiyi Hu noticed that it was impossible to use a method of one argument as a function. Autrijus offered Yiyi a commit bit, but also kindly posted the resolution to Perl 6 Language. Thanks, Autrijus!

Methods on Code Blocks

Yiyi Hu discovered that { a b c }.pairs would cause Pugs to spin out of control. Luke Palmer fixed it. Hopefully one of the two of them added a test.

Autrijus’ Secret Sauce

Kris Bosland asked a few question I have been wondering about Autrijus’ new graphics. Autrijus kindly provided the answers.

Documentation Attack

Kevin Tew has decided the best way for him to delurk is to update documentation for Pugs. Dudley Flanders and chromatic both provided support, information, and suggestions for him.

Neko VM

Nicolas Cannasse announced his release of a high-level, multi-language VM and wondered what others thought of creating a Perl 6-to-Neko compiler. Autrijus and Leo provided a few corrections and comments.

Parrot

The FAQ, She is Gone!

Amias Channer noticed that the FAQ on parrotcode.org was gone. While no one responded, the FAQ appears to be back.

Platform-Specific C Files

Stephen Hill wanted to know where to put a platform-specific C file to provide missing functionality. Leo provided a few friendly pointers.

TclArray.get

Amos Robinson provided an implementation of get for TclArray. Will gratefully applied the patch.

ICU Being Passed Up

Adrian Lambeck wondered if Configure.pl was passing up ICU. Warnock applied, so Adrian took matter into his own hands by providing a possible solution. Jerry Gay offered to take ownership of the problem if no ICU-enabled soul picked it up. There have been no progress reports since then, though.

Java on Parrot

Tim Bunce asked some preliminary questions about running Java with Parrot. I provide preliminary answers, and Nattfodd and Autrijus posted links to related work. The important question of what to call it remained unraised. I vote for “Jot.”

gdbmhash.t Failures

Tim Bunce noticed that gdbmhash.t was failing with an unhelpful error message. Andy Dougherty provided a patch that made the error message slightly more helpful. Jerry Gay applied it.

BEGIN Blocks

Leo posted some thoughts and information about BEGIN blocks in Perl 6 and the @IMMEDIATE pragma in PIR. It involved creating constant PMCs and freezing them into the bytecode. Then he made it work.

Amber for Parrot

Citing chatter overheard on its intelligence networks, Parrot raised the terror alert to Amber, or maybe Roger Browne released version 0.2.3 of his “Eiffel-like” scripting language, Amber. I can never keep track of these things.

Tcl parray

Amos Robinson offered to provide an implementation of Tcl’s parray, including tests. Will wanted to apply it, but the attachment did not come through.

Parrot Vs. Neko

Nicolas Cannasse wondered why Parrot performed so poorly on the fib benchmark. Leo explained that this benchmark stressed a currently unoptimized portion of Parrot (function calls). He also provided a few pointers on which benchmarks Parrot does well.

Using PMCs from C

Klaas-Jan Stol’s Lua compiler uses only PMCs. Thus, he wanted to know how to access these PMCs from NCI functions. Leo provided an answer, but also suggested he look at the new calling conventions, which perform auto-conversion in both directions.

PMC for Reference Counting

Nicholas Clark posted a relatively full analysis of how to generalize the DOD’s registration system for further reuse. He also asked for ideas about names. I think the whole thing looks good and that “AddrRegistry” is a good name. Perhaps that has too many vowels–“AddrRgstry” and sometimes “AddrRgstr” might work.

Perl 6 Language

Type Inferencing in Perl 5

Autrijus (while discussing type inference in Perl 6) recalled that there was a Google Summer of Code project on type inferencing in Perl 5. Gary Jackson, the summer coder, provide a more detailed description of his work.

+"hello"

Daniel Brockman wondered if +"hello" still evaluated to a NaN. Larry reasoned that it might, and then went on to speculate about the what the extra exception information would do when a Num gets jammed into a num.

Generic Classes

Autrijus found the frequent use of generic classes confusing, as he thought that only roles were type parameterizable. Larry explained that roles could be promoted to classes pretty easily, but that the distinction between them was still useful and meaningful.

GC API

David Formosa posted a revised GC API after the previous discussion. More discussion ensued.

Name Conflicts

Yiyi Hu wondered what would happen if he declared two lexicals with different declarators. Larry answered that it would be a compile-time error.

Parsing Numbers

Ingo Blechschmidt posted a list of different possible ways to write numbers, asking which were valid and which not. Many weighed in, including Larry.

Bindings and Routine Signatures

Luke Palmer noticed that implementing binding as anonymous subroutines and then binding existing variables created delimited continuations, and binding globals, full continuations. While interesting, Warnock applies.

Visibilty of $?SELF and $?CLASS

Stevan Little wondered what scopes will have $?SELF and $?CLASS available to them. Larry provided answers.

“Time to Take Her Home Her Dizzy Head is Conscience-Laden”

Amusingly enough, the thread about time has a big gap between July 5 and August 15. The thread also reminded me why I have an analog watch.

Is Params::Validate Necessary?

Dave Rolsky hoped that Params::Validate would no longer be necessary in Perl 6. This led to much discussion of the parameter declaration syntax in Perl 6 and a few suggested changes.

Constants are Dead; Long Live Read-Only!

Apparently is constant is gone and is readonly is here. The discussion contains mores than that, but that is my take-away point.

Multidimensional Hyper Ops

Luke Palmer wondered how hyper ops would work on multi-dimensional inputs. The short answer is “recurse when possible, apply when not.”

Serializing Code

Yuval Kogman posted an analysis of a new HTML::Prototype module that hinges on serializing code between the various layers of implementation. Many folks thought this was cool and discussion ensued.

Slurpy Hash

Luke Palmer wondered if one could bind a slurpy hash by name. The answer is no.

Making Pairs Less Magical

Luke Palmer wants pairs to be less magical, as their special treatment has caused much confusion of late. Much discussion continues.

Lazy Scalars?

Yiyi Hu wants lazily evaluated scalars. Ingo Blechschmidt, Luke Palmer, and Larry all provided ways to achieve that end. The simplest solution is to create an anonymous closure, it seems.

Using Foreign Languages

Ingo Blechschmidt wondered how to use identifiers from other languages that do not have compatible identifiers. Yuval reasoned that it would be dangerous to try to accommodate them too closely. Perhaps something like the Sinhala “karenawa,” which marks the preceding word as being foreign (English specifically), will work?

Symbolic References

Ingo Blechschmidt wondered to use symbolic references of magic variables such as $?SELF. Larry provided a few answers.

To post to any of these mailing lists please subscribe by sending email to perl6-internals-subscribe@perl.org, perl6-language-subscribe@perl.org, or perl6-compiler-subscribe@perl.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

Tags

Feedback

Something wrong with this article? Help us out by opening an issue or pull request on GitHub