head	1.2;
access;
symbols
	RELENG_4_11_0_RELEASE:1.1.1.2
	RELENG_4_11:1.1.1.2.0.20
	RELENG_4_11_BP:1.1.1.2
	RELENG_4_10_0_RELEASE:1.1.1.2
	RELENG_4_10:1.1.1.2.0.18
	RELENG_4_10_BP:1.1.1.2
	RELENG_4_9_0_RELEASE:1.1.1.2
	RELENG_4_9:1.1.1.2.0.16
	RELENG_4_9_BP:1.1.1.2
	RELENG_4_8_0_RELEASE:1.1.1.2
	RELENG_4_8:1.1.1.2.0.14
	RELENG_4_8_BP:1.1.1.2
	RELENG_4_7_0_RELEASE:1.1.1.2
	RELENG_4_7:1.1.1.2.0.12
	RELENG_4_7_BP:1.1.1.2
	RELENG_4_6_2_RELEASE:1.1.1.2
	RELENG_4_6_1_RELEASE:1.1.1.2
	RELENG_4_6_0_RELEASE:1.1.1.2
	RELENG_4_6:1.1.1.2.0.10
	RELENG_4_6_BP:1.1.1.2
	v5_006_01:1.1.1.4
	RELENG_4_5_0_RELEASE:1.1.1.2
	RELENG_4_5:1.1.1.2.0.8
	RELENG_4_5_BP:1.1.1.2
	RELENG_4_4_0_RELEASE:1.1.1.2
	RELENG_4_4:1.1.1.2.0.6
	RELENG_4_4_BP:1.1.1.2
	RELENG_4_3_0_RELEASE:1.1.1.2
	RELENG_4_3:1.1.1.2.0.4
	RELENG_4_3_BP:1.1.1.2
	RELENG_4_2_0_RELEASE:1.1.1.2
	RELENG_4_1_1_RELEASE:1.1.1.2
	PRE_SMPNG:1.1.1.3
	RELENG_4_1_0_RELEASE:1.1.1.2
	v5_006:1.1.1.3
	RELENG_3_5_0_RELEASE:1.1.1.1.2.1
	RELENG_4_0_0_RELEASE:1.1.1.2
	RELENG_4:1.1.1.2.0.2
	RELENG_4_BP:1.1.1.2
	RELENG_3_4_0_RELEASE:1.1.1.1.2.1
	RELENG_3_3_0_RELEASE:1.1.1.1.2.1
	RELENG_3_2_PAO:1.1.1.1.2.1.0.2
	RELENG_3_2_PAO_BP:1.1.1.1.2.1
	RELENG_3_2_0_RELEASE:1.1.1.1.2.1
	v5_005_03:1.1.1.2
	RELENG_3_1_0_RELEASE:1.1.1.1
	RELENG_3:1.1.1.1.0.2
	RELENG_3_BP:1.1.1.1
	RELENG_3_0_0_RELEASE:1.1.1.1
	v5_005_02:1.1.1.1
	LWALL:1.1.1;
locks; strict;
comment	@# @;


1.2
date	2002.05.16.10.07.39;	author markm;	state dead;
branches;
next	1.1;

1.1
date	98.09.09.06.59.48;	author markm;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	98.09.09.06.59.48;	author markm;	state Exp;
branches
	1.1.1.1.2.1;
next	1.1.1.2;

1.1.1.2
date	99.05.02.14.16.26;	author markm;	state Exp;
branches;
next	1.1.1.3;

1.1.1.3
date	2000.06.25.11.02.50;	author markm;	state Exp;
branches;
next	1.1.1.4;

1.1.1.4
date	2002.03.16.20.13.50;	author markm;	state Exp;
branches;
next	;

1.1.1.1.2.1
date	99.05.05.13.13.39;	author markm;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Perl is no longer in base. Long live the port!
@
text
@Tie Modules
	VecArray		Implement array using vec()
	SubstrArray		Implement array using substr()
	VirtualArray		Implement array using a file
	ShiftSplice		Defines shift et al in terms of splice method

Would be nice to have
	pack "(stuff)*"
	Contiguous bitfields in pack/unpack
	lexperl
	Bundled perl preprocessor
	Use posix calls internally where possible
	gettimeofday
	format BOTTOM
	-iprefix.
	-i rename file only when successfully changed
	All ARGV input should act like <>
	report HANDLE [formats].
	support in perlmain to rerun debugger
	regression tests using __DIE__ hook
	reference to compiled regexp
	lexically scoped functions: my sub foo { ... }
	lvalue functions
	regression/sanity tests for suidperl
	Full 64 bit support (i.e. "long long")

Possible pragmas
	debugger
	optimize (use less memory, CPU)

Optimizations
	constant function cache
	switch structures
	eval qw() at compile time
	foreach(reverse...)
	Set KEEP on constant split
	Cache eval tree (unless lexical outer scope used (mark in &compiling?))
	rcatmaybe
	Shrink opcode tables via multiple implementations selected in peep
	Cache hash value?  (Not a win, according to Guido)
	Optimize away @@_ where possible
	"one pass" global destruction
	Optimize sort by { $a <=> $b }
	Rewrite regexp parser for better integrated optimization
	LRU cache of regexp: foreach $pat (@@pats) { foo() if /$pat/ }

Vague possibilities
	ref function in list context
	make tr/// return histogram in list context?
	Loop control on do{} et al
	Explicit switch statements
	built-in globbing
	compile to real threaded code
	structured types
	autocroak?
	Modifiable $1 et al

@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@Initial import of Perl5. The king is dead; long live the king!
@
text
@@


1.1.1.1.2.1
log
@MFC: Upgrade to Perl 5.00503
@
text
@d13 1
a13 1
	gettimeofday (possibly best left for a module?)
d15 1
a25 2
	Generalise Errno way of extracting cpp symbols and use that in
	    Errno and Fcntl (ExtUtils::CppSymbol?)
@


1.1.1.2
log
@Maintenance releace 3 of perl5.005. Includes support for threads.
@
text
@d13 1
a13 1
	gettimeofday (possibly best left for a module?)
d15 1
a25 2
	Generalise Errno way of extracting cpp symbols and use that in
	    Errno and Fcntl (ExtUtils::CppSymbol?)
@


1.1.1.3
log
@Vendor import of Perl 5.006
@
text
@a0 8
Always check out the latest perl5-porters discussions on these subjects
before embarking on an implementation tour.

Bugs
	remove recursion in regular expression engine
	fix memory leaks during compile failures
	make signal handling safe

d8 2
a9 2
	pack "(stuff)*", "(stuff)?", "(stuff)+", "(stuff)4", ...
	contiguous bitfields in pack/unpack
d11 2
a12 3
	bundled perl preprocessor/macro facility
	    this would solve many of the syntactic nice-to-haves
	use posix calls internally where possible
d16 1
a16 1
	all ARGV input should act like <>
d20 1
d22 1
a22 7
		the basic concept is easy and sound,
		the difficulties begin with self-referential
		and mutually referential lexical subs: how to
		declare the subs?
	lexically scoped typeglobs? (lexical I/O handles work now)
        wantlvalue?  more generalized want()/caller()?
	named prototypes: sub foo ($foo, @@bar) { ... } ?
d24 3
a26 26
	iterators/lazy evaluation/continuations/first/
	    first_defined/short-circuiting grep/??
	    This is a very thorny and hotly debated subject,
	    tread carefully and do your homework first
	generalise Errno way of extracting cpp symbols and use that in
	    Errno, Fcntl, POSIX (ExtUtils::CppSymbol?)
	the _r-problem: for all the {set,get,end}*() system database
	     calls (and a couple more: readdir, *rand*, crypt, *time,
	     tmpnam) there are in many systems the _r versions
	     to be used in re-entrant (=multithreaded) code
	     Icky things: the _r API is not standardized and
	     the _r-forms require per-thread data to store their state
	memory profiler: turn malloc.c:Perl_get_mstats() into
	    an extension (Devel::MProf?) that would return the malloc
	    stats in a nice Perl datastructure (also a simple interface
	    to return just the grand total would be good)
	cross-compilation support
	    host vs target: compile in the host, get the executable to
	    the target, get the possible input files to the target,
	    execute in the target (and do not assume a UNIXish shell
	    in the target! e.g. no command redirection can be assumed),
	    get possible output files back to to host.  this needs to work
	    both during Configure and during the build.  You cannot assume
	    shared filesystems between the host and the target (you may need
	    e.g. ftp), executing the target executable may involve e.g. rsh
	a way to make << and >> to shift bitvectors instead of numbers
d30 1
a30 1
	optimize (use less qw[memory cpu])
d35 1
d37 2
a38 1
	cache eval tree (unless lexical outer scope used (mark in &compiling?))
d40 3
a42 4
	shrink opcode tables via multiple implementations selected in peep
	cache hash value?  (Not a win, according to Guido)
	optimize away @@_ where possible
	tail recursion removal
d44 2
a45 1
	rewrite regexp parser for better integrated optimization
d49 1
a49 1
	ref function in list context?
d51 2
a52 2
	loop control on do{} et al
	explicit switch statements
d57 2
a58 1
	modifiable $1 et al
@


1.1.1.4
log
@Vendor import Perl 5.6.1
@
text
@d50 4
@


