Ann Barcomb
Wed, 21 Mar 2007 16:36:58 -0800
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 <http://xrl.us/u6hv>'
Language
[S09] "Whatever" indices and shaped arrays <http://xrl.us/u6hu>
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
<http://xrl.us/u6hv>
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? <http://xrl.us/u6hz>
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 <http://xrl.us/u6hv>'.
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 <http://xrl.us/u6h2>
Larry Wall's commit made the one-pass parsing rule explicit so that
tests can reference it.
request new Mapping|Hash operators <http://xrl.us/u6h4>
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 <http://xrl.us/u6h5>
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 <http://xrl.us/u6h6>
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? <http://xrl.us/u6h7>
Geoffrey Broadwell asked if Perl 6 has bit/string rotation operators.
Low-level types and over/underflow <http://xrl.us/u6h8>
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 <http://xrl.us/u6h9>
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" <http://xrl.us/u6ia>
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
<http://xrl.us/u6ic>
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 <http://xrl.us/u6ij>
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 <http://xrl.us/u6ik>
In ticket [perl #41601] <http://xrl.us/vevw>, 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? <http://xrl.us/u6im>
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] <http://xrl.us/vevx>. 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
<http://xrl.us/u6in>
In ticket [perl #41606] <http://xrl.us/vevy>, 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 <http://xrl.us/u6io>
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
<http://xrl.us/u6ip>
James Keenan submitted two patches which replace his earlier patches
by the same name. This was ticket [perl #41608] <http://xrl.us/vevz>.
[perl #41612] parrot on CPAN testers.. <http://xrl.us/u6iq>
Will Coleda created ticket [perl #41612] <http://xrl.us/vev2> 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 <http://xrl.us/u6ir>
In ticket [perl #41614] <http://xrl.us/vev3>, 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 <http://xrl.us/u6it>
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 <http://xrl.us/vdfv>
In ticket [perl #41619] <http://xrl.us/vev4>, 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
<http://xrl.us/u6iv>
In ticket [perl #41620] <http://xrl.us/vev5>, 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 <http://xrl.us/u6iw>
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
<http://xrl.us/u6iz>
In ticket [perl #41623] <http://xrl.us/vev6>, 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 <http://xrl.us/u6i3>
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 <http://xrl.us/u6is>
* [PATCH] languages/Pynie <http://xrl.us/u6iy>
* [PATCH] Complete Pynie Grammar <http://xrl.us/u6i2>
* [Pynie] Grammar mostly done, but help needed <http://xrl.us/u6jb>
* [perl #41659] [PATCH] Updates for languages/pynie <http://xrl.us/u6jh>
reviewing PDD01 - Overview <http://xrl.us/u6i5>
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 <http://xrl.us/u6i7>
In ticket [perl #41633] <http://xrl.us/vev7>, 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 <http://xrl.us/u6i8>
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] <http://xrl.us/vev8> to track this development.
[perl #41636] [PATCH] Updates for PDD06 <http://xrl.us/u6jc>
Klaas-Jan Stol attached a patch for PDD06 to ticket [perl #41636]
<http://xrl.us/vev9>. It was applied in r17469.
[perl #41637] [PATCH] SMOP; won't compile on MSVC due to declarations
not at top of block <http://xrl.us/u6jd>
In ticket [perl #41637] <http://xrl.us/vewa>, Klaas-Jan Stol reported
that SMOP won't compile with MicroSoft Visual Studio.
[perl #41642] [BUG] tailcall with slurpy gives segfault
<http://xrl.us/u6je>
Earlier, in ticket [perl #41642] <http://xrl.us/vewb>, 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
<http://xrl.us/u6jg>
Joshua Isom created ticket [perl #41658] <http://xrl.us/vewc> 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
<http://xrl.us/u6ji>
Eric Hanchrow reported a failing test in ticket [perl #41617]
<http://xrl.us/vewd>. 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
<http://xrl.us/qvno>, available on CPAN.
If you appreciate Perl, consider contributing to the Perl Foundation
<http://donate.perlfoundation.org> 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, <[EMAIL PROTECTED]>.
Distribution
This summary can be found in the following places:
* use.perl.org <http://use.perl.org/>
* The Pugs blog <http://pugs.blogs.com/>
* The perl6-announce mailing list <http://xrl.us/qycj>
* ONLamp <http://www.oreillynet.com/onlamp/blog/>
See Also
* Perl Foundation activities <http://blog.perlfoundation.org>
* Perl 6 Development <http://dev.perl.org/perl6>
* Planet Perl Six <http://planetsix.perlfoundation.org/>