Perl 6 summary, 25 Feb - 3 Mar, 2007

kudra on 2007-03-21T19:57:35

This week on the Perl 6 mailing lists

"It seems you are presuming a Waterfall model of development here. We're not doing the Waterfall, we're doing the Whirlpool, where the strange attractor whirls around with feedback at many levels but eventually converges on something in the middle. In other words, a whirlpool sucks, but the trick is to position your whirlpool over your intended destination, and you'll eventually get there, though perhaps a bit dizzier than you'd like."

-- Larry Wall, in 'What criteria mark the closure of perl6 specification'

Language

[S09] "Whatever" indices and shaped arrays

Jonathan Lang suggested dropping some specification from S09 which described how * works in conjunction with + and -. He suggested using [0] for the first index instead of *+0. Larry Wall added his thoughts, noting that it was 'shiny', but that nested []s might not be visually appealing.

Luke Palmer decided to mention Ruby's boolean truth model which he admires. With it, 'nil' and 'false' are false, and everything else--including an empty string and '0'--are true. In summary he stated that simple rules are a blessing if you find the right ones, and that he's a fan of boolean predictability.

The shaped arrays thread continued, and eventually Larry was satisfied and requested a patch to S09.

What criteria mark the closure of perl6 specification

Richard Hainsworth asked when the Perl 6 specification will be complete. He is eager to begin using Perl 6, but wants to see it stabilize. Geoffrey Broadwell was perfectly willing to work with a moving specification, so long as the current version of the specification was mostly implemented. chromatic noted that this is what everyone wants.

Geoffrey offered to write some tests which would demonstrate missing features, if someone could implement the features. Gabor Szabo said that he wished there were many people writing tests for unimplemented features, as someone would surely implement the feature to make tests pass.

There was a discussion on how out-of-date the Exegesis files are. Masak suggested porting the code examples in the Exegesis to current Perl 6, and storing them in the Pugs repository. Herbert Breunung thought a disclaimer that they are outdated would be adequate.

Patrick Michaud noted that the changes to the specification have not had a negative impact on the development of the Perl 6 on Parrot implementation; to the contrary, they have made the work easier.

Smylers added that there is no point in freezing the specification if it turns out it can't be implemented. Smylers felt that most of the current work is clarifying, rather than adding new features.

Larry Wall explained that Perl 6 development doesn't follow the Waterfall model. He cannot design something without feedback from implementors. The development model was described as a 'whirlpool'.

Packed array status?

Geoffrey Broadwell wanted to know what backends support packed native arrays. He also added a comment on 'What criteria mark the closure of perl6 specification'.

chromatic replied that Parrot has ManagedStruct and UnManagedStruct PMCs for mapping complex C structures. Patrick Michaud replied that the PIR libraries aren't working yet, but that implementing them should not be too difficult. Audrey Tang also described the situation in Pugs. Geoffrey wondered if he could follow the development status. He offered to write some tests.

[svn:perl6-synopsis] r13704 - doc/trunk/design/syn

Larry Wall's commit made the one-pass parsing rule explicit so that tests can reference it.

request new Mapping|Hash operators

Darren Duncan believes that there is room for some additional convenience operators or functions which are used with mapping and hash values. In particular, he would like the relational data model concept of a tuple. He feels that this could be satisfied with the data types Mapping and Hash with the addition of some common relational operators such as join(), semijoin(), semidifference(), rename(), project(), remove(), compose(), wrap(), and unwrap().

Nicholas Clark noted that rename is a Perl 5 builtin, which he doesn't believe has been dropped for Perl 6. Smylers added that Perl already has a join function for renaming strings. Darren reiterated that he isn't concerned with the names so much as the concepts they express.

Aaron Crane wondered why Darren was specifically against putting this functionality into a third-party module. Darren supplied an argument for the usefulness of relational operators in response. Smylers pointed out that it would be odd to include core support for database operations when most people would opt to use DBI (a module) instead. David Green wasn't concerned about whether the features were core or in a module, but thought it would be nice to have them.

There was some discussion on whether certain features, such as renaming hash keys, are implemented in Perl 5, with David Green, Darren Duncan, Aaron Crane and Uri Guttman taking part.

request: num16

Geoffrey Broadwell requested that num16 and complex16 be added to S09 and made optional. These half-sized floating point types are commonly used in graphics.

Bit shifts on low-level types

Geoffrey Broadwell asked how bitwise shifts are defined on low-level types. Smylers remarked that it is rare to deal with anything as low-level as bits in Perl 5 programming. He feared that introducing more operators into the core language, especially if they would be rarely used, raises the entry barrier.

Nicholas Clark added that it's something you don't want to do in Perl 5, because it is so bad at it.

Rotation ops?

Geoffrey Broadwell asked if Perl 6 has bit/string rotation operators.

Low-level types and over/underflow

Geoffrey Broadwell wanted to know what would happen if a low-level type underflows or overflows. For example, if you incremented a uint8 past 255, what would be the result?

Darren Duncan thought that it depended upon what the underlying hardware does. He suspected it would be a wraparound or an overflow, not a type upgrade.

Casting and low-level types

In this thread, Geoffrey Broadwell asked what happens when you cast between low-level types if the source value is out of range for the destination type. Larry Wall replied that it would be an warning if the destination is an int, and a clip to infinities when the destination is a num.

Compact structs and "byte-stringification"

Geoffrey Broadwell wanted to know how you specify that you want to byte-stringify a structure, rather than normally stringifying it. Larry Wall advised coercing to a buffer type rather than using ~.

Expressions with mixed types including low-level types

Geoffrey Broadwell asked how casting and coercion are handled with expressions which involve mixing low- and high-level types. Larry Wall answered the question, and pointed to a recent update of S09.

[svn:perl6-synopsis] r14308 - doc/trunk/design/syn

Larry Wall made a commit to S03 which distinguished Range's intervalic .min and .max from its directed .from and .to.

Parrot Porters

[perl #41601] [BUG] parrotbug b0rken

In ticket [perl #41601], Klaas-Jan Stol reported a problem with Parrotbug on Win32. Paul Cochrane thought that the problem existed on all platforms. Because people are currently advised to send an email, Paul thought that Parrotbug is confusing and should perhaps be removed.

Jerome Quelin remarked that he has no time to work on Parrotbug, which he originally created. He said that anyone willing to work on it was welcome to take over maintenance.

[perl #41604] [BUG] pbc_output_is doesn't work?

Klaas-Jan Stol tried to add a test which runs some PIR code as PBC. He noted that a PBC file wasn't being created, and sent a patch which could fix this to ticket [perl #41604]. He also wondered if it was a good idea to store PBC files in the repository.

Leopold Toetsch explained that the files which are in the repository are generated on different machines, and the tests check that Parrot can read PBCs from different platforms.

Klaas-Jan wondered if pbc_output_is could take PIR code and compile it while running a test, or if it expects the PBC file to be present. Leopold confirmed that the PBC file must be present.

Jerry Gay noted that there are no test functions which accept PIR, compile to PBC, and run the PBC. He wasn't sure it was a good idea to add this functionality before the refactoring of Parrot::Test is complete.

[perl #41606] [TODO] Add flag to do runtime check on deprecated ops

In ticket [perl #41606], Klaas-Jan Stol proposed adding a flag which checks at runtime if any deprecated ops are used.

Later, he remarked that such a check would be rather slow, so it would be better to add some annotation in the .ops file.

[PATCH] Update DEPRECATED.pod

Klaas-Jan Stol submitted a patch to DEPRECATED.pod which includes some of the deprecated ops. Allison Randal applied it as r17206.

[perl #41608] [NEW] and [PATCH]: tools/build/ops2c.pl refactored

James Keenan submitted two patches which replace his earlier patches by the same name. This was ticket [perl #41608].

[perl #41612] parrot on CPAN testers..

Will Coleda created ticket [perl #41612] because he noticed that Parrot hadn't passed on Windows since 0.4.6. chromatic thought that 0.4.9 would help resolve some of the recent failures. Patrick R. Michaud had seen a report of 0.4.9, and said there were still failures with positive and negative numbers very close to zero.

[perl #41614] Can't set non-core object attribs yet

In ticket [perl #41614], Will Coleda reported some problems with adding an attribute to a TclProc PMC. Alek Storm remarked that a Sub is not a ParrotObject, so it has nowhere to store attributes. He submitted a patch which implements a basic storage system for TclProc. Will commented that it was annoying that attributes aren't just available everywhere, and that ParrotClass and PMC don't have much in common.

[PATCH] welcome message and prompt for HLLCompiler

Klaas-Jan Stol noted that most languages which can be run interactively print a welcome message. He submitted a patch to give a message when interactive mode is entered, before printing a prompt.

Patrick R. Michaud thought the effort was useful, but that it shouldn't mention help which isn't available. Also, there was a bit of a problem with multi-line input.

There was a bit of further discussion on the topic.

[perl #41619] [PATCH] add add_attr, rem_attr, and rem_attr_str vtable methods

In ticket [perl #41619], Alek Storm submitted a patch which adds several vtable methods which can be used by Ruby and Smalltalk. James E Keenan reported that the patch, when applied to the branch, did not cause any problems with tests.

Allison Randal thought this raised a design issue. She wanted to know why add_attr, rem_attr and rem_attr_str were vtable methods instead of methods on the Class class. Alek thought that this was in line with PDD 15. Joshua Isom was concerned about interoperability, and wondered if Perl 6 and Tcl (for example) would be able to use the new class implementation.

Alek replied that the vtable provides an abstract interface everyone can use seamlessly. He thought that it would in fact encourage people to use multiple languages in a single application.

chromatic asked Alek to clarify what behavior he wanted to enable in the HLL. Alek said he would put together some code which would demonstrate his intention. As of March 12th, he was still working on the use case.

[perl #41620] [PATCH] change opcode syntax for label arguments

In ticket [perl #41620], Alek Storm included a patch which changes the label INT, labelvar INT and labelconst INT syntax to in LABEL, invar LABEL and inconst LABEL. This reduces the number of arguments and makes the code cleaner. It was applied to the buildtools branch, and all tests passed.

[PATCH] PDD6 updates

Klaas-Jan Stol made some changes to PDD 16 and posted a patch. chromatic was mostly satisfied with the patch. It was applied as r17209.

[perl #41623] [TODO] modify p6regex op naming convention to match perl 6

In ticket [perl #41623], Jerry Gay remarked that PGE's syntax for specifying ops in the precedence parser should follow the Perl 6 specification. Patrick R. Michaud noted that Larry Wall's recent work on the grammar may introduce some radical changes to the current syntax. Larry tried to explain what he hopes to do with the modifications.

Pynie Grammar

In several threads, Klaas-Jan Stol chronicled his attempts to update the grammar for Pynie. He remarked that it is mostly complete, but that he still has some difficulty with the binary operators "is not" and "not in" and asked for insight.

The following messages charted the development: * [PATCH] Pynie updates * [PATCH] languages/Pynie * [PATCH] Complete Pynie Grammar * [Pynie] Grammar mostly done, but help needed * [perl #41659] [PATCH] Updates for languages/pynie

reviewing PDD01 - Overview

Allison Randal announced that she had checked in an updated version of PDD01 for review.

[perl #41633] [CAGE] convert handrolled .IMPORT macros with library function

In ticket [perl #41633], Jerry Gay noted that some handrolled implementations of namespace import macros had crept in to the code. He wrote an import subroutine, and would like it to be used.

[perl #41634] [TODO] warn and abort make if pbc compatibility has changed

Jerry Gay felt that if PBCs need to be regenerated due to incompatibilities, make should inform the user of this. He created ticket [perl #41634] to track this development.

[perl #41636] [PATCH] Updates for PDD06

Klaas-Jan Stol attached a patch for PDD06 to ticket [perl #41636]. It was applied in r17469.

[perl #41637] [PATCH] SMOP; won't compile on MSVC due to declarations not at top of block

In ticket [perl #41637], Klaas-Jan Stol reported that SMOP won't compile with MicroSoft Visual Studio.

[perl #41642] [BUG] tailcall with slurpy gives segfault

Earlier, in ticket [perl #41642], Mehmet Yavuz Selim Soyturk reported a bug.

This week, Jonathan Worthington reported that he had fixed a bug asked someone to check with the latest code. Bob Rogers reported that Mehmet's test case works in r17298, but that it still fails for him even when the patch is applied.

Later, Bob was able to look into the issue further, and found that there are some more serious problems and that he needs to think on how to solve them.

[perl #41658] [TODO] Move all gc source files into a separate directory

Joshua Isom created ticket [perl #41658] to suggest a cleanup of the garbage collection files, which are not located where one would expect to find them. He submitted a patch for it.

Compiler

[perl #41617] "make test-pir" fails on x86 linux, r14402

Eric Hanchrow reported a failing test in ticket [perl #41617]. Audrey Tang wanted to know if the problem still existed in r15386; Eric confirmed it did.

Acknowledgements

This summary was prepared using Mail::Summary::Tools, available on CPAN.

If you appreciate Perl, consider contributing to the Perl Foundation to help support the development of Perl.

Thank you to everyone who has pointed out mistakes and offered suggestions for improving this series. Comments on this summary can be sent to Ann Barcomb, kudra@domaintje.com.

Distribution

This summary can be found in the following places:

See Also