Re: [perl #36119] [PATCH] Reapply execute permissions on dynclasses for HP-UX

2005-06-04 Thread Leopold Toetsch

Nick Glencross (via RT) wrote:


+if ($^O ne 'MSWin32') {


I'd much more prefer one of:
a) if $^O eq 'hpux'
b) fix the copy to preserve perms

Anyway, as hpux is still broken in several other places, I'll drop a 
note in PLATFORMS and not apply the patch now.


leo



release 0.2.1 starting - please no more comitts at all

2005-06-04 Thread Leopold Toetsch
I'll start putting together the monthly release in a minute. Please 
refrain from svn ci in the next hours until further notice.


Thanks,
leo



variable register frames (was: Register Allocation and Continuations problem definition)

2005-06-04 Thread Leopold Toetsch

Matt Fowles wrote:

[ thanks for your summary ]

Another summary can be found here: http://xrl.us/gban


... Discussions about specific solutions should and
religion should have a seperate thread.


I'll put together some more WRT:


4) variable sized register frames


During the discussion of continuations I've posted this idea here:
http://xrl.us/gbai


+ never have unused registers
+ no need for a register allocator


This is simplified. We'd need a register allocator for temporary 
variables. But it's true that all the register allocation troubles we 
now have with long-ranged variables would be gone as well as the speed 
problems with Evil Subs and the need for spilling.



+ could correspond directly to scratchpad
- more complicated


Slightly but not much.


- no register reuse


No register reuse of registers persistent around a call, which is 
exactly the solution for the continuation problem. It's the same thing 
with setjmp(3)/longjmp(3). In the presence of continuations (longjmp()s) 
you can't reuse a register. Temporary registerers are of course reused 
as now.



- large architectural change


We now have Parrot 0.2.1 - what's the problem? Abandon a solution 
because we have to change internals is not the best idea.



- more custom allocation (can't pool register sets)


I've already proposed a scheme to allocate the register frames from 64KB 
chunks.


But there are still more arguments, why this solution is by far the best 
one. Please read the thread of my analysis of the fib benchmark: 
http://xrl.us/gbaj


This clearly shows that we can't keep the fixed-sized register frame in 
the long run. All the object getter and setter methods would suffer as 
badly as the plain function call from fib(). You might also try to run 
Ackermann(3, 9) if you've plenty of time ;-)


| Python is running the code on the stack. It's
| touching only SP(0) and SP(1) mostly.

| Register usage analysis of fib shows that it could run on Parrot with
| just *one* persistent register per kind.

leo



Re: Missing MMD default functions?

2005-06-04 Thread Chip Salzenberg
On Fri, Jun 03, 2005 at 02:55:52PM -0400, Dan Sugalski wrote:
 Dan was expecting sane defaults, that is when I do addition with two 
 PMCs that haven't otherwise said they behave specially that the 
 floating point values of the two PMCs are retrieved and added 
 together.

Is deriving from Float a hardship?
(This is not a rhetorical question.)
-- 
Chip Salzenberg [EMAIL PROTECTED]


Parrot 0.2.1 APW Released!

2005-06-04 Thread Leopold Toetsch

Parrot 0.2.1 APW Released!

On behalf of the Parrot team I'm proud to announce another monthly
release of Parrot and I'd like to thank all involved people as well as
our sponsors for supporting us.

The release name stands for Austrian Perl Workshop, which will take
place on 9th and 10th of June in Vienna. It will have a french
connection that is a live video stream to the French Perl Workshop
happening at the same time.

What is Parrot?

Parrot is a virtual machine aimed at running Perl6 and other dynamic
languages.

Parrot 0.2.1 changes and news

- better HLL support (short names for object attributes, and
  .HLL and n_operators pragmas)
- string encoding and charset can now be set independently
- experimental mmap IO layer for slurping files
- distinct debug and trace flag settings
- glob support in PGE
- new character classification opcodes and interfaces

After some pause you can grab it from
http://www.cpan.org/authors/id/L/LT/LTOETSCH/parrot-0.2.1.tar.gz.

As parrot is still in steady development we recommend that you
just get the latest and best from SVN by following the directions at
http://www.parrotcode.org/source.html

Turn your web browser towards http://www.parrotcode.org/ for more
information about Parrot, get involved, and:

Have fun!
leo



release 0.2.1 done

2005-06-04 Thread Leopold Toetsch

I hope everything works as expected.

Have fun and thanks for all your contributions,
leo



Re: Software Transactional Memory interaction with Garbage Collection

2005-06-04 Thread Leopold Toetsch

Sam Vilain wrote:

Hi all,

While I must start this post out by saying that I've never implemented 
either STM or a garbage collector, during a discussion on #parrot (is 
that channel logged?), a similarity between the two processes occurred 
to me.


Not really. STM is a scheme to handle access to shared objects from 
multiple threads. GC is quite different. The only common thing seems to 
be that both have to consider safe points and synchronization for MT.


leo



Re: Missing MMD default functions?

2005-06-04 Thread Dan Sugalski

At 8:14 PM -0400 6/3/05, Chip Salzenberg wrote:

On Fri, Jun 03, 2005 at 02:55:52PM -0400, Dan Sugalski wrote:

 Dan was expecting sane defaults, that is when I do addition with two
 PMCs that haven't otherwise said they behave specially that the
 floating point values of the two PMCs are retrieved and added
 together.


Is deriving from Float a hardship?
(This is not a rhetorical question.)


Mildly, yes. But... I'm not going to argue any more. It isn't worth 
it. Do whatever you think is best, and if there's any followup you 
think I should care about it'd be best to cc me, since I'm not on the 
list any more.

--
Dan

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


Re: Parrot 0.2.1 APW Released!

2005-06-04 Thread Thomas Klausner
Hi!

On Sat, Jun 04, 2005 at 12:36:57PM +0200, Leopold Toetsch wrote:

 The release name stands for Austrian Perl Workshop, which will take
 place on 9th and 10th of June in Vienna. It will have a french
 connection that is a live video stream to the French Perl Workshop
 happening at the same time.

Which prompts me for an last-minute plug:

You're still welcome to join us in Vienna!

We've got two days with a lot of interesting talks and Parrot/Pugs/Perl6
hacking (with, among others, Autrijus Tang and Chip Salzenberg), followed by
some more days of Parrot/Pugs/Perl6 hacking at Leo's place.

More info, schedule, etc here:

  http://conferences.yapceurope.org/apw2005/

Hope to see you in Vienna, 
Thomas Klausner

-- 
#!/usr/bin/perl   http://domm.zsi.at
for(ref bless{},just'another'perl'hacker){s-:+-$-gprint$_.$/}


Building Parrot with MinGW, ActivePerl command.com

2005-06-04 Thread Clement Cherlin

I actually have Linux installed on this machine, but for reasons which
I'm not going to get into here I use Win98 for day-to-day computing. I
therefore took it as a challenge to get Parrot to build with crufty ol'
command.com.

I used MinGW 3.1.0-1 and ActivePerl 5.8.6.811 to build Parrot.

I configured Parrot with

   perl Configure.pl --cc=gcc --without-icu

I ran into a number of issues while trying to get Parrot to compile.

Problem 1 - If you try to redirect output to paths containing forward
slashes, command.com will complain (and not create the file).

Solution 1 - Configure the build system to use backslashes in Makefiles.
This functionality already exists, but was not fully enabled. I also
changed a few Perl scripts to use the 'slash' configuration parameter
instead of hard-coded forward slashes, and to perform variable
substitution before slash substitution.


Problem 2 - Redirecting output of a batch file does not redirect output
of the commands executed by it. The perldoc command supplied with
ActivePerl is a batch file.

Solution 2 - Use a command line switch to send perldoc's output to a
file instead of redirection.


Problem 3 - The value of $(MAKE) supplied by mingw32-make contains
forward slashes. This doesn't sit well with command.com.

Solution 3 - Override $(MAKE).


Problem 4 - Single backslashes in C strings are a no-no. This manifests
itself when filenames are inserted into the #line directives in
generated C code.
Solution 4 - Substitute double backslashes for single backslashes in
#line directives.

I include a patch I made for the above problems. Some of the changes are
kind of kludgey, so I would appreciate comments and suggestions on how to
improve them.


I still haven't gotten compilation to finish, but it's a lot further
along than when I started. Currently, it fails with a zillion undefined
reference errors on the command

g++ -s  -g  -shared   C:/Users/Clement/src/parrot/parrot/src/extend.o
-o python_group.dll lib-python_group.o pybuiltin.o pyclass.o
pyobject.o pyboolean.o pycomplex.o pydict.o pyexception.o
pyfloat.o pyfunc.o pyboundmeth.o pyboundcall.o pynci.o
pystaticmeth.o pygen.o pyint.o pylist.o pylong.o pymodule.o
pynone.o pytype.o pyslice.o pystring.o pytuple.o
pyproxytype.o pyproxyclass.o pyiter.o

C:/Users/Clement/src/parrot/parrot/src/extend.o(.text+0x306): In
function `Parrot_PMC_get_cstring_intkey':
C:/Users/Clement/src/parrot/parrot/src/extend.c:256: undefined reference
to `string_to_cstring'
C:/Users/Clement/src/parrot/parrot/src/extend.o(.text+0x363): In
function `Parrot_PMC_get_cstring':
C:/Users/Clement/src/parrot/parrot/src/extend.c:276: undefined reference
to `string_to_cstring'
C:/Users/Clement/src/parrot/parrot/src/extend.o(.text+0x3c6): In
function `Parrot_PMC_get_cstringn':
C:/Users/Clement/src/parrot/parrot/src/extend.c:299: undefined reference
to `string_to_cstring'

...

Index: build_tools/ops2c.pl
===
--- build_tools/ops2c.pl(revision 8268)
+++ build_tools/ops2c.pl(working copy)
@@ -411,7 +411,11 @@
 my $line = 0; while (SOURCE) { $line++; } $line+=2;
 close(SOURCE);
 open(SOURCE, $source) || die Error appending to $source: $!\n;
-print SOURCE qq{#line $line $source\n} unless $nolines_flag;
+unless ($nolines_flag) {
+my $source_escaped = $source;
+$source_escaped =~ s|(\\)|$1$1|g; # escape backslashes
+print SOURCE qq{#line $line $source_escaped\n};
+}
 
 
 #
Index: lib/Parrot/Pmc2c.pm
===
--- lib/Parrot/Pmc2c.pm (revision 8268)
+++ lib/Parrot/Pmc2c.pm (working copy)
@@ -260,7 +260,11 @@
 my ($self, $line, $file) = @_;
 
 return '' if $self-{opt}{nolines};
-return qq{#line $line $file\n} if defined $file;
+if (defined $file) {
+my $file_escaped = $file;
+$file_escaped =~ s|(\\)|$1$1|g; # escape backslashes
+return qq{#line $line $file_escaped\n};
+}
 return qq{#line $line\n};
 }
 
Index: lib/Parrot/Configure/Step.pm
===
--- lib/Parrot/Configure/Step.pm(revision 8268)
+++ lib/Parrot/Configure/Step.pm(working copy)
@@ -223,26 +223,27 @@
 $_ = $2;
 }
 }
+s{
+  \$\{(\w+)\}
+}{
+  if(defined(my $val=Configure::Data-get($1))) {
+#use Data::Dumper;warn Dumper(val for $1 is ,$val);
+$val;
+  }
+  else {
+warn value for '$1' in $source is undef;
+'';
+  }
+}egx;
 if ( $options{replace_slashes} ) {
   s{(/+)}{
-   my $len = length $1;
-   my $slash = Configure::Data-get('slash');
-   '/' x ($len/2) . ($len%2 ? $slash : ''); }eg;
-  }
-  s{
-   \$\{(\w+)\}
-  }{
-   if(defined(my $val=Configure::Data-get($1))) {
-  #use Data::Dumper;warn Dumper(val for $1 is ,$val);
- $val;
-   }
-   else {
- warn value for '$1' in 

Re: Parrot 0.2.1 APW Released!

2005-06-04 Thread H.Merijn Brand
On Sat, 04 Jun 2005 12:36:57 +0200, Leopold Toetsch [EMAIL PROTECTED] wrote:

 Parrot 0.2.1 APW Released!
 
 On behalf of the Parrot team I'm proud to announce another monthly
 release of Parrot and I'd like to thank all involved people as well as
 our sponsors for supporting us.
 
 The release name stands for Austrian Perl Workshop, which will take
 place on 9th and 10th of June in Vienna. It will have a french
 connection that is a live video stream to the French Perl Workshop
 happening at the same time.

Thanks, applied.


 What is Parrot?
 
 Parrot is a virtual machine aimed at running Perl6 and other dynamic
 languages.
 
 Parrot 0.2.1 changes and news
 
 - better HLL support (short names for object attributes, and
.HLL and n_operators pragmas)
 - string encoding and charset can now be set independently
 - experimental mmap IO layer for slurping files
 - distinct debug and trace flag settings
 - glob support in PGE
 - new character classification opcodes and interfaces
 
 After some pause you can grab it from
 http://www.cpan.org/authors/id/L/LT/LTOETSCH/parrot-0.2.1.tar.gz.
 
 As parrot is still in steady development we recommend that you
 just get the latest and best from SVN by following the directions at
 http://www.parrotcode.org/source.html
 
 Turn your web browser towards http://www.parrotcode.org/ for more
 information about Parrot, get involved, and:
 
 Have fun!
 leo
 
 


-- 
H.Merijn BrandAmsterdam Perl Mongers (http://amsterdam.pm.org/)
using Perl 5.6.2, 5.8.0, 5.8.5,  5.9.2  on HP-UX 10.20, 11.00  11.11,
 AIX 4.3  5.2, SuSE 9.2  9.3, and Cygwin. http://www.cmve.net/~merijn
Smoking perl: http://www.test-smoke.org,perl QA: http://qa.perl.org
 reports  to: [EMAIL PROTECTED],perl-qa@perl.org