Summary updates
This post continues with the task of addressing the Perl 6 summary backlog. The following schedule is planned for the remaining updates:
After the 20th of August I hope to return the summaries to a weekly schedule.
perl6-users
class introspection and extension
Max Demmelbauer is in the process of porting his web-framework project to Perl6 had had a question on how he could serialize objects and extend a class. Thomas Wittek offered an example of syntax and gave links to the documents the information was derived from. Conrad Schneiker noted that he and other people on the #perl6 IRC channel would be happy to help if the mailing list didn't yield answers.
Conditionally included list elements
A. Pagaltzis asked if Perl 6 has a construct to express conditionally included list elements, which require several steps in Perl 5. A couple of people responded with suggestions.
Revised Perl++ Wiki Proposal / $1k bounty
Discussion on the prize for a Perl 6 wiki written in Perl 6 continued (RE: $1,000 prize for Perl 6 Wiki written in Perl 6), with Ovid clarifying what the Perl Foundation would require in order to get involved.
This led to Conrad Schneiker starting this thread, outlining his revised proposal: namely, to install twiki and gradually convert it to Perl 6. The prize would be offered to the group or person who performed a series of tasks Conrad listed. There was some discussion on the new proposal.
Meanwhile, the original thread spawned several other conversations:
May's summary contains a description with how the wiki project began.
Chris Yocum had some questions about multi keyword and multimethods in general. Steffen Schwigon advised reading S06. Steffen then asked when his examples would be used in practice. Several people responded.
The next thread grew out of the discussion.
Can foo("123") dispatch to foo(Int) (was: Multi Method Questions)
This thread grew out of Multi Method Questions, with Markus Laire asking for clarification. The discussion continued in perl6-language.
perl6-language
Synchronized / Thread syntax in Perl 6
John Drago asked if the syntax for synchronized and threaded restrictions had been worked out. This led to a discussion on the term 'synchronized' and alternative phrases, such as 'is serial', 'locked' and 'is exclusive'. A number of people, including Larry Wall, replied with syntax suggestions.
Concurrency: hypothetical variables and atomic blocks
Jonathan Lang asked how an atomic block differs from one where all variables are hypotheticalized, and why the 'retry' exit statement would be needed. Several people noted differences, which led to a lengthy discussion on different types of locking.
About default options ':ratchet' and ':sigspace' on rules
Shu-chun Weng, who is working on 'MiniPerl6' in Pugs, uses a Perl
6 grammar to describe Pugs::Grammar::MiniPerl6
and had two suggestions
on how rules could be changed to make them easier to write: ignore
spaces where they are irrelevant, and change :P5/\s+/
to use \s*
.
Patrick R. Michaud had examples of why ignoring whitespace might be
problematic, and recommended using a token statement instead. Information
about the Pugs::Compiler::Rule
's parsing was added by Audrey Tang to
S05 in r9442.
Perl5 -> Perl 6 Translations Design Document
Sage La Torra was working on a design document detailing translations and asked for review. Jonathan Worthington found a possible edge case, and Larry Wall clarified. Several other people had minor suggestions.
Daniel Hulme wrote about the two positions on how smart-matching against
booleans should work. Larry Wall added some clarification on
when .true
, when True
, and deprecated when true
. Eric had some
further thoughts on booleans.
Daniel Hulme asked if someone could explain how }
on a line can end
a statement (as described in S04), but can also be used in an uncuddled else.
Uri Guttman proposed a synopsis edit hackathon at YAPC::NA Chicago.
Yuval Kogman suggested that .can
would be extended to allow
$object.can(Class)
and $object.can(Role)
. Sam Vilain wanted
to know why .does
or .isa
couldn't be used in this context.
Yuval explained that this would be useful if you do not control
an $object's class.
Leopold Toetsch announced the release of Parrot 0.4.5.
lvalue functions and lvalue parameters
Daniel Hulme had a question concerning the workings of lvalues. Jonathan Scott Duff offered his opinion on what he would expect in each of the cases Daniel presented. Sam Vilain also weighed in.
Daniel Hulme asked if it would be useful to have a way of 'binding' a variable name to a given type in a specific lexical scope, so that every time a variable with that name is declared within the scope it receives the same type.
Szilakszi Bálint posted a request to collect ideas on how optional logging could be added to classes. Yuval Kogman added a suggestion, but added that he felt the most useful logs are manually added to give the most meaningful information.
Darren Duncan noticed in S12 that the 'Enums' section refers to a 'str' type but S06 does not. He suggested updating the documentation.
features of and declaring Mapping|Set|Hash values|variables
Darren Duncan has seen similarities between features of the Set type, Mapping type and the Hash type and wondered if some features could be expanded. Sam Vilain commented on several of the points.
Delegating and defining a method at the same time
Adriano Ferreira asked what would happen if a class both handles something
via has
and also uses meth
to introduce an alternate definition.
[svn:perl6-synopsis] r9725 - doc/trunk/design/syn
In response to Audrey Tang's commit, Aaron Crane noted that he understood why 'environmental' had been changed to 'contextual' but questioned whether 'contextual' was the best alternative because 'contexts' already have a meaning. He proposed 'ambient variables'. Audrey responded that a context is passed along with your calls, and in that sense 'want' is a contextual variable.
perl6-internals
[perl #38594] [BUG] source line numbers
In February, Leopold Toetsch noted in ticket [perl #38594] that source line information is off by at least one on several instructions in PASM/PIR. Vishal Soni started to look in to the bug in June, and in July the patch was applied.
In April, Will Coleda reported that find_global
is affected by the
.namespace directive, when he thought it should only be affected by
the .HLL directive, and Chip Salzenberg made a correction.
In June, Leopold Toetsch noted that NameSpace.parent()
is now
implemented. There was a brief discussion on this new feature.
[perl #38964] .sub names can't be Unicode.
Will Coleda created a ticket ([perl #38964]) because .sub
names written in unicode gave errors. Leopold Toetsch fixed it
in r12863 and noted that additional tests would be welcome.
[perl #39244] [PATCH] Initialize I and N registers.
Andy Dougherty created ticket [perl #39244] to offer a patch to initialize I and N registers, because they are 0 in DEBUGGING builds, but in non-debugging builds they are not consistently set. Leopold Toetsch applied a modified version of the patch.
[perl #39245] [PATCH] Update Platforms -- Late May 2006
In May, Andy Dougherty created ticket [perl #39245] to introduce a patch
to include updates from his Solaris 8 results, and to update the
PLATFORMS
document in general. Leopold Toetsch applied the patch
in June.
[perl #39255] Revision 12862 fails tests on OS X
Tim Bunce authored ticket [perl #39255] to report failing tests. These were previously known issues, according to Will Coleda, but he was later able to report that as of r12867 they were fixed.
Alberto Simões reported that there is a map of people working on Parrot and invited people to add themselves to it.
grammar: difference between rule, token and regex
Rene H. Møller asked for a clarification on the differences between rule, token and regex. Jerry Gay suggested S05 for information on the recent changes on these topics. Patrick R. Michaud also provided a quick summary.
[perl #39272] failures in languages/tcl/t/cmd_lsort.t
Will Coleda created ticket [perl #39272] to report failing tests that he was unable to isolate.
Charles Reiss included a design for the PASM-visible interface to software transactional memory, which is also available at stm_frontend.pod. He requested comments. Leopold Toetsch replied.
[perl #39313] [TODO] or [BUG] improve PMC compiler
In ticket [perl #39313], Leopold Toetsch described some code which is just ignored by the PMC compiler and invited patches. Klaas-Jan Stol identified the location of the problem but could not fix it. Joshua Juran added some comments as well.
Inconsistent find_global 'not found' handling
Bob Rogers reported that if a namespace key with a single component is not found, Parrot reports the error, but if the namespace name is compound, a null PMC is returned. He supplied a patch to make it throw an error as well.
[perl #39329] Check to make sure PMC_str_val, etc. are used appropriately
Matt Diephouse wrote ticket [perl #39329] to note that
PMC_str_val
and relatives are not guaranteed to work for subclasses.
[perl #39378] Pheme Segfault with Keyed Class Names
Chromatic penned report [perl #39378] to describe a failure he encountered with tests after applying a patch to port Pheme's class names to the new keyed style. Leopold Toetsch felt that it might be a GC bug. A fix was applied in r12950.
[svn ci] .Net to PIR translator
Jonathan Worthington posted the URL of his dissertation on translating .Net assemblies to PIR.
Bob Rogers requested some clarification of a portion of pdd23_exceptions.pod
from late May, dealing with .begin_eh
. He wondered if this meant that
the current process of searching for an Exception_Handler object on the
control stack would be replaced with a search through sub metadata when
an error is thrown, and asked about how it would interact with pushaction
.
Chip Salzenberg agreed that Bob's interpretation of the plan was
correct and noted that no resolution had been reached with pushaction
.
A discussion on the merits of different ways of handling it ensued.
[perl #39425] [TODO] namespaces: store_global variant
Will Coleda created ticket [perl #39425] to request a store_global
opcode that accepts a multi-element NS key. Jonathan Worthington
implemented it.
[perl #39426] [BUG] Can't build with cygwin.
In [perl #39426], Will Coleda reported that the Cygwin build fails in r12926.
[perl #39430] Method cache not always invalidated
Jonathan Worthington created ticket [perl #39430] to report
that Parrot_store_global
and store_sub
call
Parrot_invalidate_method_cache
but Parrot_store_global_p
and
store_sub_p
do not.
[perl #39454] [TODO] [easy] $svn keyword expansion$
In ticket [perl #39454], Will Coleda suggested that someone clean
up the repository to correct unexpanded svn Id
tags.
Re: [perl #38788] make test results
Ryan Hinton reported that r12936 was failing. This was in response to Will Coleda's request for a check against r12926 or later, which was in itself a reply to a FreeBSD failure report from March ([perl #38788]).
Chip Salzenberg wondered if Parrot exceptions were resumable, and if it was important if they were. Larry Wall said that he did not feel it was necessary to include special code to make exceptions resumable, but noted that documentation was missing. John M. Dlugosz, previously in favor of resumption, related the story of his conversion. Larry replied about how his initial termination stance had been modified.
[perl #39483] [TODO] fix PGE::OpTable comments, test.
Will Coleda created ticket [perl #39483] to suggest a fix. He thought it looked like double '#' were needed for comments. Patrick R. Michaud did not have the same experience with r12990.
Leopold Toetsch responded to an IRC comment on the type number and type name of read-only PMC variants. Klaas-Jan Stol, Chromatic and Larry Wall offered their opinions.
[perl #38146] [TODO] OS.pmc - file copy 38146
In January, Will Coleda created ticket [perl #38146] to request
that OS.pmc provide a copy(source_file.target)
and a
copy(array_of_source_files.targetDir)
. There was a long
discussion on whether this should be done.
In June, Vishal Soni wrote about an attempt to implement the request in this ticket. Leopold Toetsch and Vishal discussed the requirements and implementation.
threading creation syntax proposal
Charles Reiss included a proposal to change the syntax for the creation of threads, to move away from the three-tiered threading system. Jonathan Worthington had a few comments, which Charles responded to.
[perl #39552] Segfault on FreeBSD during make
David Landgren reported in ticket [perl #39552] that he was getting a segmentation fault when trying to gmake the latest sync. Leopold Toetsch thought it sounded like a conflict with an existing installed Parrot, and suggested the removal of any installed Parrot libraries.
[perl #39597] Problems with string constants in method calls
In ticket [perl #39597], Matt Diephouse noted that a portion of
languages/tcl/src/class/tclcommand.pir
is giving problems for Parrot.
He later identified pbc_merge
as the source of the problem, which
Jonathan Worthington confirmed and fixed in r13020.
Jerry Gay proposed that a three-argument form of find_lex be employed
to specify where to start finding lexicals in support of OUTER::
from S04; the third parameter would be an integer specifying the level
in the chain where the lookup should start. Discussion led to the
suggestion of an opcode.
Nicholas Clark wanted to know if it was logical to write opcodes such as this one in Parrot assembler. Audrey Tang replied, and there were additional followups.
[perl #39615] [TODO] get_outer op not defined in PDDs
Jerry Gay noted in ticket [perl #39615] that there are tests for
get_outer
in t/op/lexicals.t
but the opcode is not documented anywhere.
He thought it should go in PDD20.
Vishal Soni wondered if Parrot IO would be implemented with opcodes or PMC. Jonathan Worthington replied that the most recent thoughts on the topic were in PDD22.
Search order for load_bytecode et al
Jonathan Worthington wondered if the search order for load_bytecode
should be changed to look in the current working directory first, as
a solution until it is possible to set the search order.
Vishal Soni proposed defining a Parrot platform API that all Parrot ports would need to implement, which would remove platform-specific code out of the core logic. Nicolas agreed with the proposal, while Nicholas Clark noted that Chip Salzenberg was at YAPC::NA and might take some time to reply.
Vishal Soni created [perl #39638] to include a patch for
imcc.y
to fix a decrementing counter at the start of a sub
token.
[perl #39648] PGE - bad variable name
In ticket [perl #39648], Will Coleda posted Patrick R. Michaud's request
that lastpos
be renamed.
Patrick R. Michaud posted slides from his YAPC talks, 'Perl 6 Compiler Status and the Parrot Compiler Toolkit' and 'Parser, Perl 6 Rules, and the Parrot Grammar Engine'. Audrey Tang thanked Patrick for the talk, and included links to her own talk, 'Deploying Perl 6'. Will Coleda's 'Parrot Target Practice' slide link was also posted.
João Cruz Morais had some questions concerning Patrick's talk, which Chromatic, Jonathan Scott Duff and Patrick answered.
Matt Diephouse ran in to problems implementing namespace support in Tcl and had a few questions. Chip Salzenberg replied, and in the end it was determined that some of Matt's requests were already met, and that one should be a bug report.
[BUG] parrot 0.4.5: Configure.pl: tru64
Jarkko Hietaniemi reported a problem with Parrot with tgetnum
and asked if there was a way to add verbosity to show what commands
are being run. Leopold Toetsch advised perl Configure.pl
--verbose-step=snprintf
, and Jarkko included a more detailed report.
Jarkko resolved to get the admins to compile a newer libreadline
after some discussion with Leopold. Will Coleda felt the test for
readline should be improved. There were some discussions on how
to do this.
[perl #39663] [TODO] perl coding standards
Will Coleda wrote in ticket [perl #39663] that Perl coding
standards should be determined, then enforced with a .perlcriticrc
file, and a test should mention files which fail to conform.
IMCC Register Allocation Algorithm
Vishal Soni suggested changing the register allocation algorithm to 'Linear Scan Allocation'. Chromatic thought that it would be nice to have the implementation to benchmark, and to have IMCC cleaned up in the process. Watson Ladd thought bin packing would be an even better choice.
[perl #39669] No PIR Compiler Available for Embedded Parrot
Chromatic created ticket [perl #39669] because there is no PIR
compiler available for embedded Parrot. Leopold Toetsch said the
PIR compiler is registered in imcc_init()
, which should probably
be called during the Parrot init sequence. Chromatic applied a
patch as r13066.
Chip Salzenberg wrote that he had a complete exceptions PDD.
perl6-compiler
Allison Randal finished a round of refactoring and feature additions to Parrot's tree grammar engine (TGE). She posted a summary of the changes.
Andy Dougherty looked in to whether it would be possible to deploy Perl6 on a system which runs neither GHC nor Parrot using v6-pugs. Flavio S. Glock offered some installation help. There was some further discussion on the state of the project.
Audrey Tang replied to Swaroop C H's post asking about the numerous Perl6 backends, offering clarification on the different implementations. There was additional discussion on the state of the implementations, with Chromatic also joining in. Uri Guttman mentioned the Chicago YAPC docathon could work on making this clearer.
problem compiling UTF8 on Win32
A problem was reported with compiling UTF8 on Win32, but the same
poster discovered that PUGS_EMBED
had been set tp 'perl5' and
removing the setting fixed the problem.
Acknowlegements
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>.
See Also