Re: Tetris example (was: Please no checkins)

2004-03-02 Thread Jens Rieks
Hi,

Am Dienstag, 2. März 2004 10:48 schrieb Leopold Toetsch:
 Jens Rieks [EMAIL PROTECTED] wrote:
  Hi leo,
 
  Here is the tetris example, include it if you want...

 I've now tested it a bit. Looks really good and works - mostly :)
 - it tries to load SDL_Image, albeit this seems to be unused
I will add support for textured blocks when the object orientated
SDL interface is working.

 - some blocks are dropping down invisibly
Which blocks?

 - it doesn't recognize a game over situation
Yep, to be done. A two player mode is also available,
F1 starts a single, F2 a two player game.
They are just two distinct boards with no interaction yet.

 - some quit key handling would be nice.
escape or alt-f4. A former version also supported Q, but
now W/S/A/D/LSHIFT is used as the second player's controls.
I will change this too, as the right controls are for the left board
at the moment, and wise versa.

 Despite that its a great application and a very good example:

 # create the tetris app
 app = _Tetris::App::new()

 # init the tetris app
 ret = _Tetris::App::init( app )

 This code looks darned good.
Thanks a lot :-)
Parrot's object support is not yet good enough to be able to convert the game 
to use ParrotObjects.

The documentation is also not finished yet, the i386 JIT set_i_n bug took a 
lot of time (no block with the highest id occured when running JIT)...
I acted on the assumption that the release will be one day later.

  jens

 leo
jens



Re: Tetris example

2004-03-02 Thread Jens Rieks
Hi,

Am Dienstag, 2. März 2004 17:19 schrieb Dan Sugalski:
 At 5:13 PM +0100 3/2/04, Leopold Toetsch wrote:
 Parrot's object support is not yet good enough to be able to
 convert the game to use ParrotObjects.
 
 What is missing?

 Constructors and destructors are my two big guesses here. :-P
Mainly imcc support for method calling, but constructors too.
Another nice-to-have is hidden method calling for array and
hash-like access to objects.
The Board class is currently just an array, but the element access
can of course be replaced with direct method calls.

from pdd 15:
:  instantiate Px, Py, Sz (Unimplemented)
:  Instantiate a brand new class, based on the metadata
:  in Py, named Sz.
I think I have missread this last time. What it is op supposed to do?

How can I create an object of class the Block?

jens



subclassing bug

2004-03-02 Thread Jens Rieks
The following code results in a
clone() not implemented in class 'ParrotClass'
error:

.sub _main
.local pmc a
.local pmc b
.local pmc c

newclass a, A
subclass b, a, B
subclass c, b, C
end
.end

jens



Re: Current PLATFORMS

2004-03-02 Thread Joshua Hoblitt
On Tue, 2 Mar 2004, Leopold Toetsch wrote:

 x86_64 is nowadays amd64 I presume. Can you please provide the output of
 $ cat myconfig

AMD originally was calling it x86-64.  So it went into the Linux kernel as 
./arch/x86_64.  Then AMD renamed the instruction set to AMD64.  Just to keep it 
confusing, Prescott/Nocoma (ia32e) support is also part of ./arch/x86_64.


  ... I can provide
  the complete test run if anyone thinks it will be helpful.

 Doesn't help much. Did you get any warnings during compilation? Test
 results really don't look good. There seem to be some serious problems.

I've attached the results of:

perl Configure.pl
make  ./parrot_build-x86_64.txt 21

-J

--

parrot_build-x86_64.txt
Description: Binary data


Re: Current PLATFORMS

2004-03-02 Thread Joshua Hoblitt
On Tue, 2 Mar 2004, Leopold Toetsch wrote:

 x86_64 is nowadays amd64 I presume. Can you please provide the output of
 $ cat myconfig

Summary of my parrot 0.1.0 configuration:
  configdate='Tue Mar  2 11:51:06 2004'
  Platform:
osname=linux, archname=x86_64-linux
jitcapable=0, jitarchname=nojit,
jitosname=nojit, jitcpuarch=i386
execcapable=0
perl=/usr/bin/perl
  Compiler:
cc='gcc', ccflags=' -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-I/usr/include/gdbm',
  Linker and Libraries:
ld='gcc', ldflags=' -L/usr/local/lib',
cc_ldflags='',
libs='-lpthread -lnsl -ldl -lm -lcrypt -lutil'
  Dynamic Linking:
so='.so', ld_shared='-shared -L/usr/local/lib',
ld_shared_flags=''
  Types:
iv=long, intvalsize=8, intsize=4, opcode_t=long, opcode_t_size=8,
ptrsize=8, ptr_alignment=4 byteorder=12345678,
nv=double, numvalsize=8, doublesize=8

-J

--


fleshing out extend.h

2004-03-02 Thread Mitchell N Charity
Pmc class headers providing parts of parrot's C extension api are not
being included in extend.h.  Such as the generated file
./classes/pmc_array.h, with its Parrot_Array_push_integer.  Such files
are not being included anywhere in include/parrot/ at all.

So it looks like a ./config/gen/ generator is needed.  Perhaps using
Configure::Data-get('pmc_names') to generate a bunch of #include's
for a new header file.

One might thus create a ./include/parrot/pmc_apis.h, say, to be
included by extend.h. [1]

Does this seem a plausible way to proceed?

Mitchell
[1] extend.h is already including several other parrot headers.


Re: Tetris example

2004-03-02 Thread Simon Glover

On Tue, 2 Mar 2004, Jens Rieks wrote:

 from pdd 15:
 :  instantiate Px, Py, Sz (Unimplemented)
 :  Instantiate a brand new class, based on the metadata
 :  in Py, named Sz.
 I think I have missread this last time. What it is op supposed to do?

 How can I create an object of class the Block?

newclass P1, Block# Creates a Block class
find_type I0, Block   # Gets Parrot's internal index no. for the
# Block class
new P2, I0  # Creates an object in that class

  This really needs to be spelled out better in the PDD -- it is mentioned
  in an example, but I don't think it's covered in the discussion of
  object-related opcodes.

  NB. The code above just creates the object -- you still need to init.
  the data by hand.

  Simon




[DOCS] make html

2004-03-02 Thread Michael Scott
I've added two targets to the Makefile.

html: Generate HTML documentation from POD in the sources.
html-clean: Remove the HTML documentation.
Mike



[perl #27301] [PATCH] \t\pmc\exec.t Tests spawnw opcode

2004-03-02 Thread via RT
# New Ticket Created by  [EMAIL PROTECTED] 
# Please include the string:  [perl #27301]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=27301 


Does the naming and placement of this test fit convention?

The opcode is called 'spawnw'
The function is 'Parrot_Run_OS_Command'
The file 'config/gen/platform/*/exec.c'

A little guidance would help occasionally. 
If it were forthcoming, I would try to write them up into a beginners FAQ.



[perl #27314] delegate pmc methods ignored in inheritance

2004-03-02 Thread via RT
# New Ticket Created by  Dan Sugalski 
# Please include the string:  [perl #27314]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=27314 


If you have a pmc class that inherits from delegate you're out of 
luck. All of delegate's methods, save init, are autogenerated, and as 
such can't be inherited from.
-- 
 Dan

--it's like this---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
   teddy bears get drunk


Re: [PATCH] parrotbug 0.0.1

2004-03-02 Thread Leopold Toetsch
Jerome Quelin [EMAIL PROTECTED] wrote:

 I did not checked it in parrot's repository because:
  - I don't know where it should go in parrot tree

tools/dev invoked per make bugreport?

  - the copyright is missing (Dan, please insert correct copyright)

All in parrot root is subject to terms in LICENSES.

leo


Parrot_PMC_new vs Parrot_register_pmc

2004-03-02 Thread Arthur Bergman
Hi,

Just a quick check, why is Parrot_register_pmc not named as the other 
Parrot_PMC_* functions in the external interface?

Cheers
Arthur


Re: Tetris example

2004-03-02 Thread Dan Sugalski
At 5:58 PM +0100 3/2/04, Jens Rieks wrote:
Hi,

Am Dienstag, 2. März 2004 17:19 schrieb Dan Sugalski:
 At 5:13 PM +0100 3/2/04, Leopold Toetsch wrote:
 Parrot's object support is not yet good enough to be able to
 convert the game to use ParrotObjects.
 
 What is missing?
 Constructors and destructors are my two big guesses here. :-P
Mainly imcc support for method calling, but constructors too.
Hopefully in the next day or two.

Another nice-to-have is hidden method calling for array and
hash-like access to objects.
The Board class is currently just an array, but the element access
can of course be replaced with direct method calls.
As soon as I can abuse pmc2c2.pl sufficiently then this'll be doable.

from pdd 15:
:  instantiate Px, Py, Sz (Unimplemented)
:  Instantiate a brand new class, based on the metadata
:  in Py, named Sz.
I think I have missread this last time. What it is op supposed to do?
How can I create an object of class the Block?
find_type $I0, Block
new $P0, $I0
should do it.
--
Dan
--it's like this---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


[perl #27287] [PATCH] creates README's in several languages/ directories

2004-03-02 Thread via RT
# New Ticket Created by  [EMAIL PROTECTED] 
# Please include the string:  [perl #27287]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=27287 


This patch creates a couple of new small README's, for several
languages/ directories which don't yet have them.

Specifically:
  languages/forth/README
  languages/python/README
  languages/scheme/README

They basically say, look in ../LANGUAGES.STATUS, and provide a one
line pointer to further documentation where it exists.

Looking for documentation in languages/ directories should be easy.
(Not ok, where is the documentation in _this_ one?.-)

Mitchell


diff -r -N -u ./languages.crnt/forth/README ./languages/forth/README
--- ./languages.crnt/forth/README   Wed Dec 31 19:00:00 1969
+++ ./languages/forth/READMEMon Mar  1 19:26:56 2004
@@ -0,0 +1,6 @@
+
+Forth
+
+See  forth.pod
+
+Also see ../LANGUAGES.STATUS
diff -r -N -u ./languages.crnt/python/README ./languages/python/README
--- ./languages.crnt/python/README  Wed Dec 31 19:00:00 1969
+++ ./languages/python/README   Mon Mar  1 19:26:35 2004
@@ -0,0 +1,6 @@
+
+Python
+
+http://pirate.tangentcode.com/
+
+Also see ../LANGUAGES.STATUS
diff -r -N -u ./languages.crnt/scheme/README ./languages/scheme/README
--- ./languages.crnt/scheme/README  Wed Dec 31 19:00:00 1969
+++ ./languages/scheme/README   Mon Mar  1 19:26:40 2004
@@ -0,0 +1,6 @@
+
+Scheme
+
+No documentation available.
+
+Also see ../LANGUAGES.STATUS


Re: subclassing bug

2004-03-02 Thread Simon Glover

  A PASM version of the test case is:

   newclass P16, A
   subclass P16, P16, B
   subclass P16, P16, C
   end

 I think I've figured out what's happening here. Stepping through the
 code with gdb shows that the first subclassing works fine, but the second
 blows up in Parrot_single_subclass at line 233:

temp_pmc =
VTABLE_clone(interpreter,
VTABLE_get_pmc_keyed_int(interpreter,
(PMC *)PMC_data(base_class), PCD_ALL_PARENTS));

 This fetches the parent class's parent array, which is an Array PMC,
 and which at this point contains a single entry -- a ParrotClass PMC
 corresponding to class A.

 We then call the clone method of this array, in order to copy it to
 temp_pmc.

 This in turn calls list_clone in order to copy its data, and since our
 list is comprised of a single PMC, list_clone calls its clone vtable
 method.

 BUT: this PMC is a ParrotClass, and there isn't currently a clone method
 implemented for ParrotClass, so we fall back on the default option, which
 is to throw an exception and die.

 The only reason that this works the first time that we create a subclass
 is that at that point the parent's parent list is empty.

 An obvious fix for this would be to implement a clone method for
 ParrotClass, but I'm not sure if this really makes sense, as we could
 then potentially end up with multiple PMCs representing the same class.
 (Also, implies that objects in deeply nested classes would have a
  considerable memory overhead, since they'd each have to drag around PMCs
  for each of their parent classes).

 Simon





A good news/bad news sort of thing

2004-03-02 Thread Dan Sugalski
The good news is that the infrastructure's in place to do delegated 
method calls for vtable functions with objects. So you can actually 
do something like:

 .sub __MAIN prototyped
  .param pmc argv
  .local pmc foo
  .local pmc bar
  .local pmc asub
  newclass P1, Foo
  find_type I0, Foo
  newsub asub, .Sub, _foo
  store_global Foo, __get_string, asub
  print bar
  end
 .end
 .sub _foo prototyped
  print In foo!\n
  .pcc_begin_return
  .pcc_end_return
 .end
and expect it to print out In foo! like it ought. That is a cool 
thing, and we get to do it by subclassing delegate.pmc.

The bad news is that, since all the methods in delegate.pmc are 
generated by library code and don't appear in delegate.pmc, you can't 
actually subclass from it properly. (I had to hack parrotobject.c to 
make it work)

It would be a Good Thing if someone who knows what the heck's going 
on in pmc2c2.pl and/or lib/Parrot/Pmc2c.pm could thump this into 
working. I'm trying and, well, it's a twisty maze of undocumented 
methods, and generally a nasty mess. (I think. It might be terribly 
clean, but in that case the documentation is even more sorely lacking)
--
Dan

--it's like this---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Re: www.parrotcode.org/ points to 0.0.10

2004-03-02 Thread Robert Spier

This is on my list for tonight.  I've got something all ready to go
but have been busy with a $NEW_JOB.

-R

At Tue, 2 Mar 2004 00:44:02 -0500,
Mitchell N Charity wrote:
 
 The parrot homepage
   http://www.parrotcode.org/
 currently says
   Periodic releases will appear on CPAN; the current release is
   version 0.0.10, and can be found in the CPAN source directory.
 And source directory is a link to parrot-0.0.10.tar.gz
 
 The similarity in release numbers is particularly unfortunate.
 
 Sorry I missed that when looking at the page.  (Saw source directory,
 thought ah, users will see the more recent releases in the directory).
 
 Updating the homepage soon would seem desirable.
 
 Mitchell


NetBSD 1.6 - need to define _STRUCT_TIMESPEC

2004-03-02 Thread Nick Kostirya
If to define _STRUCT_TIMESPEC, then compilation is successfully.



% make test
perl t/harness --gc-debug --running-make-test  -b t/op/*.t t/pmc/*.t
t/native_pbc/*.t imcc/t/*/*.t t/src/*.t
t/op/00ff-dos...ok
t/op/00ff-unix..ok
t/op/arithmeticsok
t/op/basic..ok
t/op/bitwiseok
t/op/callingok
t/op/comp...ok
t/op/conv...ok
t/op/debuginfo..ok
3/3 skipped: getline/setline changes not finished
t/op/gc.ok
t/op/globalsok
t/op/hacks..ok
2/2 skipped: various reasons
t/op/ifunless...ok
t/op/info...ok
t/op/integerok
t/op/interp.ok
t/op/jitok
t/op/jitn...ok
t/op/lexicals...ok
t/op/macro..ok
1/16 skipped: various reasons
t/op/number.ok
t/op/rx.ok
1/23 skipped: various reasons
t/op/stacks.ok
t/op/string.ok
t/op/time...ok
t/op/trans..ok
t/op/types..ok
t/pmc/array.ok
t/pmc/boolean...ok
t/pmc/coroutine.ok
t/pmc/delegate..ok
t/pmc/dumperok
t/pmc/env...ok
t/pmc/eval..ok
t/pmc/exception.ok
t/pmc/float.ok
t/pmc/freezeok
t/pmc/intlist...ok
t/pmc/iook
1/21 skipped: various reasons
t/pmc/iter..ok
1/9 skipped: various reasons
t/pmc/key...ok
t/pmc/managedstruct.ok
t/pmc/mmd...ok
t/pmc/multiarrayok
t/pmc/nci...i386 JIT CPU
.so SO extension
t/pmc/nci...ok
29/29 skipped: various reasons
t/pmc/object-meths..ok
t/pmc/objects...ok
t/pmc/orderedhash...ok
t/pmc/perlarray.ok
t/pmc/perlhash..ok
t/pmc/perlint...ok
t/pmc/perlnum...ok
t/pmc/perlstringok
t/pmc/pmc...ok
t/pmc/prop..ok
t/pmc/ref...ok
t/pmc/sarrayok
t/pmc/scratchpadok
t/pmc/signalskipped
all skipped: No events yet
t/pmc/sort..ok
t/pmc/sub...ok
t/pmc/threads...skipped
all skipped: No threading yet or test not enabled for 'netbsd'
t/pmc/timer.ok
5/7 skipped: various reasons
t/pmc/tqueueok
t/native_pbc/integerok
t/native_pbc/number.ok
imcc/t/imcpasm/cfg..ok
imcc/t/imcpasm/opt0.ok
imcc/t/imcpasm/opt1.ok
1/49 skipped: various reasons
imcc/t/imcpasm/opt2.ok
5/5 skipped: various reasons
imcc/t/imcpasm/optc.ok
6/6 skipped: various reasons
imcc/t/imcpasm/pcc..ok
10/10 skipped: various reasons
imcc/t/imcpasm/sub..ok
imcc/t/reg/spillok
imcc/t/syn/bsr..ok
imcc/t/syn/clashok
imcc/t/syn/constok
imcc/t/syn/eval.ok
imcc/t/syn/file.ok
1/12 skipped: various reasons
imcc/t/syn/keyedok
imcc/t/syn/labels...ok
imcc/t/syn/macrook
imcc/t/syn/namespaceok
imcc/t/syn/pcc..ok
2/31 skipped: various reasons
imcc/t/syn/pod..ok
imcc/t/syn/scopeok
t/src/basic.ok
t/src/exit..ok
t/src/extendok
t/src/hash..ok
t/src/intlist...ok
t/src/iook
1/20 skipped: various reasons
t/src/list..ok
t/src/manifest..ok
t/src/sprintf...ok
All tests successful, 2 tests and 69 subtests skipped.
Files=95, Tests=1370, 293 wallclock secs (30.29 cusr + 15.31 csys = 45.60
CPU)
% make testexec
echo 'print Hello World\n'  hello.pasm
echo  'end'  hello.pasm
./parrot -o hello.pbc hello.pasm
./parrot -o hello.o hello.pbc
make EXEC=hello exec
/house/kostirya/parrot/src/exec_start.c
cc -o
hello -Wl,-R/usr/pkg/lib  -Wl,-rpath,/usr/pkg/lib -Wl,-rpath,/usr/local/lib 
-L/usr/pkg/lib  -g hello.o src/exec_start.o blib/lib/libparrot.a -lm -lcrypt
./hello
Hello World
%






Re: Current PLATFORMS

2004-03-02 Thread Eirik Berg Hanssen
Index: PLATFORMS
===
RCS file: /cvs/public/parrot/PLATFORMS,v
retrieving revision 1.15
diff -u -t -u -r1.15 PLATFORMS
--- PLATFORMS	1 Mar 2004 08:48:13 -	1.15
+++ PLATFORMS	2 Mar 2004 01:08:49 -
@@ -18,6 +18,7 @@
 linux-sparc-gcc3.3.3BY-- Y   Y  Y   Y
 linux-sparc64-gcc3.3.3  B8   Y-- -   -  Y   -
 linux-x86-gcc2.95.2  YYY Y   Y  Y   Y
+linux-x86-gcc3.2.3   YYY Y   Y  Y   Y
 linux-x86-gcc3.3.3   YYY Y   Y  Y   Y
 linux-x86-gcc3.3.3 *3YYY Y   Y  Y   Y*3
 linux-x86-icc8   YYY Y   Y  Y   Y
Index: t/pmc/signal.t
===
RCS file: /cvs/public/parrot/t/pmc/signal.t,v
retrieving revision 1.4
diff -u -t -u -r1.4 signal.t
--- t/pmc/signal.t	28 Feb 2004 12:02:21 -	1.4
+++ t/pmc/signal.t	2 Mar 2004 01:08:56 -
@@ -41,7 +41,7 @@
 sub send_SIGINT {
 $SIG{ALRM} = sub {
 # get PID of parrot
-my @ps = `ps | grep [p]arrot`;
+my @ps = `ps -C parrot -o pid`;
 die 'no output from ps' unless @ps;
 # the IO thread parrot process
 # on 2.2.x there are 4 processes, last is the IO thread


Re: [PATCH] parrotbug 0.0.1

2004-03-02 Thread Dan Sugalski
At 8:57 AM +0100 3/2/04, Leopold Toetsch wrote:
Jerome Quelin [EMAIL PROTECTED] wrote:

  - the copyright is missing (Dan, please insert correct copyright)
All in parrot root is subject to terms in LICENSES.
Copyright notices still should be in the individual files.
--
Dan
--it's like this---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Re: [PATCH] parrotbug 0.0.1

2004-03-02 Thread Dan Sugalski
At 9:24 PM -0800 3/1/04, Robert Spier wrote:

  - I'm not sure about the reporting address (Robert, I need your advice
 on this one)
I suppose, it should be something like parrotbugatparrotcode.org

Anyone else want to brainstorm bug addresses for parrot?
Since we need a new system to handle ok/nok/full bug reports, how 
'bout we add in:

  parrotstatus-ok
  parrotstatus-nok
  parrotbug
all @parrotcode.org. The first for automated OK reports, the second 
for automated nok reports, and the third for actual bug reports.
--
Dan

--it's like this---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Re: Tetris example (was: Please no checkins)

2004-03-02 Thread Leopold Toetsch
Jens Rieks wrote:

Hi,

Am Dienstag, 2. März 2004 10:48 schrieb Leopold Toetsch:
- some blocks are dropping down invisibly

Which blocks?
It was the red (color=4) one, which vanished on my notebook, especially 
when it got darkened after dropping down.


Parrot's object support is not yet good enough to be able to convert the game 
to use ParrotObjects.
What is missing?

leo




Re: [perl #27301] [PATCH] \t\pmc\exec.t Tests spawnw opcode

2004-03-02 Thread Nigel Sandever
On Tue, 02 Mar 2004 02:31:47 -0800, [EMAIL PROTECTED] 
(Nigelsandever @ Btconnect . Com) wrote:
 =_1078223508-4945-0
 Content-Type: text/plain; charset=utf-8
 
 # New Ticket Created by  [EMAIL PROTECTED] 
 # Please include the string:  [perl #27301]
 # in the subject line of all future correspondence about this issue. 
 # URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=27301 
 
 
 Does the naming and placement of this test fit convention?
 
 The opcode is called 'spawnw'
 The function is 'Parrot_Run_OS_Command'
 The file 'config/gen/platform/*/exec.c'
 
 A little guidance would help occasionally. 
 If it were forthcoming, I would try to write them up into a beginners FAQ.
 
 
 =_1078223508-4945-0--


If this patch is no good, would someone point out what is wrong with it, or 
where  in the documentation I should be looking for this guidance?

If my lack of experience with OSS/unix makes my willingness to contribute to the 
project unviable, then a simple statement; stop bothering us will stop me 
wasting your time and mine.







[DEV] some vim notes

2004-03-02 Thread Leopold Toetsch
When writing PASM/PIR or digging in the Parrot source, you (as a vim 
user) might find it helpful to run:
1) make -C editors
  This installs a vim syntax file in ~/.vim/syntax/imc.vim
 (I have it sym-linked as pasm.vim too).
  And:
  $cat ~/.vim/ftplugin/imc.vim
augroup filetypedetect
au BufNewFile,BufRead *.imc setf imc
augroup END
  $cat ~/.vim/ftplugin/pasm.vim
augroup filetypedetect
au BufNewFile,BufRead *.pasmsetf pasm
augroup END
  $cat ~/.vim/ftplugin/pmc.vim
augroup filetypedetect
au BufNewFile,BufRead *.pmc setf c
augroup END

2) make tags
While hacking PASM press ctrl-] or g-] with the cursor standing at 
an opcode (or some C syntax item of course). This might be helpful, if 
you don't know all 1384 opcode variants by hard :)

Have fun,
leo


Re: [perl #27272] [PATCH] fix typos in intro.pod

2004-03-02 Thread Leopold Toetsch
Neil Conway [EMAIL PROTECTED] wrote:

 This trivial patch fixes a few typos I noticed while reading through
 docs/intro.pod

Thanks, applied.
leo


Re: Current PLATFORMS

2004-03-02 Thread Joshua Hoblitt
Parrot 0.1.0 builds on Linux/x86_64 w/gcc 3.3.3 (20040217) and glibc-2.3.3 
(pre20040207) but a number of tests fail.  I can provide the complete test run if 
anyone thinks it will be helpful.

-J

--
Failed TestStat Wstat Total Fail  Failed  List of Failed
---
imcc/t/reg/spill.t3   768 33 100.00%  1-3
imcc/t/syn/bsr.t  9  2304139  69.23%  1-8 13
imcc/t/syn/clash.t3   768133  23.08%  5-7
imcc/t/syn/const.t3   768 43  75.00%  1-3
imcc/t/syn/eval.t 4  1024 74  57.14%  3-6
imcc/t/syn/file.t 4  1024124  33.33%  1-4
imcc/t/syn/macro.t9  2304239  39.13%  1-9
imcc/t/syn/namespace.t3   768 33 100.00%  1-3
imcc/t/syn/pcc.t 11  281631   11  35.48%  1-4 11 16 23-25 28 31
t/native_pbc/integer.t4  1024 44 100.00%  1-4
t/native_pbc/number.t 5  1280 55 100.00%  1-5
t/op/arithmetics.t   18  460820   18  90.00%  1-18
t/op/basic.t  4  1024214  19.05%  2 10-11 15
t/op/bitwise.t   20  512023   20  86.96%  1-5 9-23
t/op/comp.t   1   256 71  14.29%  7
t/op/conv.t  12  307212   12 100.00%  1-12
t/op/gc.t 7  1792 87  87.50%  1-7
t/op/globals.t1   256 31  33.33%  2
t/op/integer.t   27  691239   27  69.23%  1-9 22-39
t/op/interp.t 6  1536116  54.55%  2 6 8-11
t/op/jit.t   44 1126458   44  75.86%  1-40 44-47
t/op/jitn.t   9  2304 99 100.00%  1-9
t/op/lexicals.t   2   512 62  33.33%  3-4
t/op/macro.t 10  256016   10  62.50%  1-4 6-10 16
t/op/number.t22  563238   22  57.89%  1-11 25-27 29 31-35 37-38
t/op/stacks.t25  640056   25  44.64%  1-6 23-24 29-39 43-44 46-
  47 49-50
t/op/string.t26  6656   126   26  20.63%  3-4 65-71 74-77 85-95 105
  125
t/op/types.t  2   512 32  66.67%  2-3
t/pmc/array.t 5  1280125  41.67%  6-7 10-12
t/pmc/delegate.t  6  1536 96  66.67%  1-2 5-6 8-9
t/pmc/dumper.t6  1536116  54.55%  6-11
t/pmc/eval.t  4  1024 64  66.67%  1-3 6
t/pmc/exception.t 4  1024224  18.18%  16 18 20-21
t/pmc/float.t 1   256 91  11.11%  1
t/pmc/freeze.t7  1792117  63.64%  2 4-8 10
t/pmc/intlist.t   1   256 91  11.11%  1
t/pmc/io.t4  1024214  19.05%  2 4 9 18
t/pmc/iter.t  2   512 92  22.22%  7-8
t/pmc/managedstruct.t 3   768 53  60.00%  2-4
t/pmc/mmd.t   1   256 11 100.00%  1
t/pmc/object-meths.t  3   768 43  75.00%  1 3-4
t/pmc/objects.t   7  1792257  28.00%  1-2 5-7 9 13
t/pmc/orderedhash.t   3   768173  17.65%  6-7 17
t/pmc/perlarray.t 9  2304269  34.62%  1-3 20-24 26
t/pmc/perlhash.t 13  332832   13  40.62%  2-8 22-24 28 30-31
t/pmc/perlstring.t3   768293  10.34%  2 16-17
t/pmc/pmc.t   6  1536926   6.52%  21-22 62 76 78-79
t/pmc/prop.t  1   256 71  14.29%  7
t/pmc/scratchpad.t1   256 51  20.00%  5
t/pmc/signal.t2   512 62  33.33%  2 4
t/pmc/sort.t  1   256 91  11.11%  6
t/pmc/sub.t   6  1536666   9.09%  3-4 6 36-38
t/pmc/threads.t   5  1280115  45.45%  2-4 8-9
t/pmc/timer.t 2   512 72  28.57%  6-7
t/pmc/tqueue.t1   256 11 100.00%  1
t/src/extend.t4  1024134  30.77%  3-4 9 13
Failed TestStat Wstat Total Fail  Failed  List of Failed
---
t/src/hash.t  8  2048108  80.00%  3-10
t/src/io.t6  1536206  30.00%  4 7 14-15 17 20
t/src/list.t  1   256 21  50.00%  1
t/src/sprintf.t   2   512 32  66.67%  2-3
70 subtests skipped.
Failed 60/95 test scripts, 36.84% okay. 422/1386 subtests failed, 69.55% okay.


Re: Tetris example (was: Please no checkins)

2004-03-02 Thread Dan Sugalski
At 5:13 PM +0100 3/2/04, Leopold Toetsch wrote:
Parrot's object support is not yet good enough to be able to 
convert the game to use ParrotObjects.
What is missing?
Constructors and destructors are my two big guesses here. :-P
--
Dan
--it's like this---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


[PATCH] native exec support on win32

2004-03-02 Thread Goplat
Attached patch adds native exec support for win32's COFF format .o files. I
had to change some code that assumed the bytecode being used was from the
interpreter-code-src block, which wasn't the case when it's not being mmaped.

__
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com--- build_tools/jit2h.pl~   Tue Feb 10 01:38:56 2004
+++ build_tools/jit2h.plTue Mar  2 16:08:04 2004
@@ -177,7 +177,7 @@
 # The -u.(string|float) is unnecessary.
 $asm =~ s/\)-u\.(\w+)/)/g;
 $asm =~ 
s/CONST\((\d)\)\s*([=!]=?)\s*CONST\((\d)\)/RCONST($1)-u.number $2 
RCONST($3)-u.number/ if ($asm =~ /CONST.*CONST/);
-$asm =~ 
s/(jit_emit_mov_([mr]i_ni).*)jit_info-cur_op\[(\d)\]\);/$1(int)jit_info-cur_op[$3] 
- (int)interpreter-code-src);\n\tParrot_exec_add_text_rellocation(jit_info-objfile, 
NULL, RTYPE_DATA, program_code, 0);/g;
+$asm =~ 
s/(jit_emit_mov_([mr]i_ni).*)jit_info-cur_op\[(\d)\]\);/$1(int)jit_info-cur_op[$3] 
- (int)interpreter-code-cur_cs-base.data + 
jit_info-objfile-bytecode_header_size);\n\tParrot_exec_add_text_rellocation(jit_info-objfile,
 NULL, RTYPE_DATA, program_code, 0);/g;
 $asm =~ 
s/(\n(\s*)[^\n]*((rm|mr|mi|ri)_(ni|n|i))[^\n]*[INSP]REG[^\n]*)/$1\n$2Parrot_exec_add_text_rellocation(jit_info-objfile,
 NULL, RTYPE_COM, interpre, 0);/g;
 $asm =~ 
s/(\n(\s*)[^\n]*((rm|mr|mi|ri)_(ni|n|i))[^\n]*CONST[^\n]*)/$1\n$2Parrot_exec_add_text_rellocation(jit_info-objfile,
 NULL, RTYPE_DATA, const_table, 0);/g;
 $asm =~ s/(\\\n\s*Parrot_exec_add_text_rellocation[^\n]*)/$1\\/g;
@@ -291,7 +291,7 @@
 #define NREG(i) EXR(num_reg.registers, jit_info-cur_op[i] * sizeof(FLOATVAL))
 #define PREG(i) EXR(pmc_reg.registers, jit_info-cur_op[i] * sizeof(PMC *))
 #define SREG(i) EXR(string_reg.registers, jit_info-cur_op[i] * sizeof(STRING *))
-#define CONST(i) (int *)(jit_info-cur_op[i] * sizeof(struct PackFile_Constant) + 4)
+#define CONST(i) (int *)(jit_info-cur_op[i] * sizeof(struct PackFile_Constant) + 
offsetof(struct PackFile_Constant, u))
 #define RCONST(i) interpreter-code-const_table-constants[jit_info-cur_op[i]]
 #define CALL(f) Parrot_exec_add_text_rellocation_func(jit_info-objfile, 
jit_info-native_ptr, f); \\
 emitm_calll(jit_info-native_ptr, EXEC_CALLDISP);
--- config/auto/jit.pl~ Wed Feb 25 21:15:50 2004
+++ config/auto/jit.pl  Sat Feb 28 10:14:02 2004
@@ -124,14 +124,15 @@
   jit_o   = '$(SRC)/jit$(O) $(SRC)/jit_cpu$(O) $(SRC)/jit_debug$(O) 
$(SRC)/jit_debug_xcoff$(O)'
 );
 
-if (($jitcpuarch eq 'i386'  ($osname =~ /bsd$/i || $osname =~ /linux/i))
+if (($jitcpuarch eq 'i386')
  || ($jitcpuarch eq 'ppc') || ($jitcpuarch eq 'arm')) {
   $execcapable = 1;
   unless (($osname eq 'openbsd') ||
   ($osname eq 'freebsd') ||
   ($osname eq 'netbsd')  ||
   ($osname eq 'linux')   ||
-  ($osname eq 'darwin'))
+  ($osname eq 'darwin')  ||
+  ($osname eq 'MSWin32'))
   {
 $execcapable = 0;
   }
--- include/parrot/exec.h~  Mon Dec  1 13:22:22 2003
+++ include/parrot/exec.h   Wed Feb 29 17:13:42 2004
@@ -28,9 +28,14 @@
 #   if (PARROT_EXEC_OS_FREEBSD) || (PARROT_EXEC_OS_NETBSD) || (PARROT_EXEC_OS_LINUX)
 # define EXEC_ELF
 #   endif
+#   if PARROT_EXEC_OS_MSWIN32
+# define EXEC_COFF
+#   endif
 
 #   ifdef EXEC_A_OUT
 #define EXEC_CALLDISP jit_info-arena.start - jit_info-native_ptr - 4
+#   elif defined(EXEC_COFF)
+#define EXEC_CALLDISP 0
 #   else
 #define EXEC_CALLDISP 0xfffc
 #   endif
--- jit/i386/jit_emit.h~Thu Jan  8 08:20:40 2004
+++ jit/i386/jit_emit.h Tue Mar  2 16:09:24 2004
@@ -1897,7 +1897,8 @@
 #define PREG(i) EXR(pmc_reg.registers, i * sizeof(PMC *))
 #define SREG(i) EXR(string_reg.registers, i * sizeof(STRING *))
 #define CONST(i) (int *)(jit_info-cur_op[i] * \
-   sizeof(struct PackFile_Constant) + 4)
+   sizeof(struct PackFile_Constant) + \
+   offsetof(struct PackFile_Constant, u))
 
 #define CALL(f) Parrot_exec_add_text_rellocation_func(jit_info-objfile, \
jit_info-native_ptr, f); \
--- src/exec_save.c~Mon Jan 26 15:16:06 2004
+++ src/exec_save.c Tue Mar  2 17:23:14 2004
@@ -572,6 +572,133 @@
 
 #endif /* EXEC_MACH_O */
 
+#ifdef EXEC_COFF
+
+/* File offsets */
+#define TEXT_CODE  0x14 + (3 * 0x28)
+#define DATA_CODE  TEXT_CODE + obj-text.size
+#define TEXT_RELOC DATA_CODE + obj-data.size
+#define DATA_RELOC TEXT_RELOC + (obj-text_rellocation_count * 0xA)
+#define SYMTAB DATA_RELOC + (obj-data_rellocation_count * 0xA)
+
+void
+Parrot_exec_save(Parrot_exec_objfile_t *obj, const char *file)
+{
+FILE *fp;
+int i;
+
+fp = fopen(file, wb);
+
+save_short(fp, 0x14C); /* i386 */
+save_short(fp, 3); /* Number of sections */
+save_int(fp, Parrot_intval_time());
+save_int(fp, 

Tetris example (was: Please no checkins)

2004-03-02 Thread Leopold Toetsch
Jens Rieks [EMAIL PROTECTED] wrote:
 Hi leo,

 Here is the tetris example, include it if you want...

I've now tested it a bit. Looks really good and works - mostly :)
- it tries to load SDL_Image, albeit this seems to be unused
- some blocks are dropping down invisibly
- it doesn't recognize a game over situation
- some quit key handling would be nice.

Despite that its a great application and a very good example:

# create the tetris app
app = _Tetris::App::new()

# init the tetris app
ret = _Tetris::App::init( app )

This code looks darned good.

 jens

leo


Re: Current PLATFORMS

2004-03-02 Thread Leopold Toetsch
Joshua Hoblitt [EMAIL PROTECTED] wrote:

 Parrot 0.1.0 builds on Linux/x86_64 w/gcc 3.3.3 (20040217) and
 glibc-2.3.3 (pre20040207) but a number of tests fail.

x86_64 is nowadays amd64 I presume. Can you please provide the output of
$ cat myconfig

 ... I can provide
 the complete test run if anyone thinks it will be helpful.

Doesn't help much. Did you get any warnings during compilation? Test
results really don't look good. There seem to be some serious problems.

 Failed 60/95 test scripts, 36.84% okay. 422/1386 subtests failed, 69.55% okay.

Thanks,
leo


Re: This week's summary

2004-03-02 Thread Leopold Toetsch
The Perl 6 Summarizer [EMAIL PROTECTED] wrote:
 The Perl 6 Summary for the week ending 20040229

   Native PBC issues
 It turns out that, just at the moment, Parrot bytecode isn't actually
 platform independent. This will, of course, get fixed, but it's not
 Leo's top priority at present.

Mostly fixed, thanks to Jarkko.

 ... He asked people who are running Parrot on
 64 bit and Big endian architectures to submit native_pbc test files (if
 you're on such an architecture, take a look at t/native_pbc/*.t for
 instructions, and the Parrot community will thank you for it).

And we already have {little,big} endian {32,64} bit native tests.

Thanks for your summary,
leo


Cygwin tests (was: Current PLATFORMS)

2004-03-02 Thread Leopold Toetsch
Tj Anthony [EMAIL PROTECTED] wrote:
 [silent lurker alert]

Not more ;)

 Parrot will build on Cygwin, as long as you configure with:

 perl Configure.pl --define-inet_aton

Good.

 The tests, however, are a different story.  Notably, extend_12 runs away
 and starts hopelessly consuming memory until manually killed.

 Failed 23/95 test scripts, 75.79% okay. 49/1370 subtests failed, 96.42%
 okay.

Bad.

 If there's desire, I'll glady submit the whole output from the tests.

Doesn't help much. It would be great, if you can run failing tests
standalone and through the debugger, to figure out what is going on.

 TJ Anthony

Thanks - PLATFORMS adjusted,
leo


Re: [perl #27301] [PATCH] \t\pmc\exec.t Tests spawnw opcode

2004-03-02 Thread Brent \Dax\ Royal-Gordon
Nigel Sandever wrote:
 If my lack of experience with OSS/unix makes my willingness to
 contribute to the project unviable, then a simple statement; stop
 bothering us will stop me wasting your time and mine.
If I may, most of the US East Coast is settling down for bed right now, 
and most of the West Coast is having dinner.  I would guess that people 
just haven't noticed your post yet.

The patch looks okay to me, but I've been out of the loop so long that 
I'm as likely to be wrong as right.  :^)

In my experience, these guys don't discriminate based on either Unix 
experience or open-source experience--when I submitted my first patches, 
I'd never sat at a Unix workstation or server, submitted code to another 
Open Source project, or even written C.  (C++, yes, but not C.)

--
Brent Dax Royal-Gordon [EMAIL PROTECTED]
Perl and Parrot hacker
Oceania has always been at war with Eastasia.


[perl #27336] [PATCH] Typo in library/dumper.imc

2004-03-02 Thread via RT
# New Ticket Created by  Will Coleda 
# Please include the string:  [perl #27336]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=27336 


Minor typo in library/dumper.imc for unknown pmcs



dumper.diff
Description: Binary data


--
Will Coke Coledawill at coleda 
dot com

Re: www.parrotcode.org/ points to 0.0.10

2004-03-02 Thread Robert Spier

As promised.  

The new site is now live.

-R

 
 This is on my list for tonight.  I've got something all ready to go
 but have been busy with a $NEW_JOB.
 
 -R
 
 At Tue, 2 Mar 2004 00:44:02 -0500,
 Mitchell N Charity wrote:
  
  The parrot homepage
http://www.parrotcode.org/
  currently says
Periodic releases will appear on CPAN; the current release is
version 0.0.10, and can be found in the CPAN source directory.
  And source directory is a link to parrot-0.0.10.tar.gz


Re: [perl #27336] [PATCH] Typo in library/dumper.imc

2004-03-02 Thread chromatic
On Tue, 2004-03-02 at 21:54, Will Coleda wrote:

 Minor typo in library/dumper.imc for unknown pmcs

Thanks, applied.

-- c



Re: open issue review (easy stuff)

2004-03-02 Thread Will Coleda
On Tuesday, January 20, 2004, at 06:03  PM, Robert Spier wrote:
If you respond to this message, with the ticket id and brief reason
why it can be closed, i.e. patch applied, patch rejected, bad
idea.. I'll do the labor of updating the ticketing system.

-R

18044: Assembler doesn't return a useful exit status
assemble.pl is dead - original issue resolved, followup sent, though we 
still don't return on bad usage as the follow up poster requested.
19670: [PASM] bug in i/o (read on stdin)
Sent followup via RT - still can't get unbuffered STDIN, though the 
main issue is resolved.

20666: Assemble.pl Reports Incorrect Line Numbers after Removal of  
Macros
assemble.pl is dead.

21729: IMCC doesn't handle scientific notation constants
The thrust was assemble.pl supports them, imcc doesn't, but they 
should agree.

Since assemble.pl is dead, the question is moot, IMCC notation wins. 
(no followup sent.)

22183: imcc doesn't support \e
Yes it does. (patch was applied but never closed) (no followup sent)

22521: IMCC causes seegfault with many perlarrays and perlhashes
22617: IMCC duplicate labels in different subs cause wrong branch
Leo fixed these, but they were never closed



22718: core function index() returns -1 when search string contains  
spaces
This appears to be fixed.
22922: Parrot threading!
This wasn't really a bug. More of a question that Dan seems to have 
answered.

22995: [PATCH] op cmp INT STR STR

Dan applied this, never closed.

23299: Dynamic type handling in IMCC
There is a very long discussion which appears to be rendered academic 
by the fact that the poster's original code now works (presuming you 
add the missing end as the last opcode.)

... and then I got bored.

--
Will Coke Coledawill at coleda 
dot com



Valgrind shouting

2004-03-02 Thread Arthur Bergman
Hi,

So I am currently trying to find another segfault, valgrind is helping 
me but the only thing it really says is

==24093== Conditional jump or move depends on uninitialised value(s)
==24093==at 0x8273227: compact_pool (src/resources.c:301)
==24093==by 0x827300C: mem_allocate (src/resources.c:149)
==24093==by 0x82736C6: Parrot_reallocate (src/resources.c:500)
==24093==by 0x8182513: expand_hash (src/hash.c:509)
==24093==by 0x81826C5: new_bucket (src/hash.c:587)
==24093==by 0x8182B66: hash_put (src/hash.c:891)
==24093==by 0x81816B3: dod_register_pmc (src/pmc.c:1009)
==24093==by 0x81C0973: Parrot_register_pmc (src/extend.c:791)
==24093==by 0x80DA233: S_new_xpvav (sv.c:1084)
==24093==by 0x80DB0AE: Perl_sv_upgrade (sv.c:1568)
==24093==
and a couple of statements later on this, in something that shouldn't 
be able to segfault

==24093== Invalid write of size 4
==24093==at 0x80DB162: Perl_sv_upgrade (sv.c:1577)
==24093==by 0x80C8E0D: Perl_newAV (av.c:386)
==24093==by 0x809976E: Perl_pad_push (pad.c:1525)
==24093==by 0x80D76D8: Perl_pp_entersub (pp_hot.c:2640)
==24093==by 0x80AF5C2: Perl_runops_debug (dump.c:1439)
==24093==by 0x8064E15: S_run_body (perl.c:1713)
==24093==by 0x806481A: perl_run (perl.c:1632)
==24093==by 0x804C720: main (miniperlmain.c:86)
==24093==  Address 0x18 is not stack'd, malloc'd or free'd
So, it is increasing the registered hash, doing something weird, and 
then promptly corrupting memory, or am I just guessing wrong here?

Cheers
Arthur


Re: Distributing traits / Rule-matching group properties

2004-03-02 Thread Damian Conway
Larry wrote:

: Indeed, if Larry were to give the word, I'd be delighted to add support for 
: it to the Perl6::Rules module.

Execute!  (I hope that's the right word...)
I believe, Captain, the correct word would be: Engage!

Data^H^Hmian


Re: Exegesis 7: Fill Justification

2004-03-02 Thread Stefano Rodighiero
Il giorno 02/mar/04, alle 04:12, Larry Wall ha scritto:

[...]
: Problem solved!!! ;-)
I think you prove my point.  :-)
Very nice certamen.

You would be probably thrilled by an italian Usenet poster I'm honoured
to know, who manually justifies every single post he writes. No extra
spaces, and no hyphenation. He is Leonardo Serni. Random examples:
  Message-ID: [EMAIL PROTECTED]
  Message-ID: [EMAIL PROTECTED]
  Message-ID: [EMAIL PROTECTED]
Someone uses the verb to sernify (sernificare) to indicate this 
style.
Someone thinks Leonardo Serni is like Nicolad Bourbaki.
On his part, Leonardo says this technique does not take him too much 
time.

cheers,
Stefano


Re: Exegesis 7: Fill Justification

2004-03-02 Thread Piers Cawley
Tom Christiansen [EMAIL PROTECTED] writes:

On Tue, Mar 02, 2004 at 10:01:11AM +1100, Damian Conway wrote:
: That's a *very* interesting idea. What do people think?

I think anyone who does full justification without proportional
spacing and hyphenation is severely lacking in empathy for the reader.
Ragged right is much easier on the eyes--speaking as someone who had
their seventh eye operation today.

 At least aesthetically, yes, it sure does look better ragged.  I do
 wonder why that is, though.  Could it be that the unevenness of the
 inserted fixed-width spacing looks rough?  Or is maybe because with
 long lines, one's eye might get lost, being slower to tell one line
 from the next?  That's certainly a reason for have shorter columns.

 In a message of mine to p5p of 4-Nov-2003 [EMAIL PROTECTED],
 I showed (but did not mention) how this sort of can be done without
 inserting any spurious spaces whatsoever, even in a long paragraph:

 Well, no.  Mark answered so quickly after I did, and covered so much of it
 so succinctly, that I backed off again.  It seems to me that he and I have
 both for a long time yearned for a perliotut; I don't believe either of us
 has ever fleshed out more than an outline, though.  IO is a subject that's
 not always easy to figure out how to get the best handle on (ENOPUN).  For
 one thing, it's steeped in Unix lore and tradition, and it requires either
 knowing or else teaching quite a bit of C programming that would otherwise
 be completely irrelevant to Perl.  For example, when you see someone lseek
 zero bytes from the current position in Perl, you know they're remembering
 the ANSI C requirement of a seek falling between switching from reading to
 writing or vice versa.  As always, you're subject to all the silly bugs in
 your libc runtime system and in your kernel; for example, we tried to have
 all buffers flushed before a fork() to avoid duplicate output in the child
 by calling fflush(0) from C, the intent being to flush data still there in
 stdio buffers.  Unfortunately, on some platforms, you'll accidentally toss
 not just pending output, but also pending input.  Thus the case where read
 on STDIN was called with 2 against asdf\n, you'd still have the df\n yet
 to read get completely trounced.  This is incorrect behaviour, at least as
 far as the goal of flushing pending output buffers before forking.  Sadly,
 there really are a zillion little things like this, and these are just the
 exceptions, not the core functionality that you'd like to teach people for
 learning IO.  Blocking and buffering are tricky; did you remember that the
 output commands can also block?  Think about sending something down a pipe
 where the reader on the other end is slow or busy.  That's why with select
 you also have a slot for output handles you want to know whether are ready
 for IO.  It just goes on and on.  It would be easier to hand out copies of
 Stevens than to write perliotut, but that's too embarrassing and annoying.
 However, I fear this isn't really readily automated; sorry to interrupt. :-)

It's more fun if you do an acrostic on the left hand column. And rather
harder if you perpetrate a simultaneous acrostic on the right. But I've
given up on such pursuits. Not that I ever managed an ambidexterous one
myself anyway. For particular values of fun, of course.


-- 
Beware the Perl 6 early morning joggers -- Allison Randal


Re: Exegesis 7: Fill Justification

2004-03-02 Thread Stefano Rodighiero
Il giorno 02/mar/04, alle 10:08, Stefano Rodighiero ha scritto:

[...]
Someone thinks Leonardo Serni is like Nicolad Bourbaki.
^^^

Oops. That was 'Nicolas'. Sorry.

Stefano