[perl #62970] Null PMC access when calling nonexistent sub in package

2009-02-15 Thread Vasily Chekalkin via RT
On Sun Feb 01 09:27:58 2009, masak wrote:
>  rakudo: package A {}; A::method_that_does_not_exist
>  rakudo 36249: OUTPUT«Null PMC access in invoke() [...]
> * masak reports rakudobug

Patch is here
http://github.com/bacek/rakudo/commit/acdb19ee3ac09b390896c0f8f1fa32bcf7b7f9ae

-- 
Bacek





[perl #63228] [PATCH] Support using $? variables and implement $?PROGRAM

2009-02-15 Thread via RT
# New Ticket Created by  Chris Dolan 
# Please include the string:  [perl #63228]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=63228 >


This patch adds support for '?' twigil variables to actions.pm and  
declares the $?PROGRAM read-only global variable in !UNIT_START.  The  
value stored in that variable is first argument to Rakudo (e.g.  
'prog.pl' or '-e') which previously was dropped on the floor when  
creating @*ARGS.

   git pull git://github.com/chrisdolan/rakudo.git program-name

t/spec/S02-magicals/progname.t updated to test this in r25324




0001-Support-using-variables-and-implement-PROGRAM.patch
Description: Binary data


[perl #63226] [BUG] globals in !UNIT_START set up too late, or statements executed too early

2009-02-15 Thread via RT
# New Ticket Created by  Chris Dolan 
# Please include the string:  [perl #63226]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=63226 >


If you include statements in the body of a package, class, etc.  
declaration, those are executed at :load time which happens  
before :main.  So, globals like @*ARGS which are set up in ! 
UNIT_START from :main are not yet established.  All three of the  
following examples should have the same results, but the middle one  
is wrong. Either setup of globals needs to happen before :load, or  
the statements in the package, class, etc. need to be moved out  
of :load methods.  I think the latter is better, since :load methods  
are like BEGIN blocks.

../../parrot perl6.pbc -e 'say "(", @*ARGS, ")";' f g h
(fgh)

../../parrot perl6.pbc -e 'package Foo { say "(", @*ARGS, ")"; }' f g h
()

../../parrot perl6.pbc -e 'package Foo { sub run() { say "(", @*ARGS,  
")"; } }; Foo::run()' f g h
(fgh)



[perl #61836] Rakudo cannot take the minimum of undef

2009-02-15 Thread Vasily Chekalkin via RT
On Mon Jan 05 11:53:29 2009, moritz wrote:
> Carl MXXsak (via RT) wrote:
> > # New Ticket Created by  "Carl Mäsak"
> > # Please include the string:  [perl #61836]
> > # in the subject line of all future correspondence about this issue.
> > # http://rt.perl.org/rt3/Ticket/Display.html?id=61836 >
> >
> >
> > Rakudo r34628:
> >
> > $ perl6 -e 'undef min 2'
> > Multiple Dispatch: No suitable candidate found for 'cmp', with
> signature 'PP->I'
> > [...]
> 
> Added tests to t/spec/S03-operators/misc.t (but I don't know what the
> result should be, I just tested with lives_ok).
> 
> Cheers,
> Moritz
> 

Part of this bug fixed in #61840.
Part of this bug related to Parrot absence of VTABLE_cmp for "undef".

Attached patch adds VTABLE_cmp for Undef in Parrot. Other approach is to
add .sub 'cmp' :multi('Failure',_) to Rakudo. I can't judge with one is
better.

-- 
Bacek


commit 948c9412c390b86cf68eaf5cc76525e050a1e100
Author: Vasily Chekalkin 
Date:   Sat Feb 14 18:24:13 2009 +1100

Implement Undef.cmp

diff --git a/src/pmc/undef.pmc b/src/pmc/undef.pmc
index ed949a0..0bde497 100644
--- a/src/pmc/undef.pmc
+++ b/src/pmc/undef.pmc
@@ -245,6 +245,25 @@ Returns 1 if the C<*value> is an Undef PMC, 0 otherwise.
 MULTI INTVAL is_equal(DEFAULT value) {
 return 0;
 }
+
+/*
+
+=item C
+
+Returns 1 if the C<*value> is an Undef PMC, otherwise delegate comparition to value.
+
+=cut
+
+*/
+
+MULTI INTVAL cmp(Undef value) {
+return 1;
+}
+
+MULTI INTVAL cmp(DEFAULT value) {
+return VTABLE_cmp(INTERP, value, SELF);
+}
+
 }
 
 /*


[perl #63232] Rakudo doesn't Z together mixes of elements and ranges properly

2009-02-15 Thread Carl Mäsak
# New Ticket Created by  "Carl Mäsak" 
# Please include the string:  [perl #63232]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=63232 >


 rakudo: for "a".."c" Z ("?", "a".."b") -> $x1, $x2 { say $x1, $x2 }
 rakudo a0a390: OUTPUT«a?␤ba␤StopIteration [...]
 jnthn: does this look right to you?
 pugs: for "a".."c" Z ("?", "a".."b") -> $x1, $x2 { say $x1, $x2 }
 pugs: OUTPUT«a?ba␤cb␤»
* masak submits rakudobug
 looks right to me
 good enough for me :)
 shouldn't need the parens, either
 right. just making sure.
 pugs: for "a".."c" Z "?", "a".."b" -> $x1, $x2 { say $x1, $x2 }
 pugs: OUTPUT«a?ba␤cb␤»
 rakudo: say "a".."c" Z "?", "a".."b";
 rakudo a0a390: OUTPUT«a?bab␤»

>From the last example, we see that there's a 'c' missing from the
result of the Z.


Re: [perl #51340] [RESOLVED] [BUG] compiler detection failure

2009-02-15 Thread Peter Hans van den Muijzenberg

Hi,

James Keenan via RT schreef:
According to our records, your request regarding 
  "[BUG] compiler detection failure" 
has been resolved. 



If you have any further questions or concerns, please respond to this message.
For other topics, please create a new ticket.
http://rt.perl.org/rt3/Ticket/Display.html?id=51340 >


I see. Well, it's a matter of how you view things, isn't it? You could 
see the history of this report as someone doing his utmost to correspond 
about a problem he doesn't see himself. Or you could see it as the 
report having been handled by someone who didn't have the matching 
hardware and asked for information that was already in the message.


I have no idea whether I saw his message at the time, nor what kind of 
reply I sent if I did see it. But I downloaded parrot-0.9.0 to test, and 
when after untarring I perl Configure.pl, I get the following result:


- Start of include: -
Parrot Version 0.9.0 Configure 2.0
Copyright (C) 2001-2008, The Perl Foundation.

Hello, I'm Configure. My job is to poke and prod your system to figure out
how to build Parrot. The process is completely automated, unless you 
passed in
the `--ask' flag on the command line, in which case I'll prompt you for 
a few

pieces of info.

Since you're running this program, you obviously have Perl 5--I'll be 
pulling

some defaults from its configuration.

init::manifest -  Check 
MANIFEST.done.
init::defaults -  Set Configure's default 
values.done.
init::install -   Set up installation 
paths..done.
init::hints - Load platform and local hints 
filesdone.
init::headers -   Find header files distributed with 
Parrot..done.
inter::progs -Determine what C compiler and linker to 
use...Compilation failed with 'cc'

- End of include. -

And, yes, that means it failed at that time. And no, I do not have more 
output about other failures, for if I had had more output it would be 
there: This is not part of the result, it's all of it. The only thing I 
left out is that my shell will once again print a command prompt once 
this has finished.


I haven't checked whether the documentation still speaks about a 
myconfig, but in any case, I don't see it being created. Lacking such 
feedback, I instead return to you the revealing results of using

perl Configure.pl --verbose-step=inter::progs

- Start of include: -
Parrot Version 0.9.0 Configure 2.0
Copyright (C) 2001-2008, The Perl Foundation.

Hello, I'm Configure. My job is to poke and prod your system to figure out
how to build Parrot. The process is completely automated, unless you 
passed in
the `--ask' flag on the command line, in which case I'll prompt you for 
a few

pieces of info.

Since you're running this program, you obviously have Perl 5--I'll be 
pulling

some defaults from its configuration.

init::manifest -  Check 
MANIFEST.done.
init::defaults -  Set Configure's default 
values.done.
init::install -   Set up installation 
paths..done.
init::hints - Load platform and local hints 
filesdone.
init::headers -   Find header files distributed with 
Parrot..done.

inter::progs -Determine what C compiler and linker to use...

 ccflags: -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN 
-pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
cc -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN  -pipe 
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-I./include -c test_7926.c
cc  -L/usr/local/lib -Wl,-E test_7926.o  -o test_7926  -ldl -lm 
-lpthread -lcrypt

/usr/bin/ld: crt1.o: No such file: No such file or directory
collect2: ld gaf exit-status 1 terug
Compilation failed with 'cc'
- End of include. -

Same notes as before.

I hope it's of any help.
BFN
--
Peter Hans van den Muijzenberg
 Sneek
  p...@home.nl


[perl #62168] .comb doesn't take zero arguments in Rakudo

2009-02-15 Thread Vasily Chekalkin via RT
On Sat Jan 10 09:42:10 2009, masak wrote:
>  rakudo: "  a b c".comb.perl.say
>  rakudo 35345: OUTPUT«too few arguments passed (1) - 4 params
> expected [...]
>  rakudo: "  a b c".comb(" ").perl.say
>  rakudo 35345: OUTPUT«invoke() not implemented in class
> 'Perl6Str' [...]
>  rakudo: "  a b c".comb(/\S+/).perl.say
>  rakudo 35345: OUTPUT«["a", "b", "c"]␤»
>  should default to \S+
> * masak submits rakudobug

* bacek pushes fix to github.

http://github.com/bacek/rakudo/commit/086f639db51f0136fd893ab70dac2ce6eeb76a8b

-- 
Bacek.


[perl #63236] 0 but Bool::True seems to put rakudo in an infinite loop

2009-02-15 Thread via RT
# New Ticket Created by  fREW Schmidt 
# Please include the string:  [perl #63236]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=63236 >





[perl #61732] Null PMC access when catching 'fail' using a CATCH block in Rakudo

2009-02-15 Thread Vasily Chekalkin via RT
On Fri Dec 26 05:05:27 2008, masak wrote:
>  rakudo: sub foo { fail }; sub bar { foo(); 2; CATCH { 1; } };
> say bar();
>  rakudo 34376: OUTPUT«Null PMC access in isa()␤ [...]
>  meh
>  that's strange.
>  that one didn't involve any 'whan' clause.
>  no smartmatching.
>  I might have misdiagnosed the bug in my summary, then.
> * masak corrects

Actual summary should be "CATCH blocks eats return values from subs".

$ ../../parrot perl6.pbc -e 'sub bar { 1; CATCH { } }; say bar()'
Null PMC access in isa()

-- 
Bacek.


[perl #61480] Rakudo shouldn't die on unrecognized initializers to constructors

2009-02-15 Thread Vasily Chekalkin via RT
On Thu Dec 18 09:52:52 2008, masak wrote:
>  rakudo: class Base { has $.foo }; class Deriving is Base {};
> say Deriving.new( :foo(5) ).foo()
>  rakudo 34068: OUTPUT[You passed an initialization parameter
> that does not have a matching attribute. [...]
>  and in general, it's not an error to pass unrecognized
> initializers
>  TimToady: oh!
>  since each class will assume it was intended for a
> different class
>  _two_ rakudobugs. :)
> * masak files
>  and we want to allow scope for people splitting classes
> without having to redo initializers
>  refactoring++

It works in recent rakudo:
$ ../../parrot perl6.pbc -e 'class Base { has $.foo }; class Deriving is
Base {}; say Deriving.new( :foo(5) ).foo()'
5

So ticket can be closed.

-- 
Bacek





[perl #62772] Rakudo dies on ord('')

2009-02-15 Thread Vasily Chekalkin via RT
On Mon Jan 26 06:45:24 2009, masak wrote:
>  rakudo: ord(""); say "Alive"
>  rakudo 36030: OUTPUT«Cannot get character of empty string [...]
>  should Rakudo really die here?
> * masak thinks not
>  I think it should fail()
> <[particle]> return a Failure
> <[particle]> see what perl 5 does
>  good. we agree.
> * masak submits rakudobug

Fix for this issue is there
http://github.com/bacek/rakudo/commit/206c219d5fc495d1b171552650a29e8f0901e2c8

(It doesn't work ATM because of "fail" implementation bug)

-- 
Bacek


[perl #61840] [TODO] min= and max= operators

2009-02-15 Thread Vasily Chekalkin via RT
On Mon Jan 05 12:00:25 2009, moritz wrote:
> Carl MXXsak (via RT) wrote:
> >
> > $ perl6 -e 'my $a = 5; $a min= 2; say $a'
> > get_iter() not implemented in class 'Integer'
> > [...]
> 
> Added tests to t/spec/S03-operators/assign.t (which grows to an
> alarming
> size...)

Rakudo fix available at
http://github.com/bacek/rakudo/commit/669a891036b186c8ea886c2dea000c8c5a3e47ee

Spectest fixed in r25330

-- 
Bacek




[perl #63230] [TODO] Implement renaming of named parameters in Rakudo

2009-02-15 Thread Carl Mäsak
# New Ticket Created by  "Carl Mäsak" 
# Please include the string:  [perl #63230]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=63230 >


$ perl6 -e 'sub formalize($text, :case($case), :justify($justify)) {...}'
Unable to parse multisig; couldn't find final ')' at line 1, near ":case($cas"
[...]

Example straight out of S06:721.


Implementing $?LINE and other S02 compile-time vars

2009-02-15 Thread Chris Dolan
I've been considering how to inject compile-time values ($?VAR) into  
Rakudo.


I was thinking about how to implement $?LINE and came up with two  
ways to do it: on the fly and post processing.


On the fly would require some significant work in PGE, I think, to  
keep the line count correct in the face of backtracking.  However,  
this may already be necessary down the road for proper line numbers  
in error messages for code mapped from an HLL to a lower level syntax.


Post-processing on the other hand would require me to keep an  
actions.pm 'our' variable of whether we found a $?LINE or not.  Only  
if so, then in TOP we walk the parse tree counting newlines and  
replacing PAST::Var(:name('$?LINE')) with PAST::Val(:value 
($linecount)).  That way, we'd encounter no performance hit if there  
were no line number requests.


The former seems like the right general solution for the long term,  
but the latter seems doable today.  Thoughts?


Other compile-time variables like $?OS and $?FILE seem easier to  
implement because they require a lot less context.  I think $?OS is  
just the NQP equivalent of the following code:

  use cfg;
  my %cfg = _config();
  make PAST::Val(:value(%cfg));

$?PARSER should be simply the grammar class name. $?LANG should  
always be 'Perl6', unless explicitly overridden with :lang.  $?VM and  
$?KVM should just be 'Parrot', at present.


Should $?PERL be 'Rakudo' or '/path/to/perl6.pbc'?

I think $?GRAMMAR, $?CLASS, $?ROLE, $?MODULE and $?PACKAGE should be  
easy because actions.pm already tracks those values in @?PKGDECL[*-1] 
 (or something like that).  @?GRAMMAR, @?CLASS, @?ROLE, @? 
MODULE, and @?PACKAGE should be similar operations on @?PKGDECL.


Thoughts?

Chris


Re: r25328 - docs/Perl6/Spec

2009-02-15 Thread Timothy S. Nelson

On Sat, 14 Feb 2009, Leon Timmermans wrote:


On Sat, Feb 14, 2009 at 6:38 AM,   wrote:

+=head2 IO::Openable
+
+This role implies that the object can be connected to, or listened on.
+
+=over 4
+
+=item open
+
+ method Bool open();
+
+Attempts to open the handle.  Depending on the implementation, this could be 
an open()
+call, a connect(), a listen(), or something similar.
+
+=back
+


I'm not sure if I really hate or love this. I'm not quite convinced if
the use of it anyway.


	I like it if we can make it work, but it may be too nonsensical to get 
anything useful out of it.  See my discussion below.



Why should this do POSIX? What about non-POSIX operating systems?


	This was an example of me not thinking.  Basically, it was because 
it was easier than writing IO::Readable IO::Writeable.  I'll ignore the 
question as it crops up throughout; someone feel free to replace POSIX with 
something else.


	I haven't written a program that was intended to be run on anything 
other than Unix or Embedded in years, so I'm quite pleased to get some input 
from non-POSIX types.  I'm happy (once we sort out what we're doing) for 
others to edit the thing, now that I've gone and restructured it all :).


	As a rakudo user, I'm also wondering whether we shouldn't be referring 
more to the Parrot IO stuff, but that may just be me.


http://www.parrotcode.org/docs/ops/io.html


+=item syscall
+


That functions should be well hidden


	Question -- is there a reason this is in IO, instead of eg. S29?  If 
not, I'll move it there.



+=item sysopen
+


I vote for sysopen (and all other sys functions) to be wiped out of existence.


	Disagree -- I think these belong in IO::Unbuffered.  Maybe we could 
make that optional, though :).



+=head1 Classes
+
+=head2 IO::File
+
+This does file input and output.
+
+class  IO::File does IO::POSIX does IO::Closeable does IO::Openable {
+...
+}
+
+=over
+
+=item init
+
+ method init(String $filename, $options?);
+ method init(Int $fd);
+
+ # Read
+ $fobj = new IO::File($filename);
+
+ # Write
+ $fobj = new IO::File($filename, :w);
+
+ # Read using file descriptor
+ $fobj = new IO::File($fd);
+
+Associate an IO object with an already-open file descriptor,
+presumably passed in from the parent process.
+
+=back


Why is that function called init, and not open? That's rather non-intuitive.


	Hmm.  I still haven't gotten the hang of Perl 6.  What I want is for 
the name of this function to be the one that automatically gets called on 
object creation.  Then you do something like this:


$fobj = new IO::File($filename); # Creates handle
$fobj.open(); # opens file


This should do IO::Seekable and (to be written) IO::Stattable.


	Should it?  I'm just thinking about the interactions between IO::File 
and IO::FileSystem.  Maybe I'm just wondering about the name :).  I'd argue 
that maybe


class IO::File ... {
has IO::FileSystemEntry $FSEntry;
...
}

...and that you could then do:

$fobj = new IO::File($filename);
if($fobj.FSEntry.ModificationTime > '2008') { print "Modified this year\n"; }
$fobj.open()
...

	In other words, I'm arguing that maybe we need a separate class for 
the calls that do stuff to the "outside" of a file, verses the calls that do 
stuff to the "inside" of a file.  But maybe that's what roles are for. 
I'm undecided.  Thoughts, anyone?



+=head2 IO::Socket::INET
+
+class  IO::Socket::INET does IO::Socket {
+...
+}
+
+=over
+
+=item  init
+
+ method Bool init($RemoteHost, $RemotePort, $LocalHost?, $LocalPort?);
+
+=item open($Listen?);
+
+If $Listen is 0, it does a connect().  If $Listen is 1, it does a connect() 
and a
+listen().  If $Listen is 2, it does a listen(), but no connect().
+


I *really* hate that interface, and I don't see how it covers an
accepting socket.


	Ok, I agree there's room for improvement, but I'm not 100% sure I 
agree on the details.



IMO there should be two calls


At least 3 :).


method IO connect($RemoteHost, $RemotePort, *%options)

where *%options can contain things like the local address,
non-blockingness, etc...


	I'd break this into two; one like the init call above that creates the 
object, and has the local and remote host/port passed in, but doesn't do any 
calls.


Maybe something like this example for a client:

 $socket = new IO::Socket::INET($RemoteHost, $RemotePort, OtherOption => 1);
 $socket.Blockingness = 1; # Ok, maybe not blockingness, but you know what I 
mean
 $socket.OtherOption = 0; # Changed our mind from what we said in the class 
creation call
 $socket.open(); # This could be called "connect", maybe

	I'm kinda keen to call the function open() instead of connect(), so 
that things are more consistent across the whole IO interface, but I agree 
that attaching the listen stuff to that call was a bad idea.


	For the server, I'd suggest an additional role, IO::Listening, that 
has both listen() and accept() calls on it.  Would that work for you?  Or is 
that essentially exact

r25348 - docs/Perl6/Spec

2009-02-15 Thread pugs-commits
Author: wayland
Date: 2009-02-16 04:50:39 +0100 (Mon, 16 Feb 2009)
New Revision: 25348

Modified:
   docs/Perl6/Spec/S16-io.pod
Log:
S16: Changed my $| stupidity to select()



Modified: docs/Perl6/Spec/S16-io.pod
===
--- docs/Perl6/Spec/S16-io.pod  2009-02-16 03:02:46 UTC (rev 25347)
+++ docs/Perl6/Spec/S16-io.pod  2009-02-16 03:50:39 UTC (rev 25348)
@@ -30,7 +30,8 @@
 The I ones are our old familiar friends (with new names).  Standard 
input is 
 C<$*IN>, standard output is C<$*OUT>, and standard error is C<$*ERR>.  
 
-However, the I ones replace the Perl 5 $| variable with three new 
variables.  
+However, the I ones replace the single handle set by the Perl 5 
select() call 
+with with three new variables.  
 At the start of the program, the default handles (C<$*DEFIN>, C<$*DEFOUT>, and 
 C<$*DEFERR>) are aliased to the standard handles, but may be temporarily or 
permanently 
 rebound to some other file handle.  



Re: r25329 - docs/Perl6/Spec

2009-02-15 Thread Timothy S. Nelson

On Sat, 14 Feb 2009, Mark J. Reed wrote:


That mention of $| is confusing, since $| has nothing to do with
changing where output goes in p5.  All it does is cause output to be
autoflushed.. The Perl5 analog to $DEFOUT would seem to be the
select() function...


	Agreed, fixed.  Btw, thanks to everyone for your patience with me; 
I've used almost all these calls at one time or another, but not much in 
recent years, so I've made some obvious mistakes.  Thanks.


:)

-
| Name: Tim Nelson | Because the Creator is,|
| E-mail: wayl...@wayland.id.au| I am   |
-

BEGIN GEEK CODE BLOCK
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- 
PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y-

-END GEEK CODE BLOCK-



Re: r25328 - docs/Perl6/Spec

2009-02-15 Thread Brandon S. Allbery KF8NH

On 2009 Feb 15, at 22:50, Timothy S. Nelson wrote:

On Sat, 14 Feb 2009, Leon Timmermans wrote:

+=item sysopen


I vote for sysopen (and all other sys functions) to be wiped out of  
existence.


Disagree -- I think these belong in IO::Unbuffered.  Maybe we could  
make that optional, though


I think sysopen etc. should go away, instead allowing open() to  
specify unbuffered.  In general anything that exposes a system file  
descriptor is an abstraction violation (unless in a module which is  
intended to do so; IO::Posix?).


The original intent behind sysopen() was to allow system file  
descriptor mode flags to be used; this was a workaround for perl5's  
open being insufficiently flexible.


--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allb...@kf8nh.com
system administrator [openafs,heimdal,too many hats] allb...@ece.cmu.edu
electrical and computer engineering, carnegie mellon universityKF8NH




PGP.sig
Description: This is a digitally signed message part


Re: r25328 - docs/Perl6/Spec

2009-02-15 Thread Timothy S. Nelson

On Sun, 15 Feb 2009, Brandon S. Allbery KF8NH wrote:


On 2009 Feb 15, at 22:50, Timothy S. Nelson wrote:

On Sat, 14 Feb 2009, Leon Timmermans wrote:

+=item sysopen


I vote for sysopen (and all other sys functions) to be wiped out of 
existence.


Disagree -- I think these belong in IO::Unbuffered.  Maybe we could make 
that optional, though


I think sysopen etc. should go away, instead allowing open() to specify 
unbuffered.  In general anything that exposes a system file descriptor is an 
abstraction violation (unless in a module which is intended to do so; 
IO::Posix?).


	I'm not convinced about it being an option to open, but if you said 
instead that it should be an attribute on a role (IO::Openable?), then I'd 
happily agree.


The original intent behind sysopen() was to allow system file descriptor mode 
flags to be used; this was a workaround for perl5's open being insufficiently 
flexible.


That's good to know; thanks.

:)


-
| Name: Tim Nelson | Because the Creator is,|
| E-mail: wayl...@wayland.id.au| I am   |
-

BEGIN GEEK CODE BLOCK
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- 
PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y-

-END GEEK CODE BLOCK-



Call-and-response grammars?

2009-02-15 Thread Timothy S. Nelson
	Ok, I'm wondering about how a protocol such as ACAP could be 
implemented as a grammar.  For those not familiar with ACAP, it bears some 
resemblance to IMAP (and a more distant resemblance to POP3 and SMTP), with 
the difference that the server can send information to the client unsolicited 
(think of something like "you have new mail", without it being asked).


	The first thing I'm wondering is how to go about writing a 
call-and-response grammar.  Take a basic SMTP transaction as an example. 
You'd send something like a HELO command, and get a response.  Then "MAIL 
FROM", "RCPT TO", "DATA", and the like, each with an appropriate response.  Is 
there some way to write a single grammar that encapsulates the whole thing, a 
grammar that could be used one way by a client, and another way by a server?


I guess my real question is, how should grammars of protocols be done?

:)


-
| Name: Tim Nelson | Because the Creator is,|
| E-mail: wayl...@wayland.id.au| I am   |
-

BEGIN GEEK CODE BLOCK
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- 
PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y-

-END GEEK CODE BLOCK-



Periodic Table of the Operators, version 3

2009-02-15 Thread Mark Lentczner

Friends -

Just a note to let you know that the third version of the Periodic  
Table of the Operators is complete:


http://www.ozonehouse.com/mark/periodic/

Thanks again to all those who helped me dive deep into perl6.

- MtnViewMark


Mark Lentczner
http://www.ozonehouse.com/mark/
m...@glyphic.com





S17-concurrency question

2009-02-15 Thread Timothy S. Nelson

Hi.  I have a question for the S17-concurrency people.

	Say I wanted to write a POP3 server.  I want to receive a username and 
password from the client.  I want things to be interruptable during this, but 
it's also impossible to sensibly roll things back like they were before the 
connection was opened.  Is this possible with the concurrency model you 
specified?


	I've been looking at POE ( http://search.cpan.org/~rcaputo/POE-1.003/ 
) and have observed that it contains its own simulated concurrency (Sessions, 
he calls them), and is, it seems to me, well-designed for doing external data 
transfer as in POP3.  He uses an event-driven model.


Anyway, I'll be interested to hear about this.

:)


-
| Name: Tim Nelson | Because the Creator is,|
| E-mail: wayl...@wayland.id.au| I am   |
-

BEGIN GEEK CODE BLOCK
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- 
PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y-

-END GEEK CODE BLOCK-



[perl #61764] [TODO] Implement ff and fff

2009-02-15 Thread Vasily Chekalkin via RT
On Sat Dec 27 09:50:09 2008, masak wrote:
> Implement the ff and fff infix operators, as described in S03:2345.

Ok, first cut of flipflops implemented in

http://github.com/bacek/rakudo/commit/08fffbc6d62ab72e0dd9f80098275afce0f32fbf
and
http://github.com/bacek/rakudo/commit/7dfa1b13819bcb3d3d3f515fd82de43934666f92

It's not perfect, but works for simple cases. S03-operators/flip-flop.t
updated and commited with help of TimToady++

-- 
Bacek