Re: Tetris example (was: Please no checkins)
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
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
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
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
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
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
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
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
# 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
# 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
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
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
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
# 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
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
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
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
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
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
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
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)
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
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
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
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
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)
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
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 youre 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)
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
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
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)
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
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
# 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
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
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)
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
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
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
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
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
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