This week on the Perl 6 mailing lists
“When I first read ‘Warnock applies’ on things in p6 summaries a year or so ago, I thought it was some really energetic programmer who went around and applied patches as soon as people posed a question.”
– Carl Mäsak, on Warnock’s Dilemma
Paul Seamons asked why multiple nested statement modifiers (
say "foo" if $foo for 1 .. 3) are disallowed. A long discussion on the technical and ergonomical problems was stirred up. The general consensus is that there is still no good reason to allow nested statement modifiers.
In a subthread of ‘Nested statement modifiers‘, Aaron Sherman asked what the semantics of exceptions within hyper operators are. Larry explained that since hyperoperators imply not caring about the order of the side effects (for multithreaded goodness), which element generates an exception might be implementation dependent.
Last week, 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.
This week, Sam Vilain thought that it would be the same as requiring that a class implement a method, except for a difference in syntax. This led Brad Bowman to ask how a role can require a target class to implement a method or do another role. Stevan Little answered that he believed this was done by providing a method stub. Jonathan Lang mostly agreed with Stevan and offered more details.
chromatic thought that forbidding methods was potentially like the false-cognate problem. Stevan admitted that he had yet to find a real-world use for it.
There was further discussion on roles.
Last week, an earlier discussion on S05 subrules continued. Audrey
Tang wondered if there was a hidden cost to making
react so that
$<foo>.from returns something. Carl Mäsak
preferred the proposed semantics and asked if
the question had been discussed off-list.
This week, Audrey replied that there had been no further discussion. Carl asked for a short snipped to illustrate it, and supplied an anecdote about Warnock applying.
Last week there was a great deal of discussion on this subject.
This week, Tsa asked, in response to Larry Wall’s comment, if namespaces give a structural type definition.
Also, Aaron Sherman started a new topic entitled ‘Abstract roles, classes and objects’. He asked rhetorically what was the use of an interface which doesn’t give a guarantee. Trey Harris responded that there are three ways to manage a guarantee: an ‘is abstract’ marker, some type of inference, or by disallowing abstract classes. Jonathan Lang offered his definition of ‘instance management’.
Joshua Choi asked how coercion interfaces are implemented and implicitly used.
Musings on roles and the terror of implicit coercions in C++ were part of the discussion, but surprisingly the
as multi method was not mentioned at all.
Jonathan Lang initiated a long discussion by objecting to programming styles where a programmer can intentionally prevent someone else from taking what is otherwise a legitimate action. He cited an example from the recent discussion on allowing a role to prevent the consumption of another role (’class interface of roles‘).
There was a suggestion that restrictions could be purely advisory. This led to the question of whether strict is localized. Larry Wall replied that the default is for lexically scoped pragmas, but that S01 states that it must be possible to write policy meta models. More discussion on this topic followed.
Aaron Sherman posted that he was considering creating an archive of messages from the mailing list which would be easier to search than Google. The problem with the Google archive is that it includes discussion, and he’s only interested in decision. He asked for opinions on the examples he posted. Darren Duncan suggested seeding from the existing mailing list archives.
In this commit, Audrey Tang removed the ’single argument function becomes a method’ rule from S12.
Markus Laire quoted a section of S04 on lines ending with
} followed by nothing but whitespace or comments.
He wondered if this meant that an else statement like
would be the same as the same without the semicolon.
Jonathan Lang wanted to know what would happen if he imported two modules which export the same method. He felt that the resolution should be similar to role composition techniques. He suggested some syntax. Aaron Sherman thought that only plain multis would conflict, and suggested a warning would be most appropriate.
Aaron Sherman quoted a section from S04 on the hash composer. He was afraid that the current syntax could lead to ‘looks fine to the uninitiated’ errors. He suggested providing an unambiguous form for all the sigiled types. He elaborated on his proposal.
Earlier, Will Coleda posted an attempt at creating a perlcritic test. This week, Chris Dolan created a patch to simplify the test code by using Test::Perl::Critic.
Last week, Allison Randal asked for a volunteer to write up the requirements for a mini transformation language to use the compiler tools. The job would involve spending time with Allison and Patrick Michaud and combining their ideas along with your own perspective. Adriano Ferreira offered some opinions on the subject, and Markus Triska volunteered to do it if it relates to his area of expertise.
This week, Aaron Sherman expressed confusion over the purpose of this project. He thought TGE performed this task. chromatic replied that the mini language would be “the stuff in curly braces” in the TGE grammar files.
Adriano Ferreira named some desired features in a transformation language, such as a data structure pattern language, and rules which are selected via the patterns.
Allison reported that there were several volunteers.
Last week, Jonathan Worthington committed a draft PDD on Parrot’s
bytecode format. Ben Morrow wanted to know if pbc files could allow an
#! line so that they could be used as executables. Jonathan
replied that he had considered this, but rejected it because it is
UNIX-specific. There was additional discussion on the topic.
This week, Karl Forner suggested working around the need to specify
the absolute path by using the
In ticket [perl #40443], Matt Diephouse noted that it was decided at OSCON 2006 that vtables and methods should be separated. This is the request for this modification.
Nikolay Ananiev is working on a C project which will embed Parrot. He’d like it to be as portable as Parrot, and wondered if there was some way he could take advantage of Parrot’s portability.
Karl Forner was unable to find detailed specifications for the FixedBooleanArray and ResizeBooleanArray PMCs and was wondering what should happen if they were resized. Leopold Toetsch replied that the FixedBooleanArray won’t resize, and specified what the default values should be.
Some additional questions were asked in ‘[#39063 and #40066] boolean arrays‘.
Bob Rogers announced that as of r14830, continuations capture the
dynamic environment in order to restore it properly on invocation.
He also noted that moving the
control_stack slot broke coroutines,
but that he suspected this was due to problems with coroutines. He
asked to know if any problems with coroutines developed. François Perrad
replied that he’d been unable to implement coroutines in Lua.
Bob Rogers was not surprised, and discussed some of the problems involved.
Paul Cochrane reported that the Perl::Critic policy for the coda
__DATA__ sections, but vim requires the coda
to be within the first or the last 5 lines of the file.
Chris Dolan agreed with Paul that using
=cut for POD in the
__END__ section would work, but was not sure how to handle
Will Coleda approved putting the coda after the
Chris Dolan created ticket [perl #40449] to supply a patch to make improvements to the HTTP server which ships with Parrot. It was applied as r14833.
Aaron Sherman sent a patch which was requested on IRC. It contains code which executes the parser on a sample string and dumps the parse tree; it checks the speed of PGE. chromatic reported difficulties in getting the patch to work.
Ticket [perl #40455], by Bernhard Schmalhofer, contained a patch
to extend the library search path to fix failing tests for
Karl Forner wrote that he has been working on FixedBooleanArray and ResizeableBooleanArray. Ticket [perl #40066] indicated they needed to be rewritten. He also looked at bug [perl #39063] on ResizeableBooleanArray using 64 bytes per bit. He thought that it would be best to rewrite the PMC. He had a few questions on what was desired in an implementation. Bernhard Schmalhofer and Leopold Toetsch tried to answer the questions.
From this, Karl concluded that the best solution might be to use an external lib. He also described two other possible approaches.
A related thread is ‘Questions about FixedBooleanArray and ResizeBooleanArray‘.
chromatic reported that he cannot get Parrot to build. Bob Rogers attributed the problem to his continuation changes, and thought r14845 would correct the problem. chromatic confirmed that this solved the issue.
In ticket [perl #40458], Paul Cochrane supplied a patch to make the C-file coda test work correctly with multiple instances of the coda.
Last week, Jonathan Worthington committed a draft of the Bytecode PDD and Leopold Toetsch offered comments.
Bernhard Schmalhofer wondered if the ‘UUID’ field should be named ‘checksum’. Leopold agreed, but thought that a UUID was also needed. Jonathan noted that he had simply written down the incorrect definition in the file.
Richard Hainsworth posted some code where he was trying to use a role
within a role and wondered why it didn’t work.
Audrey Tang replied that the statement-level
does form of roles
was not yet implemented. Later, she replied that it had been implemented
as r13782. She gave Richard some information on writing tests for Pugs.
Wim Vanderbauwhede reported a problem with using
-> in calculating the
factorial of 5. Audrey Tang found the problem with the code, and
recommended looking at ‘Changes to Perl 5 operators’ in S03. She
asked if Wim could supply a test to ensure that
a parse failure.
Wim Vanderbauwhede wanted to create a bitvector object and had problems
+ operator. He also wondered if it was possible to
overload the assignment operator, and included code from his attempt.
David Brunton offered a suggestion.
Previously, Agent Zhang reported that the synopses on the smoke server are out of date–r12432 as compared to version r12466 on feather, which syncs every hour.
This week, Ingo Blechschmidt asked for an example of something which was out of date, because the timestamps indicated a recent refresh.
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 assisted with summaries 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@example.com.
This summary can be found in the following places: