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
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
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
Mark Stosberg had a comment on the specification for smart linking. He offered a suggestion to make the documentation more useful to users.
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.
TSa wondered how typing of mixins 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.
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
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.
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
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.
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.
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?
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
Last week,
Karl Forner posted that he is working on [perl #40064]. 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
.
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.
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
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.
Paul Cochrane sent a patch to try to close ticket [perl #40349], which was related to [perl #40278] and concerned coding style.
[perl #40360] [PATCH] implement loadlib(NULL)
Dmitry Karasik sent a patch in [perl #40360], which was applied as revision r14670.
Re: [perl #40361] [PATCH] #40278 [CAGE] perl coding standards coda. (cont.)
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].
Jerry Gay posted the URL of latest #ParrotSketch log.
[perl #40367] [TODO] SDL tests
In ticket [perl #40367], 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
Paul Cochrane submitted a number of patches to add the required emacs and vim coda as requested in [perl #40279].
[perl #40379] [TODO] investigate use of tools/dev/as2c.pl
In ticket
[perl #40379],
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
In ticket
[perl #40380],
Herbert Poul reported a failure with make install
. He included a
patch.
[DONE] shootout example testing
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>
In ticket [perl #40392], 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
Paul Cochrane sent a patch as ticket [perl #40394]. 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
Bernhard Schmalhofer wondered in ticket [perl #40402] 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
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. 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 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), 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.
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.
Richard Hainsworth asked for an index of terms to be compiled for the Synopses. The silent masses apparently use grep -r
, or Perl6::Bible.
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.
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
After much discussion in 'the CGI.pm in Perl 6', 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' with code examples.
perl6 and a multi-interpreted-language example
William Herrera cited a blog post, 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
William Herrera asked how one would go about implementing the game of Reverse 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.
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 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.
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'.
Compiler
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
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"
ajr asked if an errata/updates file for Perl 6 and Parrot Essentials (2nd edition) 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, now available on CPAN.
If you appreciate Perl, consider contributing to the Perl Foundation 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, kudra@domaintje.com.
Distribution
This summary can be found in the following places:
See Also