RE: floor op

2003-09-04 Thread Burnett, David
From: Lars Balker Rasmussen [mailto:[EMAIL PROTECTED]
Burnett, David [EMAIL PROTECTED] writes:
 the idea of having a 'floor' op. 

I've implemented an op for floor on native numbers.  Feel free to give it
a whirl. (I'm not sure if floor(-0.0) is meant to 
return -0.0 or not, but it does.)

Floor is supposed to return the lowest 'integer' not greater than
the original value, so floor(-1.0) returns (-1.0) therefore 
ignoring the oddity of there being a -0.0 in the first place 
it make sense that floor(-0.0) returns -0.0 :-)

 So I now I have a working my perlin noise (with turbulence) 
 implementation written in pure pasm :-)

Cool!  So, how does it perform? ;)

Slow :-) But I'm making no claims on how good the code is.
It's my first, from scratch assembler program ever.

On the 2.4GHz P4 at work, its 63s to create a 1001x10001 pgm
using no optimisation options when running parrot, from the POW
distribution, which also means no JIT. 
My Java version creates a 1001x10001 PNG in around 10 seconds.
There are big differences in IO (the Java version is buffered)
to consider and the Java version probably has optimised floor 
and rand capability :-)

Dave


==
Information in this email and any attachments are confidential, and may
not be copied or used by anyone other than the addressee, nor disclosed
to any third party without our permission. There is no intention to
create any legally binding contract or other binding commitment through
the use of this electronic communication unless it is issued in accordance
with the Experian Limited standard terms and conditions of purchase or
other express written agreement between Experian Limited and the recipient
Experian Limited (registration number 653331)
Registered office: Talbot House, Talbot Street, Nottingham NG1 5HF



parrotZ license issues (was Re: Parrot Z-machine)

2003-09-04 Thread Amir Karger
Sigh. My plan in starting this discussion was not to talk about
licenses. But it sounds like it's safer not to use Winfrotz if we don't
have to. I note that Games::Rezrov is same terms as Perl itself
license. However, in his effort to make Rezrov run fast, the author (by
his own admission) obfuscated the code. In addition, I may want to copy
some pieces of the C code wholesale for implementing certain opcodes,
so it'll be a lot easier to have stealable C code than translating
obfuscated Perl back into C.

Jzip, meanwhile, says:


Copyright (c) 2000  John D. Holder.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


To my untrained eyes, that sounds safer, since it appears to be less
restrictive than either GPL or Artistic.

Now let's get this license stuff out of the way so I can get to actual
coding!

-Amir

p.s. re the email subject: For now, I'm calling the Parrot Z-machine
project parrotZ. It's simple, it expresses that it's Z-machine in
Parrot, and it even rhymes with frotz if you pronounce it right. It
might or might not stand for parrotZ: A Register-based Runtime Of The
Z-machine. And as you know, coming up with a good name is half the
battle in finishing a tough project. Well, maybe half a percent of the
battle.


__
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com


RE: [RfC] vtable-dump

2003-09-04 Thread Gordon Henriksen
What's a dump stream actually going to look like? E.g.,

$a = [1, 2, 3];
print dump($a);

1: PMC PerlArray
2: 3  # element count
3: PMC PerlInt# [0]
4: 1  #   value
5: PMC PerlInt# [1]
6: 2  #   value
7: PMC PerlInt# [2]
8: 3  #   value

Fine and good. But dump must handle object graphs, which can be
recursive or self-referential or whatnot:

$a = { b = undef };
$b = { a = $a};
$a-{b} = $b;
print dump($a);

1: PMC PerlHash
2: 1  # key-value count
3: PMC PerlString # keys[0]
4: b#   value
5: PMC PerlHash   # values[0]
6: 1  #   key-value count
7: PMC PerlString #   keys[0]
8: a# value
9: !!!

Panic! Dump needs to refer to line 4 again, or else recurse! How?

Most serializers use a seen hash not only to indicate that an object has
been seen, but also to remember a name or number for that object. If
dump had remembered $a = line 4, it could finish off with something
like...

9: Again 4#   values[0]

A seen hash is also threadsafe, can be interrupted by DoD, and is safe
for recursion. (By threadsafe, I mean that unchanged data structures
can be safely serialized from multiple threads without ill effect or
possibility of deadlock.)

--
 
Gordon Henriksen
IT Manager
ICLUBcentral Inc.
[EMAIL PROTECTED]




Re: [PATCH] File Spec

2003-09-04 Thread martin
On Mon, 1 Sep 2003, Michael G Schwern wrote:
 You also must worry about volumes.
 Unix: No user visible concept of a volume
 Windows: VOLUME:\dir1\dir2\file
 VMS: VOLUME:[dir1.dir2]file

This has been worrying me for some years. The concept of volume has
different implications for different platforms.

[please excuse long rambling explanation...]

One could argue that the mount points in Unix, though normally invisible,
are volumes in the sense that they do affect the semantics of certains
system calls, most especially rename and link, but depending on mount
options also open, write, ioctl and others. Making them visible is
normally exhorbitantly expensive though, so you don't want to do so unless
absolutely necessary.

It's also clear that the relationships between volume and root directory
differ. For Mac, volumes are within a pseudo root directory, whereas for Win32
a root directory exists on a volume. So although they share the same names,
they aren't really portable concepts in any meaningful way.

What these various OSes do share is a concept of current locus (or loci)
within some filename space.

  * On Unix both the working and root directories can be changed;

  * On Windows the current (working) directory is a feature of the current
volume; changing to another volume and back again will bring you to the
same working directory, even if you changed the current directory on
another volume.
(This behaviour changes between different versions of Windows.)

  * On Classic Mac (and VMS?) only the working directory can be changed; the
root directory is faked to be the top of the startup volume;

  * On RMX an arbitrary number [*] of current loci can be established, and
refered to as if they were independent volumes, or accessed by open
handles (much like filedescriptors); the standard C library uses these to
fake the behaviour of various POSIX functions, but these loci can be
shared between processes and thus the POSIX emulation can be fooled.

  * Similarly, versions of Unix which have fchdir and/or fchroot allow a
working directory or root directory to be selected from an arbitrary number
of already-opened directories;

  * Some (ancient) systems don't have any directory hierachy, so a root
directory is meaningless

But also importantly, in the general case it is not possible to determine a
path between two loci, and in particular between a root directory and a working
directory.

  * In Unices with fchdir to have a current working directory that is outside
the current root directory;

  * Filesystem permissions may prevent traversing from one locus to another;
(normally this would prevent construction of a path from one to the other,
but even given such a path, it might not be usable)

The more important question is how do we interpret these things to decide if
certain operations should reasonable be expected to succeed? Give or take
ownership issues of course...

Some of them we already can do somewhat portably:

  * How do we take the results of readdir and make them usable?

  * If we use chdir, how do we later get back to the same working directory?

  * Is a given filename dependent on the working directory?

  * Do two pathnames A and B refer to the same entity?
Just by inspecting the pathnames?
By checking whether they're links to the same file (inode)?

  * Do two pathnames A and B refer to entities in the same directory?

If so then we can assume that if permissions allow us to access A then they
will probably also allow us to access B.  Not that we shouldn't check the
results of both attempts of course, but if one succeeds and the other fails
then we would be excused for just bailing instead of trying harder.

Some of them are a lot harder to do portably:

  * Can we rename a file from name A to name B? A directory?
If it's one that we just created? One that we got from readdir?

How can we construct A from B or B from A to guarantee that we can?

Roughly this translates to are A and B on the same volume? unless
you're on Unix where we pretend that there aren't any volumes...

  * How do we do transactional file replacement? That is, either replace
a target file with a complete replacement, or not at all.

On Unix we do this by creating a temporary file in the same directory and
once it has been completely written, renaming it to replace the target
atomically. Or just deleting it to roll back the transaction.

Assuming this method is possible for another OS, how do we construct the
temporary filename from the target filename?

  * Can we create a hard link from name A to name B? A symbolic link?

How can we construct A from B or B from A to guarantee that we can?

Given two pathnames A and B, how do we make the shortest relative path C
between them (to use for a relative symbolic link)?

On Unix you can create a hard link anywhere under the same mount 

Re: [PATCH] File Spec

2003-09-04 Thread Leopold Toetsch
[EMAIL PROTECTED] [EMAIL PROTECTED] wrote:

[ snipped a lot of explanations ]

Please keep in mind, that the intended usage inside Parrot just should
be to locate some standard include or extension files for Parrot
internals. More abstraction and complexity can always be added above
that or implemented by HLLs.

leo


Re: [RfC] vtable-dump

2003-09-04 Thread Leopold Toetsch
Ok, this thread has now +45 entries, I'll try to summarize the
proposed PMC traversal schemes.

0) As the subject still applies ;-) we want to be able to dump() or
pretty_print() a PMC (and possibly aggregate members of that). This
turns out to be a special case of a deep traversal over nested PMCs
of any kind, which might contain self-references and the like.

1) There are more such traverse-like operations namely DOD, clone(),
freeze(). thaw() is different, as we run over the frozen byte-stream
and regenerate the PMC structures from that.

2) Proposals for DOD, freeze(), clone(), dump()

2a) Implement clone()  dump() on top of freeze(): clone=freeze+thaw,
dump() is generated in the debugger sub-system

2b) A general traverse() vtable that calls freeze/clone/dump-vtables.
DOD is a separate traversal (mark).[1]

2c) A more general traverse(), which is our current DOD mark()
functionality using next_for_GC.[2]

Comparison 2a 2b 2c

clone needs intermediate frozen string[3]  yes -  -
clone involves 2 steps yes -  -
dump has to know PMCs internals[4] yes -  -
duplicates recognition overheadHash   Hash-
Traversals per aggregate for clone/freeze[5]1  1  3
Thread-safe[6] yesyes -
Increases PMC size[7]   -  - yes
Adds complexity to DOD[8]   -  - yes
Cache friendly[9]   - yes -
Code duplication[10]-  - yes

[1] I consider Benjamin's proposal as some generalization of this for
now and a mixture of 2a) and 2b) (clone=freeze/thaw).

[2] mark() as of Parrot 0.0.6, each PMC gets on the next_for_GC list

[3] e.g. for clone(Array[1]) the intermediate frozen image is
first generated in memory, then scanned again during thaw().

[4] what about dynamically loaded PMCs?

[5] 2c): 1. mark() per PMC, 2. clone() or freeze(), 3. clear
next_for_GC. mark is called inside clone/freeze again, which additonally
kills data cache coherency.

[6] While all schemes aren't thread-safe from user level (e.g.
manually sorting an array containing shared PMCs, while it gets
frozen), 2c) isn't thread-safe at low-level, as the next_for_GC
pointer inside the PMC is used as a duplicate marker. But if a user
changes shared resources its a user problem. We only guarantee atomic
updates per PMC (s. P6E p 86f by Dan).

[7] next_for_GC (and others like poperties) are in the PMC_EXT
structure now. Plain PMC scalars don't contain other PMCs, so the can
be marked life directly by setting just their live_flag.

[8] Additionally DOD has some shortcuts for marking e.g. a PMC
pointing to another or to an array of PMCs.

[9] 2a): The intermediate frozen image for clone()
2c): 3 passes over aggregates; each PMC gets pulled in during DOD

[10] 2a): mark + freeze
 2b): mark + traverse
 2c): all traverse functions duplicated

This is of course my personal POV. If anything is wrong above please
correct me as well as WRT missing issues.

My major concerns are regarding footnotes [3], [5], [7], [8], and [9].
These haven't been commented/answered yet at all.

Thanks for reading til here ;-)
leo

leo


Re: [RfC] vtable-dump

2003-09-04 Thread Leopold Toetsch
Gordon Henriksen [EMAIL PROTECTED] wrote:

 Panic! Dump needs to refer to line 4 again, or else recurse! How?

Don't Panic! Here is the point, where either next_for_GC is used or the
seen hash. The former is/was used to mark (visit) PMCs. If they have
been visited, they have that pointer set else not. This can be used
during serialization. The latter is in my proposal.

 A seen hash is also threadsafe, can be interrupted by DoD, and is safe
 for recursion. (By threadsafe, I mean that unchanged data structures
 can be safely serialized from multiple threads without ill effect or
 possibility of deadlock.)

Yes. That's what I'm saying.

leo


Re: deadlock vs global mutex for pmc scans

2003-09-04 Thread Leopold Toetsch
Uri Guttman [EMAIL PROTECTED] wrote:

 so i don't see any major downside to a global mutex vs the nastiness of
 deadlocks and handling them. the mutex means no difficult coding issues
 and it can handle all the different (i agree with dan and vote for one
 common scan iterator) possible scan iterators.

While I'm not against a global mutex to protect user code from undefined
behavior of traversing a PMC (Iff we will work around user problems), I
don't see the point, why we should use a scheme that isn't thread-safe
per se, adds overhead to DOD runs, and worse is really cache unfriendly.

Please read (and comment :) my summary posted separately.

 uri

leo


Re: [RfC] vtable-dump

2003-09-04 Thread Leopold Toetsch
Garrett Goebel [EMAIL PROTECTED] wrote:

 As I was googling to see how other people have approached these problems I
 ran across:

 http://blogs.gotdotnet.com/cbrumme/CategoryView.aspx/CLR

What did you find there, besides a description that a certain company
is producing b0rken software ;-)

leo


Re: Bugs in BASIC interpreter?

2003-09-04 Thread Leopold Toetsch
Amir Karger [EMAIL PROTECTED] wrote:
 Hi.

 I get the following error when I try to parrot -o basic.pbc
 merged_basic.pasm (in parrot 0.0.10 on Win32):

[ missing commas ]

 I also got an error from the puts function on line 120 of alpha.pasm.
 I don't know what puts means, but changing it to print allows that to
 compile.

Yep. puts was obsoleted.
I'll put in these fixes.

 The bad news is that when I then try to parrot it, Windows throws me an
 error window saying parrot died. I don't know why.

linux SIGSEGVs.  The problem is expr.pasm:419 containing a string
with 1024 chars in one line.  This is one of the known problems of
imcc/parrot. There is no official limit on lines, strings or identifier
length, while internally its assumed that there is one. This is of
course a bug.

We have to define some reasonable limits on identifier and line length.
Long strings need some syntax (here doc, continuation marker, C-like,
whatever) that allow for arbitrary length. And of course the string
internals needs fixing, implement snprintf or Parrot strings.

Thanks for reporting

 -Amir

leo


Re: deadlock vs global mutex for pmc scans

2003-09-04 Thread Dan Sugalski
On Wed, 3 Sep 2003, Uri Guttman wrote:

 IMO the simplest solution is a global
 mutex when doing any scans through the pmcs.

For the lock to be useful any and all mutators would have to aquire it, as 
well as anyone reading the shared variables, since we need to keep anyone 
from changing the internal structure of the PMCs, as well as the PMC 
metastructure, while we're running a scan. (And this gets more interesting 
if we have multiple interpreters each of which share some data with other 
interpreters but aren't necessaarily operating in a fully shared 
environment)

Dan



Re: Is there any way to dynamically add a method to a class?

2003-09-04 Thread Dan Sugalski
On Mon, 25 Aug 2003, Joseph Ryan wrote:

 So, I know how to use find_method to get a method from an object;
 but is there any way to dynamically add a method to a class?
 Basically, I want to do something like this:
 
 newclass P2, Foo
 new P1, P2
 
 addr I0, _Foo::somemethod
 setmethod P1, somemethod, I0
 findmethod P0, P1, somemethod
 invoke
 
 So, how do I do it? :)  

What's supposed to happen is that each class has a backing namespace, and 
methods all live in that namespace. Generally objects, no matter what 
their HLL class, will be PMCs that have subclassed (at the parrot level) 
ParrotObject.

Anyway, for a perl/python/ruby object of class Foo, to add a new method 
you'd just add a new sub/method name/PMC binding to the Foo namespace.

Dan



RE: [RfC] vtable-dump

2003-09-04 Thread Garrett Goebel
Leopold Toetsch wrote:
 Garrett Goebel [EMAIL PROTECTED] wrote:
 
  As I was googling to see how other people have approached 
  these problems I ran across:
 
  http://blogs.gotdotnet.com/cbrumme/CategoryView.aspx/CLR
 
 What did you find there, besides a description that a certain
 company is producing b0rken software ;-)

The thoughts of a CLR developer on implementation issues: mistakes made,
lessons learned, nasty things to keep in mind, etc. Discussions of lock-free
thread-safe coding issues, balancing the CLR's memory model with cpu memory
models, GC, finalization, exceptions, MP, NUMA, JIT, security policies,
managed code, typing, shared vtables, marshaling, serialization.

--
Garrett Goebel
IS Development Specialist

ScriptPro   Direct: 913.403.5261
5828 Reeds Road   Main: 913.384.1008
Mission, KS 66202  Fax: 913.384.2180
www.scriptpro.com  garrett at scriptpro dot com


Re: Is there any way to dynamically add a method to a class?

2003-09-04 Thread Leopold Toetsch
Dan Sugalski [EMAIL PROTECTED] wrote:

 Anyway, for a perl/python/ruby object of class Foo, to add a new method
 you'd just add a new sub/method name/PMC binding to the Foo namespace.

Can I translate that to: some_method in class Foo has a Sub PMC in
the global stash, i.e. is retrievable by:

  .local Sub meth
  meth = global Foo::some_method # perlish mangling

or, how else would that look like in PASM?
BTW what is the linked list in the global stash for?

   Dan

leo


Re: Is there any way to dynamically add a method to a class?

2003-09-04 Thread Dan Sugalski
On Thu, 4 Sep 2003, Leopold Toetsch wrote:

 Dan Sugalski [EMAIL PROTECTED] wrote:
 
  Anyway, for a perl/python/ruby object of class Foo, to add a new method
  you'd just add a new sub/method name/PMC binding to the Foo namespace.
 
 Can I translate that to: some_method in class Foo has a Sub PMC in
 the global stash, i.e. is retrievable by:
 
   .local Sub meth
   meth = global Foo::some_method # perlish mangling
 
 or, how else would that look like in PASM?

Pretty much like that. Pure pasm'd do a store_global into the right stash, 
but not much past that.

 BTW what is the linked list in the global stash for?

Python. It's got nested global namespaces--what's supposed to happen is 
that when you do a lookup, if it fails you walk up the chain looking for 
the symbol until you find it or run out of chain. That way you can have 
local overrides of global namespaces.

It's... an interesting way to do things, but it does it, so there's 
support in for it.

Dan



Re: Is there any way to dynamically add a method to a class?

2003-09-04 Thread Joseph Ryan
Dan Sugalski wrote:

On Mon, 25 Aug 2003, Joseph Ryan wrote:

 

So, I know how to use find_method to get a method from an object;
but is there any way to dynamically add a method to a class?
Basically, I want to do something like this:
   newclass P2, Foo
   new P1, P2
   
   addr I0, _Foo::somemethod
   setmethod P1, somemethod, I0
   findmethod P0, P1, somemethod
   invoke

So, how do I do it? :)  
   

What's supposed to happen is that each class has a backing namespace, and 
methods all live in that namespace. Generally objects, no matter what 
their HLL class, will be PMCs that have subclassed (at the parrot level) 
ParrotObject.

Anyway, for a perl/python/ruby object of class Foo, to add a new method 
you'd just add a new sub/method name/PMC binding to the Foo namespace.

I'm a bit lost here; what does that mean?  How do I do it?  Does

   .sub _Foo::somemethod
   print Foo-ey goodness.
   .end
add somemethod to the Foo namespace?  Or would it have to be:

   .sub Foo::somemethod
   print Foo-ey goodness.
   .end
Thanks for the reply,

- Joe



Re: Is there any way to dynamically add a method to a class?

2003-09-04 Thread Luke Palmer
Joseph Ryan writes:
 Dan Sugalski wrote:
 
 On Mon, 25 Aug 2003, Joseph Ryan wrote:
 
  
 
 So, I know how to use find_method to get a method from an object;
 but is there any way to dynamically add a method to a class?
 Basically, I want to do something like this:
 
newclass P2, Foo
new P1, P2

addr I0, _Foo::somemethod
setmethod P1, somemethod, I0
findmethod P0, P1, somemethod
invoke
 
 So, how do I do it? :)  

 
 
 What's supposed to happen is that each class has a backing namespace, and 
 methods all live in that namespace. Generally objects, no matter what 
 their HLL class, will be PMCs that have subclassed (at the parrot level) 
 ParrotObject.
 
 Anyway, for a perl/python/ruby object of class Foo, to add a new method 
 you'd just add a new sub/method name/PMC binding to the Foo namespace.
 
 
 I'm a bit lost here; what does that mean?  How do I do it?  Does
 
.sub _Foo::somemethod
print Foo-ey goodness.
.end
 
 add somemethod to the Foo namespace?  

No... well, imcc will probably support that eventually.  It would be
(note the conditional; i.e. you can't do this object stuff yet):

.sub _main
newsub $P0, .Method, __foo_somemethod
global Foo::somemethod = $P0
...
.end

.sub __foo_somemethod
print Foo-ey goodness.
.end

If Cglobal is smart.  If not:

.sub_main
newsub $P0, .Method, __foo_somemethod
$P1 = global Foo::
$P1[somemethod] = $P0
...
.end

Note that __foo_somemethod is a completely arbitrary name.  It could
have been called _boozebar for all these ops care.

Luke

 Or would it have to be:
 
.sub Foo::somemethod
print Foo-ey goodness.
.end
 
 Thanks for the reply,
 
 - Joe
 


Linking pdump and dissassemble

2003-09-04 Thread Jonathan Worthington
Hi,

I want to include pdump and disassemble in POW, and they seem not to be
compiled by a normal Configure/make.  So, I went to compile them, and while
I can get pdump.obj and disassemble.obj, I'm having trouble linking them.

Please could somebody put me out of my misery and tell me what I need to
link them against?  :-)  I've played around with it for quite a while by
trying to figure out what I should be using, and looked through the docs
(didn't find anything to help).

Many thanks,

Jonathan



Re: [PATCH] File Spec

2003-09-04 Thread Chris Allan
Leopold Toetsch wrote:
[EMAIL PROTECTED] [EMAIL PROTECTED] wrote:

[ snipped a lot of explanations ]

Please keep in mind, that the intended usage inside Parrot just should
be to locate some standard include or extension files for Parrot
internals. More abstraction and complexity can always be added above
that or implemented by HLLs.
leo


Is there a plan for operating systems without Unix-like hierarchical 
directory structures (eg IBM I-Series, I think z/OS, I'd assume many 
other enterprise OSs)?  There are further difficulties in that some of 
these have multiple filesystems which look totally different from each 
other etc.

In general how much effort is it likely to be to get Parrot working on 
systems which don't look at all like Unix?  I've tried to get Perl 5 to 
build on os/400 before and it wasn't a pleasant experience.  Any chance 
it'll be easier to port Parrot?

Chris



Abandoning Subversion

2003-09-04 Thread Arthur Bergman
Hi,

After a weeks vacation, returning back to work on Ponie I have frequent 
motivational problems because subversion is treating me so badly. (ie, 
I don't want to change something because it is such a pain then to 
commit it, I don't want to upgrade to latest parrot because it will 
take a whole work day, and so on). That together with questiones raised 
by several other developers I think it is time to abandon subversion 
and go to CVS.

Since it then can live in cvs.perl.org/ponie I will not have to import 
parrot, just use the parrot/ directory during development. perl5 
sources will have to be imported but that is not such a big deal.

Robert, Ask, I am sorry it hasn't worked out with subversion, is it a 
lot of work involved in setting me up for cvs?

Arthur



Re: Abandoning Subversion

2003-09-04 Thread Robert Spier
 take a whole work day, and so on). That together with questiones raised 
 by several other developers I think it is time to abandon subversion 
 and go to CVS.

We're not going to twist your arms.. although we are pretty happy with
SVN for our use for web stuff.  (And in some ways, it's easier for us
than CVS.. definitely more flexible.)

 Since it then can live in cvs.perl.org/ponie I will not have to import 
 parrot, just use the parrot/ directory during development. perl5 
 sources will have to be imported but that is not such a big deal.

Something like that.

 Robert, Ask, I am sorry it hasn't worked out with subversion, is it a 
 lot of work involved in setting me up for cvs?

Not a huge amount, although you're going to lose any old revisions you
had.  I'll get to this in the next day or two.

-R


Re: [RfC] vtable-dump

2003-09-04 Thread Luke Palmer
Gordon Henriksen writes:
 What you're suggesting also has significant side-effects: It halts
 hypothetical multithreaded programs, suspends DoD, prevents the
 traversal mechanism from calling back into parrot code, requires
 fine-grained locks which are extremely expensive and have been summarily
 abandoned to great acclaim in all prior works... and for that, still
 doesn't provide a useful form of thread safety in the general case
 anyhow.

Is there a problem with providing a mechanism which would suspend all
threads except for the "current" one, as to ensure that the serialize
operates, er, serially.  Could it be implemented with a top-priority
event post that acquires a global lock?

Forgive my ignorance.  I'm pretty na誰ve when it comes to threads.

Luke

[off-list] Re: Linking pdump and dissassemble

2003-09-04 Thread Luke Palmer
Hi Jonathan,

You wrote:
 Hi,
 
 I want to include pdump and disassemble in POW, and they seem not to be
 compiled by a normal Configure/make.  So, I went to compile them, and while
 I can get pdump.obj and disassemble.obj, I'm having trouble linking them.
 
 Please could somebody put me out of my misery and tell me what I need to
 link them against?  :-)  I've played around with it for quite a while by
 trying to figure out what I should be using, and looked through the docs
 (didn't find anything to help).

POW?

My Makefile has those two targets... but just in case you can't do that
(maybe something to do with that POW thing), here are the command lines
+ outputs:

% make pdump
gcc -o pdump pdump.o packdump.o -L/usr/local/lib  -g  blib/lib/libparrot.a -lpthread 
-lnsl -ldl -lm -lcrypt -lutil

% make disassemble
disassemble.c
gcc -o disassemble disassemble.o -L/usr/local/lib  -g  blib/lib/libparrot.a -lpthread 
-lnsl -ldl -lm -lcrypt -lutil

Hope this helped.

Luke

 Many thanks,
 
 Jonathan
 


Re: [off-list] Re: Linking pdump and dissassemble

2003-09-04 Thread Luke Palmer

Oops.  Well, I said Ioff-list, didn't I?   Doesn't mutt know what I
mean!?  %-)

Luke

Luke Palmer writes:
 Hi Jonathan,
 
 You wrote:
  Hi,
  
  I want to include pdump and disassemble in POW, and they seem not to be
  compiled by a normal Configure/make.  So, I went to compile them, and while
  I can get pdump.obj and disassemble.obj, I'm having trouble linking them.
  
  Please could somebody put me out of my misery and tell me what I need to
  link them against?  :-)  I've played around with it for quite a while by
  trying to figure out what I should be using, and looked through the docs
  (didn't find anything to help).
 
 POW?
 
 My Makefile has those two targets... but just in case you can't do that
 (maybe something to do with that POW thing), here are the command lines
 + outputs:
 
 % make pdump
 gcc -o pdump pdump.o packdump.o -L/usr/local/lib  -g  blib/lib/libparrot.a -lpthread 
 -lnsl -ldl -lm -lcrypt -lutil
 
 % make disassemble
 disassemble.c
 gcc -o disassemble disassemble.o -L/usr/local/lib  -g  blib/lib/libparrot.a 
 -lpthread -lnsl -ldl -lm -lcrypt -lutil
 
 Hope this helped.
 
 Luke
 
  Many thanks,
  
  Jonathan
  


RE: [RfC] vtable-dump

2003-09-04 Thread Brent Dax
Luke Palmer:
# Is there a problem with providing a mechanism which would suspend all
# threads except for the current one, as to ensure that the serialize
# operates, er, serially.  Could it be implemented with a top-priority
# event post that acquires a global lock?

What about the thread that draws the GUI progress bar so people don't
think the computer froze up while serializing 42gb of data?  Or worse,
the thread that handles the cancel button?

--Brent Dax [EMAIL PROTECTED]
Perl and Parrot hacker
 
Yeah, and my underwear is flame-retardant--that doesn't mean I'm gonna
set myself on fire to prove it.