Re: Runtime Role Issues

2006-10-12 Thread Ovid
--- Audrey Tang [EMAIL PROTECTED] wrote:

  I always thought when a role is applied to a class at runtime you
  get a new (anonymous) subclass. The original class isn't affected.
 
 Right, that's what usually happens with:
 
  my Dog $fido .= new;
  $fido does Catlike;

Am I missing something here?  That's applying a role to an instance of
a class, not the class itself, and thus *should* create a new anonymous
class.
 
 To forcefully add a role to a class at a distance during runtime, use
 
 a class object call (see Moose::Meta::Class for more about these
 APIs):
 
  ^Dog.add_role(^Catlike);

That's more of what I was thinking, but where is this documented?  I
can't find it in http://dev.perl.org/perl6/doc/design/syn/S12.html.  I
see it in the Moose docs, but is this in Perl 6?  I thought it was.

Cheers,
Ovid

--

Buy the book -- http://www.oreilly.com/catalog/perlhks/
Perl and CGI -- http://users.easystreet.com/ovid/cgi_course/


Re: Runtime Role Issues

2006-10-12 Thread Audrey Tang


在 Oct 12, 2006 2:39 PM 時,Ovid 寫到:

--To forcefully add a role to a class at a distance during runtime,  
use



a class object call (see Moose::Meta::Class for more about these
APIs):

 ^Dog.add_role(^Catlike);


That's more of what I was thinking, but where is this documented?  I
can't find it in http://dev.perl.org/perl6/doc/design/syn/S12.html.  I
see it in the Moose docs, but is this in Perl 6?  I thought it was.


Well, it's in Perl 6, and Moose is currently the metaobject layer  
when the

VM that runs Perl 6 happens to be perl5...

Right after the 6.2.13 release (which is ready now, except for  
changelogging),
we'll switch to the Moose team's MO system, ensuring that the  
introspectio

APIs work exactly the same way on both GHC and perl5 virtual machines.

Thanks,
Audrey

Re: [perl #40505] [PATCH] Addition of pmc files to codingstd tests

2006-10-12 Thread Paul Cochrane

chromatic,


 This is because I was too fast with the Send button, and forgot to
 attach the patch.  Apologies for the doubled-up email.

Nit: you can reply to a previous RT mail and attach the patch there.  That
saves a duplicate bug report that someone has to read, consider, and finally
close as a duplicate.

Jerry already pulled me up on that one; I'm still learning the ropes,
and I hope to eventually not to make so much work for other people.
Thanks for letting me know though :-)

Regards,

Paul


Re: [perl #40455] [PATCH] Bring dotnet back into unified languages testing

2006-10-12 Thread Jonathan Worthington

Hi,

Thanks to @all working on getting dotnet translator back into unified 
language testing.  I'll be hacking on the translator more when I return 
from consulting work in Spain, so this is certainly good to have. :-)


François PERRAD wrote:

Any other suggestions?


1) remove the need of the file languages/dotnet/config/N2PConfig.pm
Go ahead. This was a hack while I was developing the translator 
initially and it was outside of the Parrot source tree.


2) generate languages/dotnet/Makefile with config/gen/languages.pm, 
not with languages/dotnet/Configure.pl
This is not so easy, since languages/dotnet/Configure.pl takes various 
parameters:


--srm to configure which stack to register mapping algorithm to build with
--monolibs to give the path to the Mono version of the .Net class 
library, for the make class-library target (which tries to translate the 
class library to Parrot bytecode)


I need (OK, really, really want) to be able to switch SRMs without 
having to re-configure all of Parrot 'cus it's very useful to do this in 
development, when hunting the source of code generation bugs.


As for the class library path stuff: yes, you do only need to 
locate/configure this once, but again, if someone doesn't know that and 
then want to build the .Net translator, I don't think they should have 
to to back and re-configure Parrot and pass a --monolibs=... to the main 
Configure script.


Thanks,

Jonathan


Re: [svn:parrot-pdd] r14784 - trunk/docs/pdds/clip

2006-10-12 Thread Jonathan Worthington

Hi,

Muchly delayed reply, sorry.

Karl Forner wrote:
Just a little trick that can help. If the parrot interpreter in in 
your path, you can workaround
the need to specify the aboslute path by using the env command. For 
instance:

#! /usr/bin/env parrot

I used that trick to enable the use of perl scripts in a 
multi-platform but shared filesystem environment.
Nice trick, but even so it's still UNIX-y platform specific, which was 
my main concern; much more than the different locations on platforms 
where it does work issue.


Thanks,

Jonathan


Re: class interface of roles

2006-10-12 Thread TSa

HaloO,

Jonathan Lang wrote:

Still not following.  Can you give an example?


The example in the original post contains a class GenSquare that
has got an equal method that checks the sides of the self square
and the incoming argument square. The GenPointMixin role provides
an equal method that compares the x and y coordinates. The correct
final method equal of the composed class needs to check sides and
coordinates. If the simple side checking equal of the class
overrides the closure from the role there is a false implementation.
OTOH, forcing all classes to call the role closure is bad design of
the composition process. Hence I'm arguing for a super keyword that
in a role refers to the class. In the example super.equal($p) calls
the side checking closure.



Note that it's entirely possible for attributes to not make it into
the final class, if the accessor methods get redefined in such a way
as to remove reference to the attributes.  This is part of the notion
that roles supply an outline of what the class should do, but only the
class actually supplies the definitive details of how to do it.


I see that you regard the class as the ultimate definer of
functionality. The role requires a method including its signature
but the class implements it. For the type system the role encodes
the guarantee of the method availability.



As I see it: is and does declarations in a role impose
requirements on the final class: it must derive from another class
(is), or it must compose another role (does).  method and has
are each one part requirement and one part suggestion: for method,
the class is required to include a method that matches the given name
(which, of course, includes the method's signature), and a particular
closure is suggested that the class can accept or override.


I almost agree here. The only thing I'm asking for is that the role's
closure is not discarded so easily. The designer of the role takes
responsibility for the role's part in the final method closure. The
combination process should produce the correct result automatically
and independent of the class's cooperation.



Thus, the only things that I'd recommend using to calculate a
type-boundary would be the superclasses (provided by is) and the
method names (provided by method and has).


That makes classes too typeish. The type system is mostly based on
roles. The class inheritance graph should not be used for typing.
Or do you want constraints on the class derivation process that
guarantees subclasses to be subtypes? As I read it the class derivation
is free to violate replaceability of subclasses where superclasses
are expected. Roles are a guarantee of functionality not classes.



I agree with the idea behind the current definition of this: if the
class provides its own definition for a method, that should take
precedence over the role's definition.  If it doesn't, then it adopts
the role's definition as its own.


I would hope it is the role if a as of now
unknown syntax has declared it. Perhaps it should be even the default.
The rational for my claim is that a role is composed several times
and then every class doing the role automatically gets the correct
version. Otherwise all classes are burdened with caring for the role's
part in the method.


Huh?


Yeah! The role adds a certain aspect to the correct implementation of
a method. And so does the class. But it is the role that is composed
into the class not the other way around. A role is intended to be
composed several times into completely different classes. With blind
precedence to class methods the role's aspects are lost and have to
be reintroduced in each and every class. I consider that inconvenient
and error prone.



  It
 should assume that if Foo overrides A's implementation of blah, Foo
 knows what it's doing; by the principle of least surprise, Foo should
  never end up overriding A's implementation of blah only to find that
  the original implementation is still being used by another of the
 methods acquired from A.

Could you make an example because I don't understand what you mean with
original implementation and how that would be used by role methods.


   role A {
 method foo() { say Ah... }
 method bar() { $self.foo() }
   }


Isn't that self.foo() without the sigil? It is clear that .foo
is dispatched on the class.


[..]
   class Baz {
 method foo() {
   $self!'A::foo'();
   say Choo!;
 }
 method bar() { $self.foo() }
 method baz() { $self!'A::foo'() }
 my method 'A::foo'() { say Ah... }
   }


What is A referring to here? Baz doesn't compose role A here.
And why the exclamation mark?



In Baz, Cmy method 'A::foo'() represents the original implementation
of foo(), while Cmethod foo() represents the final implementation
chosen by the class.


OK, thanks for the example.



If you were to allow a role method to directly refer to its own
implementation, you could do something like:

role A {
 method foo() { say Ah... }
 

Re: Runtime role issues

2006-10-12 Thread Miroslav Silovic

Paul Seamons wrote:


On closer inspection, is it even possible to add a Role to a Class at 
runtime?  



If it isn't now, I would certainly like to have a hook available through 
MOP (which is, to the best of my knowledge, still unspecified).




I thought that Class and Role composition outside of compile time 
resulted in

a new pseudo Class for the subsequent instances of that composition - in
which case the original Class would remain unmodified.



I believe 'does' and 'but' operators work that way, yep. Additionally, 
they're per instance. Offhand I don't even recall any way to create an 
uninstantiated class with a role mixed at runtime (would my 
$class_foobar = ::Foo but ::Bar do the trick?)


  Miro



Re: Wikipedia example

2006-10-12 Thread Aaron Sherman
Hey there, sorry about not responding. My mailer hid this message from 
me. I was actually about to reply asking what the deal was. ;)


chromatic wrote:

On Tuesday 03 October 2006 13:41, Aaron Sherman wrote:


This contains the Makefile, README, .pg grammar, a -harness.pir that
executes the parser on a sample string and dumps the parse tree and a
-stress.pir that runs 50,000 trial runs to see how fast PGE is (not too
shabby is the answer, as it comes in at about 1/2 the time of a P::RD
version for the simple example, and gets a bigger lead the more complex
the input expression).


I can't get this to work.  If I run 'make' in the target directory, I get a 
PASM file (with the .pir) extension.  Then if I run either of the PIR files, 
I get:


$ parrot wptest-harness.pir 
error:imcc:syntax error, unexpected LABEL, expecting $end

in file 'wptest.pir' line 3


That's odd. I double-checked the diffs to make sure I didn't send out an 
old version. This code works fine on my box, which I just updated to 
r14904. For me, line 3 of wptest.pir is main:. Should that be a syntax 
error?


That's the very first line of code output by:

 ../../../parrot -o wptest.pir ../../../compilers/pge/pgc.pir wptest.pg

so if there's a problem with it, I'm not sure that I could actually fix 
it. Any pointers appreciated!


Here's what I get:

$ ../../../parrot wptest-harness.pir
Parsing simple expression: 1+(1+1)
Match results begin:
VAR1 = PMC 'PGE::Match' = 1+(1+1) @ 0 {
expr = PMC 'PGE::Match' = + @ 1 {
type = infix:+
[0] = PMC 'PGE::Match' = 1 @ 0 {
number = PMC 'PGE::Match' = 1 @ 0
type = term:
}
[1] = PMC 'PGE::Match' = (1+1) @ 2 {
expr = PMC 'PGE::Match' = 1+1 @ 3 {
expr = PMC 'PGE::Match' = + @ 4 {
type = infix:+
[0] = PMC 'PGE::Match' = 1 @ 3 {
number = PMC 'PGE::Match' = 1 @ 3
type = term:
}
[1] = PMC 'PGE::Match' = 1 @ 5 {
number = PMC 'PGE::Match' = 1 @ 5
type = term:
}
}
}
type = term:
}
}
}
match complete



Re: Null PMC access while parsing javascript

2006-10-12 Thread Patrick R. Michaud
On Wed, Oct 11, 2006 at 04:34:17PM -0500, Patrick R. Michaud wrote:
 On Wed, Oct 11, 2006 at 10:56:39PM +0200, Mehmet Yavuz Selim Soyturk wrote:
  I have rewritten the grammar. There are some problems though.
  
  - I don't know how to express thinks like: an identifier is
  [a..zA..Z_$]*, but not a keyword. Something like: rule identifier
  {!keyword[a..zA..Z_$]*} seems not to allow identifiers that have
  keywords as prefix.
 [...]
 However, the \b metacharacter is disappearing soon, to be replaced
 by ?wb and !wb.  In its place will be   and , making
 the above:
 
 token keyword {  [ if | else | for | while | ... ]  }
 
 I'll get  and  added into PGE today/tomorrow.

OOPS!  I just looked at PGE, and apparently  and  
(and their Unicode equivalents) have been been implemented
since late July.  So, go ahead and use the above definition
for keyword.  :-)

  - I couldn't make comments work.
  - I don't know how to handle unicode,
  - How to accomplish semicolon insertion?
 
 I'll have to look at the grammar a bit and see what I can come up
 with here.

I'm still working on this one.

Pm


Re: [perl #40479] [RESOLVED] [PATCH] Adding and correcting C-code coda in autogenerated code

2006-10-12 Thread Paul Cochrane

Hi,

This patch fixes the C-code coda in more autogenerated code.  I
*believe* this should fix this issue completely.

Regards,

Paul

files affected:

lib/Parrot/Pmc2c.pm
Index: lib/Parrot/Pmc2c.pm
===
--- lib/Parrot/Pmc2c.pm	(revision 14904)
+++ lib/Parrot/Pmc2c.pm	(working copy)
@@ -1308,9 +1308,30 @@
 #endif
 
 EOH
+$hout .= $self-c_code_coda();
 $hout;
 }
 
+=item Cc_code_coda()
+
+Returns the Parrot C code coda
+
+=cut
+
+sub c_code_coda() {
+my $self = shift;
+my $cout = ;
+$cout .= EOC;
+/*
+ * Local variables:
+ *   c-file-style: parrot
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+EOC
+$cout\n;
+}
+
 =item Cimplements($method)
 
 True if this class generates code for the method C$method.


Re: Cage Cleaner Wrangler?

2006-10-12 Thread chromatic
On Wednesday 11 October 2006 15:12, Hal Wigoda wrote:

 i'd volunteer but what skills/duties are involved?

1) Keep track of the CAGE buglist, making sure tickets get closed 
appropriately
2) Keep a Cage Cleaners website up to date
3) Let people who write Perl newsletters and summaries know about the open 
tickets of the week
4) Pester people with commit privileges to look over submitted patches 
frequenly

-- c


Re: class interface of roles

2006-10-12 Thread Jonathan Lang

TSa wrote:

HaloO,

Jonathan Lang wrote:
 Still not following.  Can you give an example?

The example in the original post contains a class GenSquare that
has got an equal method that checks the sides of the self square
and the incoming argument square. The GenPointMixin role provides
an equal method that compares the x and y coordinates. The correct
final method equal of the composed class needs to check sides and
coordinates.  If the simple side checking equal of the class
overrides the closure from the role there is a false implementation.


Actually, the correct equal method for the composed class needs to
check the sides of the square, because how the class defines it: in
this example, class GenSquare _is_ the final class, and so whatever
method it provides _is_ the final method, for good or ill.  If this
results in other method definitions inherited from GenPointMixin
behaving strangely, then GenSquare needs to override those methods as
well.

Mind you, the above implies a radical shift in the underlying
semantics, akin to having class Dog compose role Tree and redefining
method bark() to suit its own nature.  Proper use of role composition
is to refine the role's underlying concept, not to radically alter it.
Even if we were to go with a modified version of the original
example, where GenSquare is a role and both GenSquare and GenPoint are
being composed into a final class - say, GenPositionedSquare - you
still have the problem that the final class is conceptually supposed
to be both a GenSquare and a GenPoint at the same time.  If the
underlying concepts behind the composed roles are fundamentally
incompatable (such as a Dog and a Tree), you're going to have
problems.


OTOH, forcing all classes to call the role closure is bad design of
the composition process. Hence I'm arguing for a super keyword that
in a role refers to the class. In the example super.equal($p) calls
the side checking closure.


This is what happens by default; no special syntax is needed.


 Note that it's entirely possible for attributes to not make it into
 the final class, if the accessor methods get redefined in such a way
 as to remove reference to the attributes.  This is part of the notion
 that roles supply an outline of what the class should do, but only the
 class actually supplies the definitive details of how to do it.

I see that you regard the class as the ultimate definer of
functionality. The role requires a method including its signature
but the class implements it. For the type system the role encodes
the guarantee of the method availability.


Exactly.


 As I see it: is and does declarations in a role impose
 requirements on the final class: it must derive from another class
 (is), or it must compose another role (does).  method and has
 are each one part requirement and one part suggestion: for method,
 the class is required to include a method that matches the given name
 (which, of course, includes the method's signature), and a particular
 closure is suggested that the class can accept or override.

I almost agree here. The only thing I'm asking for is that the role's
closure is not discarded so easily. The designer of the role takes
responsibility for the role's part in the final method closure. The
combination process should produce the correct result automatically
and independent of the class's cooperation.


Perl has yet to implement a telepathic compiler, so the compiler can
only make best guesses as to what the programmer intended.  For now,
we have to make some concessions to reality; one such concession is
that the most specific thing should have authority over (and
responsibility for) the less specific things.  The thing being
composed into is by definition more specific than the thing being
composed when it comes to implementation; thus, the latter should be
given free rein to redefine the methods provided by the former - and
if things go wrong, you should blame the latter rather than the
former.  Letting a role override a decision made by a class that it's
composed into means that there's something about the role's
implementation that the class cannot touch.


 Thus, the only things that I'd recommend using to calculate a
 type-boundary would be the superclasses (provided by is) and the
 method names (provided by method and has).

That makes classes too typeish. The type system is mostly based on
roles. The class inheritance graph should not be used for typing.


It is a fact that class inheritance affects the behaviour of a class;
it cannot be disregarded when considering type.

That said, class inheritance (with respect to its semantic differences
from role composition) is an area where my understanding is rather
shaky.  To me, the whole notion of inheritance is a bit too typeish
for my tastes; I try to handle _all_ code reuse by means of roles,
with classes only being brought into play when I want to be able to
instantiate an object.  That is, I tend to define what an object is

Re: Runtime role issues

2006-10-12 Thread Jonathan Lang

Miroslav Silovic wrote:

Paul Seamons wrote:

 On closer inspection, is it even possible to add a Role to a Class at
 runtime?


If it isn't now, I would certainly like to have a hook available through
MOP (which is, to the best of my knowledge, still unspecified).


To modify a class at runtime, use Cis also.



 I thought that Class and Role composition outside of compile time
 resulted in
 a new pseudo Class for the subsequent instances of that composition - in
 which case the original Class would remain unmodified.


I believe 'does' and 'but' operators work that way, yep. Additionally,
they're per instance. Offhand I don't even recall any way to create an
uninstantiated class with a role mixed at runtime (would my
$class_foobar = ::Foo but ::Bar do the trick?)


Probably not; but Cmy ::class_foobar := Foo but Bar might.

--
Jonathan Dataweaver Lang


Re: Runtime role issues

2006-10-12 Thread Larry Wall
On Thu, Oct 12, 2006 at 09:27:53AM -0700, Jonathan Lang wrote:
: To modify a class at runtime, use Cis also.

Cis also is compile time.  You'd have to eval it.

Larry


[perl #40519] [PATCH] Removal of t/tools when searching for pmc's

2006-10-12 Thread Paul Cochrane
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #40519]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=40519 


Hi,

This patch removes t/tools from the list of directories searched for
by Parrot::Distribution in order to find .pmc files.  The reason for
removing this directory from the search is because the pmc files in
this directory are automatically generated and tested by the
t/tools/pmc2c.t test, and so aren't *really* pmc source files.  As a
side-effect of this patch, the number of failing files for the C-coda
test is reduced :-)

HTH

Paul

files affected:

lib/Parrot/Distribution.pm
Index: lib/Parrot/Distribution.pm
===
--- lib/Parrot/Distribution.pm	(revision 14904)
+++ lib/Parrot/Distribution.pm	(working copy)
@@ -210,7 +210,6 @@
 	'languages/python/pmc',
 	'languages/tcl/src/pmc',
 map(src/$_ = qwdynpmc pmc),
-'t/tools',
 ;
 }
 


Re: Runtime role issues

2006-10-12 Thread Aaron Sherman

Ovid wrote:


The intermediate class solves the problem but it instantly suggests
that we have a new design pattern we have to remember.  Basically, if
I can't lexically scope the additional behavior a role offers, I
potentially need to remove the role or use the intermediate class
pattern.


my Dog $dog .= new;
my $junkyard = $dog but Guard;

You probably don't need to touch the class, but a particular object. You 
can lexically scope changes to an object using but and my quite easily. 
If you really need a modified class, then I think this would do it, but 
I'm not sure if it works:


my $junkyarddog = class is Dog does Guard {};
my ::($junkyarddog) $spot .= new;


[svn:perl6-synopsis] r13096 - doc/trunk/design/syn

2006-10-12 Thread larry
Author: larry
Date: Thu Oct 12 14:52:22 2006
New Revision: 13096

Modified:
   doc/trunk/design/syn/S01.pod
   doc/trunk/design/syn/S05.pod

Log:
Changed enforced backtracking from + to ! to avoid conflicting with Friedl's ++


Modified: doc/trunk/design/syn/S01.pod
==
--- doc/trunk/design/syn/S01.pod(original)
+++ doc/trunk/design/syn/S01.podThu Oct 12 14:52:22 2006
@@ -89,7 +89,7 @@
 =item *
 
 Perl 6 should be malleable enough that it can evolve into the imaginary
-perfect language, Perl 7.  This darwinian imperative implies support
+perfect language, Perl 7.  This darwinian imperative implies support
 for multiple syntaxes above and multiple platforms below.
 
 =item *

Modified: doc/trunk/design/syn/S05.pod
==
--- doc/trunk/design/syn/S05.pod(original)
+++ doc/trunk/design/syn/S05.podThu Oct 12 14:52:22 2006
@@ -14,9 +14,9 @@
Maintainer: Patrick Michaud [EMAIL PROTECTED] and
Larry Wall [EMAIL PROTECTED]
Date: 24 Jun 2002
-   Last Modified: 9 Oct 2006
+   Last Modified: 12 Oct 2006
Number: 5
-   Version: 38
+   Version: 39
 
 This document summarizes Apocalypse 5, which is about the new regex
 syntax.  We now try to call them Iregex rather than regular
@@ -1230,9 +1230,9 @@
 never backtrack in a Ctoken unless some outer regex has specified a
 C:panic option that applies.  If you want to prevent even that, use
 C*:, C+:, or C?: to prevent any backtracking into the quantifier.
-If you want to explicitly backtrack, append either a C? or a C+
+If you want to explicitly backtrack, append either a C? or a C!
 to the quantifier.   The C? forces minimal matching as usual,
-while the C+ forces greedy matching.  The Ctoken declarator is
+while the C! forces greedy matching.  The Ctoken declarator is
 really just short for
 
 regex :ratchet { ... }
@@ -1279,16 +1279,16 @@
 
 =item *
 
-To force the preceding atom to do greedy backtracking,
-append a C:+ or C+ to the atom.  If the preceding token
-is a quantifier, the C: may be omitted.  (Perl 5 has no
-corresponding construct because backtracking always defaults
-to greedy in Perl 5.)
+To force the preceding atom to do greedy backtracking in a
+spot that would default otherwise, append a C:! to the atom.
+If the preceding token is a quantifier, the C: may be omitted.
+(Perl 5 has no corresponding construct because backtracking always
+defaults to greedy in Perl 5.)
 
 =item *
 
 To force the preceding atom to do no backtracking, use a single C:
-without a subsequent C? or C+.
+without a subsequent C? or C!.
 Backtracking over a single colon causes the regex engine not to retry
 the preceding atom:
 
@@ -1316,7 +1316,7 @@
 an alternation, so you may also need to put C: after it if you
 also want to disable that.  If an explicit or implicit C:ratchet
 has disabled backtracking by supplying an implicit C:, you need to
-put an explicit C:+ after the alternation to enable backing into
+put an explicit C! after the alternation to enable backing into
 another alternative if the first pick fails.
 
 =item *


Re: Synposis 26 - Documentation [alpha draft]

2006-10-12 Thread Tim Bunce
On Thu, Oct 12, 2006 at 02:55:57PM +1000, Damian Conway wrote:
 Dave Whipp wrote:
 
 I'm not a great fan of this concept of reservation when there is no 
 mechanism for its enforcement (and this is perl...).
 
 What makes you assume there will be no mechanism for enforcement? The 
 standard Pod parser (of which I have a 95% complete Perl 5 implementation) 
 will complain bitterly--as in cyanide--when unknown pure-upper or 
 pure-lower block names are used.

That's going to cause pain when people using older parsers try to read
docs written for newer ones. Would a loud warning plus some best-efforts
fail-safe parsing be possible?

Tim.

 The whole point of reserving these namespaces is not to prevent users from 
 misusing them, but to ensure that when we eventually get around to using a 
 particular block name, and those same users start screaming about it, we 
 can mournfully point to the passage in the original spec and silently shake 
 our heads. ;-)
 
 Damian


Synposis 26 - Documentation [alpha draft]

2006-10-12 Thread Jonathan Lang

Tim Bunce wrote:

Damian Conway wrote:
 Dave Whipp wrote:
 I'm not a great fan of this concept of reservation when there is no
 mechanism for its enforcement (and this is perl...).

 What makes you assume there will be no mechanism for enforcement? The
 standard Pod parser (of which I have a 95% complete Perl 5 implementation)
 will complain bitterly--as in cyanide--when unknown pure-upper or
 pure-lower block names are used.

That's going to cause pain when people using older parsers try to read
docs written for newer ones.


If I understand you correctly, the pain to which you're referring
would come from the possibility of a name that's reserved by the newer
version of Pod, but not by the older version.  Wouldn't the simplest
solution be to let a Pod document announce its own version, much like
Perl can?

--
Jonathan Dataweaver Lang


[perl #40219] [TODO] - Steal Perl5's sprintf tests

2006-10-12 Thread Patrick R. Michaud via RT
On Thu Sep 21 14:14:24 2006, particle wrote:
 ~ TODO: figure out why so many tests need to be skipped
 ~ TODO: fix failing tests :)

I've now gone through the sprintf.t and sprintf_tests and skipped only
those tests that need to be skipped.  The skipped tests are generally
due to: (1) perl5-specific features in the test, (2) parrot provides a
conversion that perl5 doesn't, or (3) the test contains a '*' modifier
and the harness can't deal with this yet.

The remaining tests have been left as errors, and should either be fixed
or marked as 'todo'.  Most of the failing tests seem to be due to one of
the following:

~ a '+' flag on unsigned conversions is generating a leading '+' (e.g.,
%+b and %+x should not result in a leading '+' in output)

~ incorrectly zero-padding fixed-width, left-justified fields

~ sprintf doesn't generate an exception or error when passed an
incomplete format specifier (e.g., '%h' or '%l')

Pm




[perl #40524] [TODO] PGE - need tests for greedy backtracking

2006-10-12 Thread via RT
# New Ticket Created by  Patrick R. Michaud 
# Please include the string:  [perl #40524]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=40524 


S05 was just updated so that the greedy backtracking modifier
is now an exclamation point (!) instead of a plus sign (+).

As a result, I'm updating PGE to match S05.  However, in the
process I noticed that there aren't any tests for the greedy 
backtracking modifier at all, so this ticket is an invitation 
 placeholder to create such tests.

Pm


[perl #40523] [TODO] adjust string_append function and usage

2006-10-12 Thread via RT
# New Ticket Created by  Leopold Toetsch 
# Please include the string:  [perl #40523]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=40523 


The CUflags argument in:

STRING *
string_append(Interp *interpreter,
STRING *a, STRING *b /*NN*/, UINTVAL Uflags)

is totally unused and I've no clue, for what it shall be used.
Please remove it in all usage of string_append.

Thanks,
leo


Re: Synposis 26 - Documentation [alpha draft]

2006-10-12 Thread Tim Bunce
On Thu, Oct 12, 2006 at 03:57:01PM -0700, Jonathan Lang wrote:
 Tim Bunce wrote:
 Damian Conway wrote:
  Dave Whipp wrote:
  I'm not a great fan of this concept of reservation when there is no
  mechanism for its enforcement (and this is perl...).
 
  What makes you assume there will be no mechanism for enforcement? The
  standard Pod parser (of which I have a 95% complete Perl 5 
 implementation)
  will complain bitterly--as in cyanide--when unknown pure-upper or
  pure-lower block names are used.
 
 That's going to cause pain when people using older parsers try to read
 docs written for newer ones.
 
 If I understand you correctly, the pain to which you're referring
 would come from the possibility of a name that's reserved by the newer
 version of Pod, but not by the older version.

Yes.

 Wouldn't the simplest solution be to let a Pod document announce its
 own version, much like Perl can?

How would that actually help? The old parser still wouldn't know what
new keywords have been added or how to parse them.

Tim.