Re: inline mania

2000-08-02 Thread John Tobey

Sam Tregar [EMAIL PROTECTED] wrote:
 On Tue, 1 Aug 2000, John Tobey wrote:
 
  The people here are rightly skeptical about the effectiveness of using
  the 5.6 code base as a starting point for v6, but I have a pretty
  clear vision of how to do it, and I am committed to giving it a try,
  even if no one else will.  In fact, I'll give you all a tentative
  schedule:
 
 Wait, you're going to develop Perl 6 ALONE?  Wasn't this going to be "the
 community's rewrite of Perl"?  Shouldn't you be trying to rally support
 for your vision before issuing schedules?

Not really.  I'm going to START developing MY IDEA of how Perl 6 might
work.  Very likely, I'll stop or merge with someone else's ideas along
the way.

The schedule is just to get something down, to start fleshing out my
idea and maybe provoke other people into starting on their own
visions, as Simon Cozens has (though he seems to deny it) done with
GLib and Sapphire.

 I'm not trying to knock you - I'm not at all against hearing you plans and
 possibly helping out.  This just seems like a pretty strange way to
 approach a community effort.
 
  15 August 2000   - detailed draft spec to perl6-internals.
  31 August 2000   - revised spec after discussion.
 
 What?  You're expecting all the various perl6-* lists to come up with
 final RFCs be the end of the month?  And you're expecting to have Larry's
 final plans by then?

Well, I'll read RFC's as they appear and adjust to them as they are
approved, but the stuff I want to do now does not need to wait.

 This sounds hopeful, but mostly unfounded.  Without starting with
 threading and Unicode as primary features you're going to be fighting an
 uphill battle ala Perl 5.

This I hope to address in my first architecture document.

Thanks for the comments.
-John



Re: RFC: Implementation of Threads in Perl (v1)

2000-08-02 Thread Nathan Torkington

Bryan C. Warnock writes:
 The librarian bounced, so sending this internals way.

Sorry about that bounce.  It's set up now.  I'm still setting
up the repository (should have done that *before* publishing the RFC
format, I guess :-).  Optimistic ETA: tomorrow.  If it's not up by
then, I'll fall back to a simple web site.

Nat



Re: inline mania

2000-08-02 Thread Tim Bunce

On Tue, Aug 01, 2000 at 06:10:53PM -0400, John Tobey wrote:
 Nick Ing-Simmons [EMAIL PROTECTED] wrote:
  By all means have a go at Topaz-II 
  
  But it won't be 'Perl 6' unless it implements what perl-language 
  decides that _is_.
 
 Agreed.  It won't even remotely resemble 'Perl 6' (as opposed to Perl
 5) until it's in a position to start changing the lexer, at least
 several months from now.

So please, follow Chips wise lead, don't call your work Perl 6.

Tim.



Re: inline mania

2000-08-02 Thread John Tobey

Tim Bunce [EMAIL PROTECTED] wrote:
 So please, follow Chips wise lead, don't call your work Perl 6.

It's called Pickle.

"Andy Wardley" [EMAIL PROTECTED] wrote:
 Indeed.  XS is hard, fast, dirty and ugly (in a sickly, beautiful
 kinda way), but there's nothing to stop you from wrapping it all up
 into a less efficent, but prettier API (with the possible exception
 of reference counting).

There is no reason for it to be any less efficient (other than
compilers' botching of `inline').  I favor leaving efficiency as a
user option.  In return for efficiency, we offer binary independence
of interpreters.

Pickle provides (or will provide) three modes of compiling:

Default - perl.h is not included - total bincompat
Refcount Cheat - the only bit structure knowledge is sv_refcount
Gung Ho - all Default API functions are inline to the level of
Perl 5's API

You can select any of them with a single conditional.  I believe Perl
6 (and v5.8) should support three interfaces along these lines,
whether or not any Pickle code is involved.

-John



Feature request: Relocatable perl

2000-08-02 Thread Alan Burlison

I don't think it is worth generating a RFE for this, but I'd like to see
the ability to relocate or install perl in some place other than the
initial install location without everything breaking.  This will require
cleverness in the manipulation of the search paths for both perl modules
and shared objects/DLLs.

Alan Burlison



Re: RFC: Implementation of Threads in Perl (v1)

2000-08-02 Thread Dan Sugalski

At 10:59 AM 8/2/00 -0400, Chaim Frenkel wrote:
I wont comment on the rest.

But Larry has already assigned/blessed 'our' for this usage. (vs. my for
pure thread local lexical.)

I don't think Larry's weighed in on this one way or another lately.

My bet is thread-shared data will get a shared attribute:

my $foo : shared;

possibly with some sort of dynamic sharing allowed. (i.e. you stuff a ref 
to an unshared scalar into a shared array so the unshared scalar becomes 
shared)

  "BCW" == Bryan C Warnock [EMAIL PROTECTED] writes:

BCW =item *

BCW The Thread module should add a Cglobal keyword or function that 
explicitly
BCW access a variable in the program-global stash.

BCW Cglobal $main::foo = $foo;  # Let another thread know what my 
$foo is.
BCW Cglobal $main::foo = \$foo; # Share my local foo.  Dangerous!
BCW C$foo = global $main::foo;  # Localize this instance of $main::foo.

--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED]   +1-718-236-0183


Dan

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




Re: Feature request: Relocatable perl

2000-08-02 Thread Tim Bunce

On Wed, Aug 02, 2000 at 02:58:37PM +0100, Graham Barr wrote:
 On Wed, Aug 02, 2000 at 02:56:54PM +0100, Alan Burlison wrote:
  I don't think it is worth generating a RFE for this, but I'd like to see
  the ability to relocate or install perl in some place other than the
  initial install location without everything breaking.  This will require
  cleverness in the manipulation of the search paths for both perl modules
  and shared objects/DLLs.
 
 Well I think it is worth an RFC (not that I have time to write one just now)

I agree (and likewise).

Volunteers?

Tim.



Re: inline mania

2000-08-02 Thread Graham Barr

On Wed, Aug 02, 2000 at 05:39:19PM +0100, Tim Bunce wrote:
 On Wed, Aug 02, 2000 at 12:05:20PM -0400, Dan Sugalski wrote:
  
  Reference counting is going to be a fun one, that's for sure.
  
  I'd like the interface to be something like:
  
 stat = perl_get_value(sv *, int what, destination)
 
 And what type is perl_get_value declared as returning?

Well if what is stating I want a string, it could be a length.
Or it could just be a flag if the value was undef, or ...

 I can't imagine actually using it. Let's forget that one till we
 know more about how Svs will be implemented.

I agree.

Graham.




Re: Feature request: Relocatable perl

2000-08-02 Thread Andy Dougherty

On Wed, 2 Aug 2000, Ken Fox wrote:

 Tim Bunce wrote:
   Alan Burlison wrote:
the ability to relocate or install perl in some place other than the
initial install location without everything breaking.
 
  Volunteers?
 
 XEmacs does this very well. Can an RFC just say "do what xemacs does" or
 does it have to be standalone?

You've always been able to do this just fine with perl5 too.  I've yet to
see an example where editing the binaries didn't work.

And I'd be very surprised to see anything more portable. After all, if
you're using a shared libperl.so (or its perl6 equivalent), the system's
loader ld will have encoded the original location of libperl.so somehow
into the perl binary and you've got to change it on installation.
It's hard for me to see how anything about the perl6 internals could
possibly alleviate the need to call ld(1) somewhere in the build process,
so I think this matter is off-topic for -internals.

-- 
Andy Dougherty  [EMAIL PROTECTED]
Dept. of Physics
Lafayette College, Easton PA 18042




Re: Summary...tell me where I'm worng...

2000-08-02 Thread Nathan Torkington

Graham Barr writes:
 Why would the fuzzy regex not be done this way ?

I have some small objections:

I think one regexp syntax with potentially wildly variable
interpretations is a dangerous thing.  If we want fuzzy
regexp matching, either put it into the core's re engine
or make it a module that doesn't use =~ and qr//.

I also think that lexically scoped RE engines are useless.
You want the engine scoped to the pattern, so you can mix
and match fuzzy with traditional (e.g., search engine has
box for pattern and buttons for regular RE or fuzzy, and
all you need to do is say:)

  $pattern = param("pattern");
  if (param("fuzzy")) {
$re = qr/$pattern/f;
  } else {
$re = qr/$pattern/;
  }
  # ...
  while (FILE) {
print if /$re/;
  }

My big objection to a dynamically loadable core is my
experience (admittedly limited) with GNOME and Mozilla.
They're big Big BIG ... fat Fat FAT ... pigs Pigs PIGS.
I see the plethora of componentized libraries as part of
the problem.  I fear Perl becoming a big fat pig too.

Nat



Re: Stuff in core (was Re: date interface, on language (wasRe: perl6 requirements, on bootstrap))

2000-08-02 Thread Ken Fox

Dan Sugalski wrote:
 I wanted to do this not so much to reduce the size of the core (They're not
 *that* much code) as to reduce the number of opcodes being used. I really,
 *really* want to trim down the opcode list.

If we reduce the number of opcodes, we need to consider the performance
impact -- perl ops run a *lot* of machine instructions and reducing the
number of them might mean more ops have to run in order to accomplish the
same thing as before. There is a nice paper "The Structure and Performance
of Interpreters" by Romer, Lee, et al. that compares Java, Perl and Tcl.
They ran them on a hardware simulator so they could measure things like
pipeline stalls, cache misses and a whole bunch of interesting things. One
of the reasons Perl performed well is that it spent a lot of time in what
they called native code, i.e. not decoding and dispatching ops.

I wouldn't mind reducing the number of ops if (whatever replaces XS) can
be called as fast as an op. Right now the performance difference between
an op and an XSUB is horrible.

- Ken



RE: inline mania

2000-08-02 Thread Nick Ing-Simmons

Brent Fulgham [EMAIL PROTECTED] writes:
  Having thought about it a bunch more (because of this) I'm 
  proposing we let the compiler decide. The caller doesn't 
  know enough to make that decision. 
 
 Read carefully.  I said we *let* the caller decide, not *make* the
 caller decide.  What, specifically, disturbs you about my proposal?
 

The 'inline' keyword is just a hint to the compiler.  If optimization
is turned off, no inlining is done.  If optimization is on, the
compiler may or may not decide to inline.  Performance on different
compilers will vary.  

To repeat:  Even if I say "inline" on everything, the compiler is
free to disregard that if its optimization routines decide not to.
(Also, if I fail to say "inline" on something, the compiler may
decide to inline if optimization is active).

So aren't we all saying the same thing?

I don't think so - it is a question which way we code the source:

A. Use 'inline' every where and trust compiler not to do what we told it 
   if it knows better.
B. No inline hints in the source and trust the compiler to be able to 
   do the right thing when prodded with -O9 or whatever.
C. Make "informed" guesses at to which calls should be inlined.

My view is that (B) is the way to go, aiming for (C) eventually, because 
(A) gives worst-case cache purging.



-Brent
-- 
Nick Ing-Simmons




Re: Feature request: Relocatable perl

2000-08-02 Thread John Tobey

[EMAIL PROTECTED] wrote:
 Graham Barr wrote:
 
  Well I think it is worth an RFC (not that I have time to write one just now)
  If only to suggest some sample implementations. Do other languages do it ?
  If so how ?
 
 Ok, Ok, I'll do a RFC then...   :-)
 
 Actually the only thing affected by LD_LIBRARY_PATH is libperl.so, as
 modules are loaded in by dlopen() or equivalent, so the full path in
 that case is specified in the call to dlopen().
 
 Solaris 7 onwards has a nice linker feature called $ORIGIN.  This allows
 the location of run-time linker dependencies to be specified relative to
 the location of the executable.

Both Windows and Linux can swing this, too.  I believe linux (GNU
Libc, to be precise) uses $ORIGIN in a Solaris-compatible way.

I don't mean to imply, however, the binediting perl has no place.

-John

  This is probably best illustrated with
 a simple example:
 
 $ pwd
 /tmp/app
 $ cat bin/main.c
 extern void hi();
 int main() { hi(); }
 $ cat lib/hi.c
 #include stdio.h
 void hi() { printf("hi!\n"); }
 $ cc -G -K pic -o lib/libhi.so lib/hi.c   
 $ cc -Llib -R '$ORIGIN/../lib' bin/main.c -o bin/main -lhi
 $ ldd bin/main
 libhi.so =  /tmp/app/lib/libhi.so
 libc.so.1 = /usr/lib/libc.so.1
 libdl.so.1 =/usr/lib/libdl.so.1
 /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1
 $ bin/main
 hi!
 $ cd ..
 $ mv app somewhere_else
 $ ldd somewhere_else/bin/main
 libhi.so =  /tmp/somewhere_else/lib/libhi.so
 libc.so.1 = /usr/lib/libc.so.1
 libdl.so.1 =/usr/lib/libdl.so.1
 /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1
 $ somewhere_else/bin/main
 hi!
 
 Another option for ELF based platforms that lack $ORIGIN (i.e.
 everything other than Solaris AFAIK) would be to use the (standard?)
 libelf library to write a little application that tweaked the RPATH in
 the executable appropriately when perl is installed somewhere else other
 than the default location.  I think this would be far preferable to the
 currently used horrible hacks involving either LD_LIBRARY_PATH or
 greping and patching the executable.
 
 -- 
 Alan Burlison
 
 



Re: Feature request: Relocatable perl

2000-08-02 Thread Alan Burlison

Graham Barr wrote:

 It is not just libraries, but also the perl @INC that needs to
 be dynamic

Yes, but that seems a bit more tractable - surely we could fiddle with
@INC based on the location of the perl interpreter?

-- 
Alan Burlison
Solaris Kernel Development, Sun Microsystems



Re: Feature request: Relocatable perl

2000-08-02 Thread Tom Christiansen

 Insofar as you can pretend to make a good guess at that--perhaps.

On Linux: /proc/self/exe

What good does that do you?  You can't go ../foo with that.  It doesn't
tell you the real name, just the dev,ino.  And it's a nonportable answer
that cannot be reproduced everywhere that Perl runs.

--tom



Where to get RFCs?

2000-08-02 Thread Bradley M. Kuhn

It appears Dan posted some internals RFCs, and due to some trouble with my
subscription request, I didn't see them.  I realize that I can get them out
of the archives if I dig, but is there a WWW site yet where all RFCs are
being kept?

I looked around http://www.perl.org/perl6, but didn't see them.

-- 
Bradley M. Kuhn  -  http://www.ebb.org/bkuhn

 PGP signature


Re: C# (.NET) has no interpreters

2000-08-02 Thread Ken Fox

Joshua N Pritikin wrote:
 Of course perl6 can retain both execution models (op-tree  native
 code), but perhaps the emphasis should be on optimized native code.

The Kaffe java VM uses a native code JIT and they've had trouble
getting decent performance. From their own web page (www.kaffe.org):

| Kaffe's current performance, despite the fact that Kaffe features a JIT
| compiler, is rather weak.  While we do not have hard data, we would
| estimate that Kaffe performs about as good or only slightly better than
| the JDK 1.1.7 interpreter on a platform such as Linux.

| Kaffe's Just-in-time compiler does not perform any
| optimizations.  This leads to a large number of emitted machine
| code instructions per bytecode instruction, many of them
| unnecessary and expensive loads and stores.

 perl5 is interpreter-centric with native code generation
 bolted on well into the development lifecycle.

I'd prefer us to tackle native code generation using C as the
intermediate language instead of a JIT. It's more portable, simpler
and takes advantage of all the C compiler optimizations. I'm not
looking for Perl 6 to be a Java/Applet replacement. Is that really
where we want to go?

 On the other hand, compile-time variable typing seems
 eminently relevant.

There are several threads trying to tackle this problem right now.
I'm starting to think that mailing lists are poor substitutes
for face-to-face brain storming.

- Ken



Re: C# (.NET) has no interpreters

2000-08-02 Thread Dan Sugalski

On Wed, 2 Aug 2000, Kevin Scott wrote:

 While C might be fine and dandy for getting o.k. native code w/o too
 much implementation effort, I think that it might be worth the effort
 to implement a JIT compiler for the perl interpreter's intermediate
 language.

Given the number of OSes and chip architecture perl runs on, this is a
daunting task, and I don't think it should be a target for the core
development. Alternate backend, sure, but not a primary target.

We might want to leave that to the various OS vendors for now. Most of 'em
handle the high-performance JITs for their systems, and perl's as
important in some ways as Java. Besides, I can guarantee that the folks in
Dec engineering know the Alpha far better than anyone else we have handy
does, and the same can probably be said for the other chips. (Well, we've
got Jeff from HP and Alan from Sun, but they count as vendor folks...)

Dan




Re: Where to get RFCs?

2000-08-02 Thread Ask Bjoern Hansen

On Wed, 2 Aug 2000, Bradley M. Kuhn wrote:

 It appears Dan posted some internals RFCs, and due to some
 trouble with my subscription request, I didn't see them.  I
 realize that I can get them out of the archives if I dig, but is
 there a WWW site yet where all RFCs are being kept?

http://tmtowtdi.perl.org/rfc/
 
(will soon be http://dev.perl.org/rfc/)


 - ask

-- 
ask bjoern hansen - http://www.netcetera.dk/~ask/
more than 70M impressions per day, http://valueclick.com




Synopsis: C# article

2000-08-02 Thread Garrett Goebel

From: Larry Wall [mailto:[EMAIL PROTECTED]]

 Here's another article that talks about a lot of the things we
 *should* be thinking. In fact, it's possible this article should
 be required reading for anyone who aspires to be a Perl designer.
 
 http://windows.oreilly.com/news/hejlsberg_0800.html

Here are my notes from the article on what C# offers:

C#
- multilingual 
- deep object-orientation
- object-simplification
- stays close to C++ in design: operators, keywords, statements,
  enums, operator overloading, type conversions, structure for
  name spaces
- component oriented
  o  first class language constructs: properties, methods, events,
 attributes (typed extensible metadata), documentation (XML)
  o  everything as an object
  o  boxing/unboxing: value - object conversion
  o  only one kind of class (always GC'd)
- code as embeddable self-describing self-contained unit: no headers,
  IDL's, GUID's, or complex interfaces
- notion of safe/unsafe code
  o  safe code
  runs in managed 'boxes'
  requires establishment of "trusts" to allow unsafe code exec
  o  unsafe code
  uses: C inline code, pointers, casts, protect memory from GC
  runs in managed spaced, i.e., method calls can determine if 
   object is live without crossing marshalling boundary
- strong support for HTTPD, HTML, XML, COM (other MS glue), importing
  from existing shared libraries
- modern mark and sweep GC:
  o  closer relationship with code
  o  code needs to be more descriptive: where and how memory utilized
- The platform, language, and runtime
  o  platform = .Net
  can implement multiple programming languages
  maintain common shared api's
  unification of programming models
  allows compilation of scripting languages
  JVM != .Net IL (Intermediate Language)
   x  can generate native or IL from source
   x  can generate native from IL at install
   x  can do just-in-time at runtime
   x  no interpreters, one-pass conversion to machine code
   x  IL is type neutral, type is inferred from arguments pushed
  on the stack
  o  language = C#
- Why C#?
  o  C++ is too complicated
  o  Java's missing features
- No built-in regex (it in the base class libraries)
- Namespace
  o  separation between physical packaging and logical naming
- Generic Programming possibly in future release
  o  generics understood by underlying runtime
  o  instantiation at runtime
  o  no 'baking' types into instruction stream in the IL
- C# submitted to ECMA for standardization
- uses SOAP and XML for buidling distributed applications in a 
  loosely connected stateless fashion. I.e., to overcome state
  dependencies in CORBA and RMI.
- attributes
  o  can add declaritive information to types and members
  public/private
  transactable
  serializable as XML
  web service
  o  can be added to classes and fields within classes
 



RFC 5 (v1) Multiline Comments for Perl.

2000-08-02 Thread Perl6 RFC Librarian

=head1 TITLE

Multiline Comments for Perl.

=head1 VERSION

  Maintainer: Michael J. Mathews [EMAIL PROTECTED]
  Date: 01 Aug 2000
  Version: 1
  Mailing List: [EMAIL PROTECTED]
  Number: 5

=head1 ABSTRACT

Unlike many programming languages Perl does not currently implement true
multiline comments. This can be confusing/tedious to programmers. This could
be solved by adding a syntax to Perl 6 that would allow for true multiline
comments.

=head1 DESCRIPTION

Comments are important to programmers as a way of documenting their code and
for debugging purposes. While it is true to add formatted documentation to
perl using POD tags, this can be overkill if a programmer simply wishes to
add lines of information here and there that are not intended to be public.
In fact crafty programmers can even simulate multiline comments using POD
tags, but this seems like a misuse of a feature intended for another
purpose, and can interfere with real PODs in a script.

=head1 IMPLEMENTATION

Perl currently allows for sigle-line comments using the pound-symbol "#".
Any implementation of a Perl multline comment should feel similar to this.
However (ideally) the multline syntax would be unique enough so that it
would not conflict with older scripts using the literal "\#" (in a regex for
example) or in any single-line comment of arbitrary text.

=head2 Nesting

Since multiline comments will have a beginning and an ending it will be
possible to nest and overlap commented sections of perl. Nesting and
overlapping should be allowed and supported. In the case of nesting, the
outermost comment is enforced, in the case of overlapping the comments
should be treated as if they were joined. In the case of a single-line
comment overlapping a multiline comment, the multiline would end the
sigle-line comment and would in all other ways take precedence.

=head2 Proposal

Using a two-character syntax to start and end a multiline comment seems to
be a good way to satisfy both the desired similarity to "#" and the desired
uniqueness to avoid collision with real single-line quotes. I would suggest
a (# many lines of comment #) syntax:

 this is not ignored;
 neither is this; (# this
 is a
 multiline
 comment so it IS
 ignored #) but this is not ignored;

It would be very rare to find the "(#" or "#)" character combination in a
perl script being used as part of a single-line comment, and yet it is an
intuative extension of "#" idea.


=head1 REFERENCES






RFC 1 (v1) Implementation of Threads in Perl

2000-08-02 Thread Perl6 RFC Librarian

=head1 TITLE

Implementation of Threads in Perl

=head1 VERSION

Maintainer: Bryan C. Warnock [EMAIL PROTECTED]
Date: 01 Aug 2000
Version: 1
Mailing List: [EMAIL PROTECTED]
Number: 1

=head1 ABSTRACT

Perl 6 should be built around threads from the beginning.

=head1 DESCRIPTION

Perl 5 attempted (with relatively good success) to implement threads
atop the current architecture.  It did, unfortunately, leave several
gaps, traps, and "features" in heavy concurrency uses.  These
weaknesses could be fixed if Perl was built with threading from the
start.

All Perl programs are threaded.  Most just only have one.

=head1 MOTIVATORS

Impatience, Hubris, and Laziness, in that order.

=head1 IMPLEMENTATION

Attempt to build-in thread constructs for the internals, while allowing
a Thread module to safely and robustly add user thread constructs, while
not making things bad for the single thread folks.

=head2 SUMMARY OF IMPLEMENTATION

=over 4

=item *

Create an additional pseudo-global stash, one per thread created, that is
local to that thread.  This stash would be the default space for non-
lexical variables.  C$main::foo == C$foo within one thread, while 
C$main::foo != C$main::foo in different threads.  There need be no way to 
specify the particular thread-space, as it would be visible only to the 
owning thread.

=item *

The Thread module should add a Cglobal keyword or function that explicitly
access a variable in the program-global stash.

Cglobal $main::foo = $foo;  # Let another thread know what my $foo is.
Cglobal $main::foo = \$foo; # Share my local foo.  Dangerous!
C$foo = global $main::foo;  # Localize this instance of $main::foo.

=item *

The Thread module should, on inclusion, also set the optree flag that triggers
mutex locking on variables within the perl core itself.  (As differentiated
by a user-created and controlled mutex.)  This is to guarantee that the
above constructs will actually work - user created race conditions aside.

=item *

Populate the thread-space stash with the built-ins, vice the program global 
stash.  Very few of the built-ins are meaningless in this threaded construct,
most are truly independent, and those that aren't, like $^O, should probably
be read-only anyway.  

=back

=head2 IMPACT

=over 4

=item *

Impact on Perl on a non-thread-supporting architecture.  None.  (The mutex
locking code would be no-opped out, the Thread module would fail on inclusion,
preventing any of the global semantics from being invoked.  The thread
space would appear to the program to be a standard global stash.)

=item *

Impact on Perl built for non-threaded use.  None.  Same as above.

=item *

Impact on a single-threaded program under a multi-threaded Perl.  None,
for the above reasons.  (There would be an additional flag check, vice,
I believe, automatic mutex locking under the current scheme.)

=item *

Impact on multi-threaded scripts under a multi-threaded Perl.  Some.  Mutex
locking would occur much as it does today.  Current Perl scripts, without 
the knowledge of global versus thread space would find data-sharing broken.
Threads have been declared experimental, and I believe the benefits of 
simplifying threads in general outweigh the heartache of those (who would
benefit) that would have to change their programs.

=item *

Impact on Perl 5.  Mutual compatibility between Perl 5 and Perl 6, with the
exception of Cuse Thread and the sematics it would add.  (Obviously, 
other changes to the language notwithstanding.)

=back

=head2 UNKNOWNS

=over 4

=item *

Mutex locking of a hash or array, and the scalars they contain, and vice
versa?

=item *

Mutex locking of a reference and the referree.

=item *

Limitations or assumptions on threading schemes other than those in pthreads,
due to the author's lack of experience with anything but.

=back

=head1 REFERENCES

   None, currently.





Re: RFC: On-the-fly tainting via $^T

2000-08-02 Thread Graham Barr

On Wed, Aug 02, 2000 at 11:29:40AM -0400, Dan Sugalski wrote:
 I was figuring the taint/notaint pragma would control taint checking, while 
 -T would control taint setting. Probably not the best way--might be worth 
 unconditionally setting the taint status so a use/no taint would do the 
 right thing.

Sounds reasonable.

Graham.



Re: RFC Archive

2000-08-02 Thread Jonathan Scott Duff

On Wed, Aug 02, 2000 at 10:09:04PM -0600, Nathan Torkington wrote:
 I'm about to push the button that will send my private set of RFCs
 off to the archive and mail them to perl6-announce.  Fingers crossed.

Hooray!!

 If I've forgotten your RFC, please send it to [EMAIL PROTECTED]
 
 In the future, if you want to submit an RFC mail it to
 [EMAIL PROTECTED] only.  

http://tmtowtdi.perl.org/rfc/meta/ says that you should send your RFCs to
[EMAIL PROTECTED] rather than [EMAIL PROTECTED]

Thanks for getting the RFC repository up an running Nat.

-Scott
-- 
Jonathan Scott Duff
[EMAIL PROTECTED]



Re: what will be in Perl6 ?

2000-08-02 Thread Jeremy Howard

Tim Bunce said:
 On Wed, Aug 02, 2000 at 10:57:27AM -0700, Larry Wall wrote:
  ...
  That's a good summary of what we've been thinking.  Here's another
  article that talks about a lot of the things we *should* be thinking.
  In fact, it's possible this article should be required reading for
  anyone who aspires to be a Perl designer.
 
  http://windows.oreilly.com/news/hejlsberg_0800.html

 Impressive. Quite deeply impressive.

Yes, Hejlsberg is well worth listening to. For those who are unfamiliar with
his background, he was the architect behind Borland Delphi, which is well
worth looking at to see good implementations of a few things he talks about
in the article (eg. there is only one type of class; properties and events
are fundamental). Microsoft poached him a few years back and have made him
into something of a celebrity.

I did particularly notice one quote of his:
"I just think that we're a generation ahead when it comes to the thinking in
this space"
...which sounds awfully like a challenge to me ;-)





DOCS

2000-08-02 Thread raptor

hi,

As the news that the Perl will be rewriten comes... me and I think many
others non core coders decided that they can help with something but
most of the people like me doesn't have the knowledge of the current
PERL5.6, why we may need this ?! 'cause Perl6 is 2 years from "here" and we
will not have alpha version sooner - then what to do to help ?!
HmmmLet see how it works now and experiment with the current Perl my
ideas  but there is a lack of information/docs about it... so I'm in
circle give us more than perlguts and perlapi, they are not enought
.
One good Idea was PERLHACKTUT posted on the perl5portes list meanwhile
is there new version of it?... I can make a list of wishes for the docs if
you want :")
Another benefit will be that we will have something to compare with...
Perl 5.(7/8) will be our field test for Perl 6.0

Thanx for your time
=
iVAN
[EMAIL PROTECTED]
=




Re: what will be in Perl6 ?

2000-08-02 Thread Larry Wall

raptor writes:
: http://www.oreillynet.com/pub/a/linux/rt/07282000/transcript.html

That's a good summary of what we've been thinking.  Here's another
article that talks about a lot of the things we *should* be thinking.
In fact, it's possible this article should be required reading for
anyone who aspires to be a Perl designer.

http://windows.oreilly.com/news/hejlsberg_0800.html

Larry



Re: what will be in Perl6 ?

2000-08-02 Thread Jonathan Scott Duff

On Wed, Aug 02, 2000 at 10:57:27AM -0700, Larry Wall wrote:
 raptor writes:
 : http://www.oreillynet.com/pub/a/linux/rt/07282000/transcript.html
 
 That's a good summary of what we've been thinking.  Here's another
 article that talks about a lot of the things we *should* be thinking.
 In fact, it's possible this article should be required reading for
 anyone who aspires to be a Perl designer.
 
 http://windows.oreilly.com/news/hejlsberg_0800.html

In reading this I noticed that documentation was listed as a first
class language construct and that got me thinking about python's
docstrings.  It would be neat to have something similar in perl.

-Scott
-- 
Jonathan Scott Duff
[EMAIL PROTECTED]



development relationship of Perl 5 and Perl 6

2000-08-02 Thread Larry Wall

Johan Vromans writes:
: Nick Ing-Simmons [EMAIL PROTECTED] writes:
: 
:perl.exe + perl.dll or .../bin/perl + libperl.so 
: 
: RFC: Should the perl program be called differently (e.g., perl6) to
: allow sites to run 5 and 6 in parallel until their migration is
: completed (if ever)?

We will certainly have to distinguish the executables.

I will go farther than that, and say that we will fail if we do not
build Perl 6 in the same distribution tree as Perl 5.  Yes, we're
redesigning Perl 6 from scratch, but I think that for a long time yet,
we will need to keep the scaffolding of Perl 5 around Perl 6.  Keeping
them co-located has a number of advantages:

* We know which version of Perl 5 we're using to build Perl 6.
* We can make calls back into Perl 5 to emulate things not yet
implemented in Perl 6.
* We make it obvious that Perl 5 is still very important to us.
* We keep Perl 6 in front of everyone's nose even if they aren't
interested in using it yet.
* We can evolve the Perl-5-to-Perl-6 translator as we go.

I basically used the emulation approach to write Perl 5, so I know it
works.  There were some intermediate forms of Perl where some of the
opcodes ran Perl 5 C code, and some of them ran Perl 4 C code.  

My basic underlying point is that you can be revolutionary in design,
yet evolutionary in implementation of that design.  And that taking
such an evolutionary approach has the advantage of not letting the old
guard think they've been totally abandoned.  (Witness the problems of
perceived abandonment with the Mozilla rewrite.)

We may, of course, decide to do something so different that there's
no way to write the glue to call back into Perl 5 for unimplemented
opcodes.  If that's the case, it might be a danger signal that we're
overreaching, and we'll have difficulty dragging Perl 5 code into the
Perl 6 world.

I could be wrong about that.  Whether or not we use Perl 5 to emulate
unimplemented opcodes, we still to keep Perl 6 near Perl 5 for all the
other reasons.

Larry



Re: type-checking [Was: What is Perl?]

2000-08-02 Thread Tim Bunce

On Tue, Aug 01, 2000 at 09:25:33PM +, Nick Ing-Simmons wrote:
 Alan Burlison [EMAIL PROTECTED] writes:
 
 No, I disagree.  Perl gains a lot of its expressive power from being lax
 about typing.  I suspect it will also impose an unacceptable overhed for
 the vast majority who don't want it - at the very least every variable
 access will have to check an 'are you typed' flag. 
 
 Cross posted to internals ('cos it is...)
 
 We should consider using "vtables" to avoid the cost of the conditional 
 branches (and running out of flag bits).
 
 Thus this function would call variables "type check" "method" - 
 which for normal case would be pointer to blue-white-hot "NoOp" function
 which is near always in-cache, for a typed var it could be a slow 
 as you wanted...

I agree with all this.

Tim.



Re: type-checking [Was: What is Perl?]

2000-08-02 Thread Tim Bunce

On Tue, Aug 01, 2000 at 10:47:24PM +0100, Alan Burlison wrote:
 
 I suspect reorganising the data structures to be cache
 friendly would gain more benefit than avoiding a few inline bit
 twiddles.

We should do both.

Tim.



better subjects (was Re: what will be in Perl6 ?)

2000-08-02 Thread Uri Guttman

 "LW" == Larry Wall [EMAIL PROTECTED] writes:

  LW If this article is going to inspire multiple threads, let's try to
  LW give them unique subject names.  Thanks.

and in general, we need better message subjects. already i have
seen threads fall into the one-subject-fits-all abyss of
alt.sysadmin.recovery.

if you reply is not on topic with the subject, please rename the
subject. and please don't use generic subjects like 'what will be in
perl6'.

thanx,

uri

-- 
Uri Guttman  -  [EMAIL PROTECTED]  --  http://www.sysarch.com
SYStems ARCHitecture, Software Engineering, Perl, Internet, UNIX Consulting
The Perl Books Page  ---  http://www.sysarch.com/cgi-bin/perl_books
The Best Search Engine on the Net  --  http://www.northernlight.com



what will be in Perl6 ?

2000-08-02 Thread raptor

http://www.oreillynet.com/pub/a/linux/rt/07282000/transcript.html




Re: RFC: On-the-fly tainting via $^T

2000-08-02 Thread Dan Sugalski

At 12:51 PM 8/2/00 +0100, Graham Barr wrote:
On Tue, Aug 01, 2000 at 11:56:48AM -0400, Dan Sugalski wrote:
  What I was thinking of was something along the lines of a lexically scoped
  pragma--"use taint"/"no taint". (We could do this by sticking in an opcode
  to set/unset the tainting status, as well as the warning status, and so 
 on)
  Taint checking is disabled in a no taint block. Whether we still set the
  taint status on a scalar could depend on the -T switch, so data would 
 still
  be tainted in a no taint block.

I agree with a pragma. But I think there should be some distinction between
taint setting and taint checking.

I was figuring the taint/notaint pragma would control taint checking, while 
-T would control taint setting. Probably not the best way--might be worth 
unconditionally setting the taint status so a use/no taint would do the 
right thing.

Dan

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




Re: Stuff in core (was Re: date interface, on language (was Re: perl6 requirements, on bootstrap))

2000-08-02 Thread Piers Cawley

Dan Sugalski [EMAIL PROTECTED] writes:
  From a language perspective, I have a scheme to allow us to yank all the 
 cruft (sockets, shm, messages, localtime...) out into separate libraries, 
 yet pull them in on demand without needing a use.

a la dbmopen in perl5?

-- 
Piers




Re: what will be in Perl6 ?

2000-08-02 Thread Tim Bunce

On Wed, Aug 02, 2000 at 10:57:27AM -0700, Larry Wall wrote:
 raptor writes:
 : http://www.oreillynet.com/pub/a/linux/rt/07282000/transcript.html
 
 That's a good summary of what we've been thinking.  Here's another
 article that talks about a lot of the things we *should* be thinking.
 In fact, it's possible this article should be required reading for
 anyone who aspires to be a Perl designer.
 
 http://windows.oreilly.com/news/hejlsberg_0800.html

Impressive. Quite deeply impressive.

Tim.