Perl 6 summary, 12-18 November, 2006

kudra on 2006-11-20T16:33:44

This week on the Perl 6 mailing lists

"Sadly, the hallucinogens are essential, not external."

-- Mark J. Reed in 'List assignment question'

Language

how to change the type of objects

Last week, TSa asked how an object could change its type without loosing its identity. As an example, TSa suggested an add_vertex method which could be called on a polygon but not on a rectangle subtype of polygon. Darren Duncan wondered why one would declare a type as a rectangle and then mutate it so that it was no longer a rectangle. His opinion was that add_vertex should be fatal for the rectangle; the user can explicitly cast a rectangle into polygon first; or that the polygon class is immutable, and the add_vertex method creates a new polygon.

This week TSa elaborated, stating that there were three issues: subtyping, the preservation of object identity, and the mutating add_vertex method, which were not all addressed by Darren's answer.

generic ordinal-relevant operators

Darren Duncan showed a list of comparison operators and the type of comparisons they perform. Missing in the list were generic ordinal-relevant operators for less-than, greater-than, and so on, although there are numeric and string comparisons of this type.

Jonathan Lang replied that he doesn't see the need for distinct eqv, == and eq operators; he would rather replace these with ==, '+==, and '~==, or even just == alone. There was further discussion on this proposal, with Darren preferring generics to be the shortest and prefixes indicating the numeric or string casting versions.

Smylers requested that proposals for new operators should be accompanied with an example of awkward code which could plausibly be written in a natural setting, and a second example showing how the proposed operator would correct the situation. Larry Wall added the opinion that perfect orthogonality is neither possible nor desirable.

However, before and after operators were accepted, as were min and max operators. This led to some further discussion on the syntax.

named sub-expressions, n-ary functions, things and stuff

Darren Duncan is designing an RDBMS which is a subset of Perl 6 with simple syntax and domain-specific additions. He gave an overview of the features of the language. This led to a few questions and suggestions on Perl 6. One was for something similar to the SQL (some dialects) with clause, which is an expression which can be embedded in other expressions, with repeated portions calculated only once. Another request was for a syntactical short-hand to add an immutable bag type. Thirdly, he suggested separate operators for integer and numeric operators, especially division. Next, there was a call for floor() and ceil() functions which take a number as input and return an integer. Finally, he proposed that built-in Perl 6 types all have multis for operators.

Mark J. Reed and Mark A. Biggar commented on the absence of 'undef' and 'NaN' concepts in the RDBMS language Darren described, which Darren replied to.

Smylers replied to Darren's first point, suggesting that the do block is similar. Darren replied that it may be sufficient for his purposes, and thanked Smylers for the suggestion. Dr. Ruud added some more examples.

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

Larry Wall added missing generic boolean comparisons to S03.

List assignment question

Vincent Foley supplied some tests for the * operator, which is currently not implemented in Pugs. Larry Wall replied that perhaps $ should be used instead, as * is likely to be confused with the slurpy *. He offered a few suggestions on the tests as well.

There was a side discussion on when my ($a, undef, $b) = 1..3; worked in Perl 5.

Smart Matching clarification

Jonathan Lang brought up some information relating to hashes and was wondering if the matching operator ought to be modified since the concept for hash keys has since changed. Larry Wall replied that === was correct, but that the decisions on sorting may need to be rethought. Jonathan thought that not only was the current description suboptimal, it might not even be possible. Darren Duncan added in his opinion that .keys should return a Set. Jonathan had some concerns about the idea. Meanwhile, Paul Seamons made another suggestion based upon Template Toolkit's handling of the concept.

Parrot Porters

Coding Standard Questions

Previously, there was a discussion on coding standards. This week, Chip Salzenberg joined in. He thanked Kevin Tew for asking the questions and gave his answers on what the standards should be.

[perl #40934] [TODO] Tcl - check for open channel in src/builtin/flush.pir

Paul Cochrane submitted a patch for ticket [perl #39704] as [perl #40934].

How do I associate methods with a compiler?

Earlier, Patrick R. Michaud gave some background in to the issue, explaining how Parrot currently handles compilers, and what PDD21 has to say on the subject. He was curious about how to conceptually model compilers in Parrot. He favored a compiler with an object which has a compile method as a model.

This week, Patrick summarized a #parrotsketch meeting where it was decided that the convention would be to have a compreg opcode return an object with a compile method, instead of returning an invokable subroutine. Allison Randal clarified a few points from the meeting.

Leopold Toetsch recommended against recreating the compile opcode as a means of making the compile method call. Allison elaborated on what was intended by the suggestion, and Leopold clarified his stance.

[perl #40788] Tcl - bug in interactive tclsh

Will Coleda posted details on how someone could resolve ticket [perl #40788].

[perl #40814] [PATCH] Assorted Solaris fixes

Steve Peters sent in a patch to make Parrot compile on Solaris. It was sent as ticket [perl #40814]. The patch was applied in r15445.

[perl #40815] Summary of 'make test' failures on Darwin

In ticket [perl #40815], James Keenan sent a summary of Parrot test failures on Darwin. Steve Peters reported that one of the problems had been fixed in r40818.

[perl #40816] open opcode creates file if it doesn't exist

In ticket [perl #40816], Jonathan Rockway reported that the open opcode creates the file if the file doesn't exist. He was not sure if this was a bug.

[perl #40817] [TODO] track generated files during the configure/make process

Jerry Gay suggested appending each file to a list when it is created, replacing the MANIFEST. The idea was described in [perl #40817].

[perl #40818] [PATCH] Silence warning in t/library/pcre.t

In ticket [perl #40818], Steve Peters created a patch to fix a warning in t/library/pcre.t, which was applied as r15442.

[perl #40819] [TODO] Remove Duplication in t/codingstd/*.t Files

chromatic created ticket [perl #40819] to request the removal of duplicate tests in the coding standards section.

[perl #40822] Pg NCI Test Makes Unportable Connection

In ticket [perl #40822], chromatic commented that t/library/pg.t's assumption of a certain database setup is faulty. He proposed using an environment variable to define the user name and password.

[perl #40823] Win32 vs. the world - length for sprintf('%e') - what's right?

In ticket [perl #40823], Chip Salzenberg requested that someone see what Perl does on Win32 to test sprintf. SADAHIRO Tomoyuki answered that it drops the superfluous zero from the return value.

Jerry Gay noted that he preferred a fix in Parrot_sprintf, rather than in the related test. He felt that Parrot should act in a consistent way across platforms. Allison Randal noted that the decision had been made to go with a platform-independent implementation.

[perl #40824] loadlib opcode causes problems with exceptions

In ticket [perl #40824], Matt Diephouse included a patch to fix loadlib failures which were previously not catchable exceptions. Bob Rogers noted that he thought the problem was in the :init code. The patch was committed as r15413, but it was agreed that the questions remain.

[perl #40826] Mac OS X and Dylib Funcs

In ticket [perl #40826], chromatic reported some portability wrappers which were deprecated in Mac OS X 10.3 in favor of the functions themselves. He removed the test which relied upon the old behavior, but noted that the Darwin hinter should pick the correct dl.c file based upon the OS X version.

[perl #40827] [BUG] testing alarm with exception handlers causes runloops to play leapfrog

Jerry Gay noted in ticket [perl #40827] that there is a problem with alarm and exception handlers. He included some sample code. Bob thanked Jerry for the example but replied that he didn't yet have a good solution to the problem.

[perl #40834] [BUG] - PMC methods aren't inherited to PIR subclasses

In ticket [perl #40834], Patrick R . Michaud reported that if a METHOD is defined in a .pmc file, it is not automatically inherited by PIR subclasses. Leopold Toetsch clarified that some METHODs are implemented in a way which doesn't cope with inheritance. He thought this was related to ticket [perl #39329].

Assertion failed: (PTR2UINTVAL(mmd_table[i].func_ptr) & 3) == 0

Ron Blaschke reported that in r15444, Parrot failed to smoke on his Win XP box. He included the results of the attempt.

RFC: Proposal for dynamic binding

Bob Rogers included a patch to the proposal for dynamic binding in Parrot, and requested comments. Leopold Toetsch asked Bob to consider the impact of a third variation using STM, which is already implemented. Bob replied with a description of the problems he saw with STM and continuations.

Allison Randal thanked Bob for the proposal and gave some comments she had on it. Bob replied.

[perl #40861] [CAGE] - add a Perl::Critic policy to look for FIXME|TODO|XXX

In ticket [perl #40861], Paul Cochrane noted that the test which checks for TODO (and related) comments only applies to C-language files, and that it would be good to look for them in Perl as well. Chris Dolan replied that there is a policy available on CPAN which would do this.

Will Coleda asked Andy to adjust the patch to allow TODO comments with RT tickets attached to them, but to disallow those without. Andy Lester objected to Will's suggestion, and proposed instead that TODO items with tickets simply include 'RT' and the ticket number. This was addressed in '[perl #40912] [CAGE] Tcl - convert all XXX (#...) comments to the RT#... format '

set_pmc + setref/deref: anyone using them?

Matt Diephouse wanted to know if anyone would be upset if he removed the set_pmc vtable and the setref and deref opcodes. Allison Randal thought it sounded like a bad idea to simply remove opcodes because they were broken. She wanted to know what problem they were intended to solve, and what the replacement strategy for is.

[perl #40863] [TODO] Tcl - Actually support bignums

In ticket [perl #40863], Matt Diephouse showed some code which checks if the value is too large to be represented by a normal integer, and sets the value to zero if it is. He thought it should be possible to change the code to support larger numbers.

[perl #40865] [TODO] ensure isxxx() and toxxx() are only passed unsigned char values

In ticket [perl #40865], Chip Salzenberg noted that the isxxx and toxxx functions should only be given unsigned character values. He requested that a cage cleaner check calls to them, and repeat the task periodically.

Fwd: Re: [pirate] Re: languages/python - any plans?

Leopold Toetsch forwarded a letter from the pirate development list. In the mail, Tyler Coumbes said that he had some Python PMCs based off the ones in Parrot's repository. He had hoped to clean them up and submit patches, but life was interfering. He indicated where the files could be found, in case someone else was interested in looking at them.

Release: Parrot 0.4.7, "Caique"

Chip Salzenberg announced the release of Parrot 0.4.7, "Caique".

[perl #40884] [CAGE] update parrothist.pod from email archives

Chip Salzenberg created ticket [perl #40884] to request that someone check the email archives for the names given to previous releases to add to the history in docs/parrothist.pod.

Paul Cochrane reported that he had done some of the work, but that he was unable to find reports of other releases. Also, he thought there were some duplicated names.

Object design revisions

Allison Randal reported that she had finished reviewing the PMC object design meeting notes, which was a summary of the design discussion written during last weekend's hackathon. She invited questions or comments. chromatic had a few notes, and Allison responded to his points.

[pmc_object_design_meeting_notes] Properties

Leopold Toetsch responded to the recommendation to deprecate property support in PMCs. Discussion ensued, with chromatic and Allison Randal participating. Allison suggested that the discussion of properties should be delayed for a week because it is related to the role architecture.

[perl #40905] [CAGE] coding standards hammer too big

In ticket [perl #40905], Will Coleda noted that files copied from external sources should not be required to meet internal coding standards.

[perl #40909] [BUG] Tcl - [namespace eval] + [source] + [proc] don't play well together

In ticket [perl #40909], Matt Diephouse reported that some Tcl code was not working as expected. He thought there should be a test, but because it depends upon an external file, he was not sure how to best write it.

Fwd: MC units refreshed

Based upon a post from H. Merijn Brand to the Perl 5 Porter's list, chromatic wondered if the configure system needed to be updated.

[perl #40910] [CAGE] Fix t/distro/file_metadata.t to work in svn

In ticket [perl #40910], Paul Cochrane wanted t/distro/file_metadata.t to work with both svn and svk. chromatic reported it fixed in r15616.

[perl #40911] [CAGE] Merge manifest generating scripts with mk_manifest_and_skip.pl

Paul Cochrane created ticket [perl #40911]. In it he suggested merging the functionality of two tools, gen_manifest_skip.pl and mk_manifests.pl.

[perl #40912] [CAGE] Tcl - convert all XXX (#...) comments to the RT#... format

In ticket [perl #40912], Paul Cochrane asked for all TODO items to be changed to 'RT #' style. This request stemmed from the discussion '[perl #40861] [CAGE] - add a Perl::Critic policy to look for FIXME|TODO|XXX '. It was done in r15651.

[perl #40923] test errors

Seth Whelan reported a problem with Parrot 0.4.7's make test. He included information about his system in ticket [perl #40923].

Perl segfault in cppcomments.t

Paul Cochrane reported a segmentation fault with a test. It looked like a problem with the regular expressions which were used to remove C-comments.

[perl #40932] [PATCH] languages/abc test harness

In ticket [perl #40932], Nuno Carvalho sent a patch which is designed to finish the test harness for the language abc. Patrick R. Michaud applied the patch.

pmc2c.pl: Proposed Strategy for Revisions and Testing

Following an introduction to Parrot at the Chicago Hackathon last week, James E Keenan posted a proposal on how pmc2c.pl could be tested. He hoped for some feedback at an early point to prevent him from wasting effort on useless patches.

He proposed extracting as much functionality as possible in to subroutines which are then placed in a package. He also wondered about some options which were described in the documentation but didn't appear to be used.

[perl #40937] bad links in docs/ROADMAP.pod

Will Coleda wanted some bad links to be corrected. He requested this in ticket [perl #40937].

[perl #40938] [PATCH] languages/abc test suit

Nuno Carvalho submitted a patch in ticket [perl #40938]. It is designed to add more files to the abc test suite. It was applied.

[perl #40939] [PATCH] languages/abc test suit

In ticket [perl #40939], Nuno Carvalho sent a patch which cleans up the abc test harness. It was applied.

cvs-parrot

[svn:parrot] r15517 - in trunk: . src

chromatic reported an error with r15517. Patrick R. Michaud confirmed that it broke on Linux/x86_64 as well. chromatic attached a patch which he was not happy with because he was curious about how it affected Patrick's system. Patrick agreed the patch was just masking a deeper problem, but that it did appear to fix the problem. Leopold Toetsch checked in the patch.

Acknowlegements

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