Ann Barcomb
Sun, 24 Sep 2006 12:15:05 -0700
This week on the Perl 6 mailing lists
"`my Yellow sub marine { @we.all.live }`"
-- Larry Wall, concluding a series of Beatles references in the grep
thread.
Language
[svn:perl6-synopsis] r12136 - doc/trunk/design/syn <http://xrl.us/rvm8>
Larry Wall committed a change stating that the filetest operators
return a stat buffer object, that can be repeatedly used for more file
tests, and also overloads boolean context for the test that created
it.
This eliminates the need for the `-X _` form in Perl 5, used to
eliminate additional calls to `stat`.
class attr set defs as their names <http://xrl.us/rvm9>
Darren Duncan asked if two class meta objects `eqv`ing one another
implies type equality. Nobody seemed to have any view on the subject.
request for addition to administrative field to Synopsis
<http://xrl.us/rvna>
Mark Stosberg had a comment on the specification for smart linking. He
offered a suggestion to make the documentation more useful to users.
Renaming grep <http://xrl.us/rvnb>
Darren Duncan suggested renaming `grep` to `where` in order to phase
out UNIX lingo from Perl. Many people also suggested `filter`, and it
was noted by Damian Conway that this is in fact the de facto standard
for modern languages (like Haskell and Python). `select` and `reject`
were also proposed at which point a list parting construct with
arbitrary buckets was also proposed.
The end result was the introduction of the `classify` built-in by
Damian. This function generalizes various other list filtering and
parting semantics.
There was also a discussion on aliases and homonyms, under the
umbrella of keeping `grep` as a backwards compatibility alias.
Subsequently, Trey Harris' suggestion for using junctions and `~~` was
discussed in a different thread <http://xrl.us/rvnc>.
class interface of roles <http://xrl.us/rvnd>
TSa wondered how typing of mixins <http://xrl.us/rvne> would look in
Perl 6. A code example of how it might look was included. There were
also some questions on roles in Perl 6.
Threads and types <http://xrl.us/rvnf>
Aaron Sherman asked whether or not the type system and the meta model
is shared between threads, especially in the light of a shared
variable of a certain type.
call, call(), .call, and captures <http://xrl.us/rvng>
Trey Harris pointed out that there are three types of 'call' as
expressed in S06 and S12. He would like to see the syntax normalized
to avoid confusion. Aaron Sherman and Markus Laire added some
comments. Larry Wall wanted to avoid using related names for unrelated
concepts. He thought that perhaps three different names (`call`,
`callargs` and `callcap`) would help clarify the situation. Aaron
Sherman liked the idea.
Capture sigil <http://xrl.us/rvnh>
Larry Wall announced that Captures will now have their own sigil,
allowing captures stored in scalars to be "interpolated" into argument
lists without using the `[,] =$capture` form. It was eventually
decided that `|` will perform this role. The resultant syntax is:
my $foo = (:foo(4), $blah);
gorch(|$foo);
which is analogous to:
my $foo = ??bar gorch??;
my @array = ( "foo", @$foo
[svn:perl6-synopsis] r12284 - doc/trunk/design/syn <http://xrl.us/rvni>
Larry Wall committed a change to S02 concerning the | sigil and
operator. Aaron Sherman requested an update to S03's 'Junctive
operators' to resolve the ambiguity of `a|$b`, `a | $b`, and `a |$b`.
Larry attempted to clarify. Mark J. Reed noted that this implies that
subroutines without arguments will be rare, but methods without them
will be commonplace, introducing the same ambiguity with `$o.a%$b` and
other similar-looking expressions. Larry replied that a method does
not take arguments without `:` or `()`.
Aaron commented on Larry's statement that bare constants are being
discouraged in favor of sigiled constants by asking if `pi` and `e`
should become `$pi` (or `$??`) and `$e`.
Dumb list-flattening question. <http://xrl.us/rvnj>
Mark J. Reed wanted to know how to create a two element list out of
two arrays, which in Perl 5 would be `(@a, @b)`. If the syntax is the
same, he wanted to know what the `` mechanism is called, since
references are automagical. Juerd replied that they are captures.
Aaron Sherman elaborated Juerd's answer by referencing S03. Mark J.
Reed suggested mentioning captures to prevent list flattening in S09.
Mark Stosberg felt that the specification for `` was unclear.
Capture Literals <http://xrl.us/rvnk>
Jonathan Lang asked how he could construct a capture literal which has
both an invocant and at least one positional argument, and how it
would be distinguished from a capture literal which has no invocant
and at least two positional arguments. He offered some example code,
which, according to Larry Wall, was correct aside from a syntax error.
Motivation for /<alpha>+/ set Array not Match? <http://xrl.us/rvnm>
Audrey Tang quoted a section of S05 concerning subrules. She found the
'quantified' clause to be unintuitive and wondered if it would be
possible to modify it to produce Match objects and to reserve Array
only for noncontiguous same-name subrules. Patrick R. Michaud and
Flavio S. Glock made some alternate suggestions.
Parrot Porters
HOWTO give options to parrot in tests <http://xrl.us/rrap>
Last week, Karl Forner posted that he is working on [perl #40064]
<http://xrl.us/qvjs>. He was wondering how he could run the script
with options, and wanted to know if `TEST_PROG_ARGS` would be an
appropriate choice. Leopold Toetsch suggested subclassing
Parrot::Test.
Karl noted that if he subclasses Parrot::Test he won't be able to
reuse the code. Leopold replied that there are already test classes in
`lib/Parrot/Test/*.pm`.
gmp_version undeclared <http://xrl.us/rvnn>
David Romano reported that his Parrot build failed due to the
gmp_version being undeclared. He included a patch for people who don't
have GMP installed. Alberto Sim??es noted it was fixed in r14636.
pcre tests <http://xrl.us/rvno>
David Romano reported that two tests which depend on PCRE failed when
PCRE is not installed. The code which checks for PCRE does not work.
David included a patch to fix this.
RFC: Consolidate stack-unwinding code <http://xrl.us/rvnp>
Bob Rogers refactored Parrot's stack unwinding code, consolidating
it's various incarnations into the continuation invocation. Leopold
Toetsch answered some of Bob's questions. Larry Wall clarified Perl
6's requirements of Parrot's continuation handling.
Matt Diephouse commented that this change broke Tcl's `uplevel`, and
helped Bob to test a quick fix that preceded a real fix.
[perl #40349] [PATCH] #40278: [CAGE] perl coding standards coda.
<http://xrl.us/rvnq>
Paul Cochrane sent a patch to try to close ticket [perl #40349]
<http://xrl.us/rvnr>, which was related to [perl #40278]
<http://xrl.us/roay> and concerned coding style.
[perl #40360] [PATCH] implement loadlib(NULL) <http://xrl.us/rvns>
Dmitry Karasik sent a patch in [perl #40360] <http://xrl.us/rvnt>,
which was applied as revision r14670.
Re: [perl #40361] [PATCH] #40278 [CAGE] perl coding standards coda.
(cont.) <http://xrl.us/rvnu>
Paul Cochrane supplied a patch for bringing various files in the
Parrot repository up to the coding standards. Jerry Gay noted some
problems with the change, which Paul corrected. This was eventually
added to RT as [perl #40364] <http://xrl.us/rvnv>.
#parrotsketch logs: 19SEP06 <http://xrl.us/rvnw>
Jerry Gay posted the URL of latest #ParrotSketch log
<http://xrl.us/rvnx>.
[perl #40367] [TODO] SDL tests <http://xrl.us/rvny>
In ticket [perl #40367] <http://xrl.us/rvnz>, Leopold Toetsch
requested tests for configuration, all SDL classes and interfaces,
tests of full-fledged examples, and eventually tests for the GUI.
[perl #40370] [PATCH] code_coda.t update <http://xrl.us/rvn2>
Paul Cochrane submitted a number of patches to add the required emacs
and vim coda as requested in [perl #40279] <http://xrl.us/roa2>.
* [perl #40370] <http://xrl.us/rvn3> (applied as 14671)
* [perl #40371] <http://xrl.us/rvn4> (applied as 14673)
* [perl #40372] <http://xrl.us/rvn5> (applied as 14674)
* [perl #40373] <http://xrl.us/rvn6> (applied as 14675)
* [perl #40374] <http://xrl.us/rvn7> (applied as 14676)
* [perl #40377] <http://xrl.us/rvn8>
* [perl #40393] <http://xrl.us/rvn9> (applied as 14688)
[perl #40379] [TODO] investigate use of tools/dev/as2c.pl
<http://xrl.us/rvoa>
In ticket [perl #40379] <http://xrl.us/rvob>, Jerry Gay requested an
investigation in to `tool/dev/as2c.pl` because makefile it calls is
not platform-independent. Leopold Toetsch explained the purpose behind
the file.
[perl #40380] [PATCH] errors on 'make install' - src/pdb.c
<http://xrl.us/rvoc>
In ticket [perl #40380] <http://xrl.us/rvod>, Herbert Poul reported a
failure with `make install`. He included a patch.
[DONE] shootout example testing <http://xrl.us/rvoe>
Karl Forner included a patch to test the shootout PIR programs in
`examples/shootout.pir`, which was applied as r14684.
[perl #40392] [CAGE] convert C<internal_exception> to C<real_exception>
<http://xrl.us/rvof>
In ticket [perl #40392] <http://xrl.us/rvog>, Jerry Gay requested that
instances of `internal_exception` be replaced with `real_exception`.
Bob Rogers pointed out that in many instances, `internal_exception`
might be needed because `real_exception` requires a working control
stack.
[perl #40394] [PATCH] Added a test for multiple codas to
t/codingstd/code_coda.t <http://xrl.us/rvoh>
Paul Cochrane sent a patch as ticket [perl #40394]
<http://xrl.us/rvoi>. The patch includes tests for multiply-defined
codas. Jerry Gay modified it slightly and applied it as r14686.
[perl #40402] Remove src/ops/dotgnu.ops <http://xrl.us/rvoj>
Bernhard Schmalhofer wondered in ticket [perl #40402]
<http://xrl.us/rvok> if he could remove `dotgnu.ops` which was a
conversion file for C# which now appears obsolete. Jonathan
Worthington suggested removing it, and Leopold Toetsch pointed to his
generic answer on the subject.
Users
the CGI.pm in Perl 6 <http://xrl.us/rras>
Last week, a number of posts were devoted to discussing the merits of
refactoring and renaming CGI.pm for Perl 6. Removing HTML generation
methods from the core module, renaming CGI, and the relationship
between CGI.pm and session management received the most type. This
week, the thread continued.
Once again, several people expressed the opinion that HTML generation
could be included in a separate module which worked well with the
parameter gathering, but the view that these are integrated tasks was
also expressed. Mark Stosberg suggested that people who have concrete
ideas about the API should create a wiki page
<http://rakudo.org/perl6/index.cgi>. This would allow the design to be
developed by many people and understood by those with less API design
experience.
Mark also pointed out that the suggestion of `use perl5:CGI` might not
work well in practice, as currently it is not clearly defined how to
pass information to Perl 5. This led to a side discussion on how Perl
5 embedding should work. Mark created a wiki page <http://xrl.us/rvon>
to summarize expectations about Perl 5 embedding.
Meanwhile, Juerd suggested that the `param` method should be replaced
with two hashes, `get` and `post`. A. Pagaltzis thought that the
beauty of the `param` method is that it lets you treat input as
single- or multi-valued at your own discretion. The topic continued,
with a detour to cover the correct syntax for `my @bar =
$q.param<bar>[];`.
Another topic was concerned with the default encoding. An argument was
made for it being UTF-8, and another person preferred it to be
undeclared. The HTTP specification says that the default is Latin 1.
In thread CGI Session management (was Re: the CGI.pm in Perl 6)
<http://xrl.us/rrax>, the discussion of session management continued.
Last week, Michael Snoyman suggested including it in CGI.pm, and Yuval
Kogman begged for a plugin solution. This week, the thread was
consumed by the API design and module naming discussions from the
initial thread.
In the splinter on module names, Juerd was completely against anything
which contained the word 'CGI'. Ian Langworth proposed 'HTTP', but
several people thought that the module typically involves fetching
parameters, not dealing with the protocol.
As for the API design discussion, it repeated the main thread's
arguments for the most part. Jacinta Richardson introduced a new
request: subroutines should have a uniform naming scheme, rather than
mixing terms (`scrolling_list` but `popup_menu`) and underscores
(`textfield` versus `password_field`).
For more CGI discussion, also see Web development I: Web::Toolkit
<http://xrl.us/rvom>.
Trying to use Perl5 modules <http://xrl.us/rraw>
Earlier, Richard Hainsworth was trying to discover how to use Perl 5
modules in Perl 6. He included some code which worked in Perl 5, and
asked how he could use them in Pugs. Trey Harris replied that imports
currently don't work, and showed a workaround. Audrey Tang answered
that imports were implemented a few weeks ago, but implicit imports
aren't supported yet.
This week, Mark Stosberg thanked Audrey for the status update and
corrected the wiki to contain this information. He invited others to
include tips about Perl 5 embedding <http://xrl.us/rvon>.
Index of terms <http://xrl.us/rvoo>
Richard Hainsworth asked for an index of terms to be compiled for the
Synopses. The silent masses apparently use `grep -r`, or Perl6::Bible
<http://xrl.us/rvop>.
more on perl5 modules <http://xrl.us/rvoq>
Richard Hainsworth asked for help using Perl 5's Gtk2 module in a Perl
6. Aristotle Pagaltzis corrected his code, but that version didn't
work on Richard's version of pugs, which Juerd explained was ancient.
Trying to make a new operator <http://xrl.us/rvor>
Richard Hainsworth was trying to define a custom operator, but it
didn't work out. Daniel Hulme noted that the operator has to be
declared up right to be used, and Yuval Kogman subsequently nitpicked
that only the grammar needs to know about it's existence, and a stub
definition will do. With his new found knowledge, Richard went on to
implement the birth of Jesus, which Markus Laire refactored. No
religious wars ensued.
Web development I: Web::Toolkit <http://xrl.us/rvom>
After much discussion in 'the CGI.pm in Perl 6 <http://xrl.us/rras>',
Juerd decided to create a new thread to clarify and summarize his
feelings on how Perl 6 should address web development. The
conversation moved on to XHTML versus HTML and whether code which
generates HTML should confirm to the XHTML specifications by default.
Juerd continued the discussion of web development in 'Web development
II: Code <http://xrl.us/rvos>' with code examples.
perl6 and a multi-interpreted-language example <http://xrl.us/rvot>
William Herrera cited a blog post <http://e-scribe.com/news/193>, akin
to a language shootout, implementing the game of reverse in several
languages. Juerd and Larry Wall provided their take on a Perl 6
version of the code, while Aristotle Pagaltzis provided a version in
Perl 5 which he felt represented it better.
perl6 and a multi-interpreted-language example <http://xrl.us/rvou>
William Herrera asked how one would go about implementing the game of
Reverse <http://e-scribe.com/news/193> in Perl 6. Larry promptly
supplied a Perl 6 version, while Aristotle Pagaltzis provided an
implementation in Perl 5 that seemed to do it more justice.
Perl6 "style-guide" <http://xrl.us/rvov>
Fagyal Csongor asked if someone was willing to write a Perl 6 style
guide. Aristotle Pagaltzis debated the merits of such a site, and
mentioned that a cheat sheet for Perl 5 hackers would be nice. Carl
M??sak mentioned the pugs porting howto <http://xrl.us/rvow> in
response. Darren Duncan suspected that Damian Conway's Perl Best
Practices book was written to be forward compatible with Perl 6, a
suspicion that Larry Wall confirmed. Lastly, Jerry Gay urged Fagyal to
start a wiki page for a style guide, an idea expanded on by Michael
Snoyman.
Web development II: Code <http://xrl.us/rvos>
Juerd posted several pseudocode stub classes for the basis of a web
framework, proposing that they be put on some wiki space. Steffen
Schwigon then offered the list in general subversion space for such
endeavors.
This message followed from 'Web development I: Web::Toolkit
<http://xrl.us/rvom>'.
Compiler
PCR replaces PGE in Pugs <http://xrl.us/rvox>
Agent Zhang announced that PCR (the implementation of Perl 6 rules in
perl 5) will replace PGE as the default rule engine in Pugs. This is
supposed to solve the many issue people have with binding pugs to
parrot.
Check smoke results while reading Synopses <http://xrl.us/rvoy>
Agent Zhang announced that the smoke server and the synopses are now
integrated using the smart link platform.
Updates to "Perl 6 and Parrot Essentials" <http://xrl.us/rvoz>
ajr asked if an errata/updates file for Perl 6 and Parrot Essentials
(2nd edition) <http://xrl.us/rvo2> exists. Agent Zhang said that the
book is now very much out of date, and that the synopses are a better
place to look. Michael Snoyman and Sam Vilain both said that in their
opinion the book was still a nice way to jump into Perl 6.
Acknowlegements
This summary was prepared using Mail::Summary::Tools
<http://xrl.us/qvno>, now available on CPAN.
If you appreciate Perl, consider contributing to the Perl Foundation
<http://donate.perlfoundation.org> to help support the development of
Perl.
Yuval Kogman covered a number of threads this week.
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.perl.org/perl6>