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.
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.
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
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.
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.
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.
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