1 Always check out the latest perl5-porters discussions on these subjects
2 before embarking on an implementation tour.
5 remove recursion in regular expression engine
6 fix memory leaks during compile failures
9 VecArray Implement array using vec()
10 SubstrArray Implement array using substr()
11 VirtualArray Implement array using a file
12 ShiftSplice Defines shift et al in terms of splice method
15 pack "(stuff)*", "(stuff)?", "(stuff)+", "(stuff)4", ...
16 contiguous bitfields in pack/unpack
18 bundled perl preprocessor/macro facility
19 this would solve many of the syntactic nice-to-haves
20 use posix calls internally where possible
21 gettimeofday (possibly best left for a module?)
23 -i rename file only when successfully changed
24 all ARGV input should act like <>
25 report HANDLE [formats].
26 support in perlmain to rerun debugger
27 regression tests using __DIE__ hook
28 lexically scoped functions: my sub foo { ... }
29 the basic concept is easy and sound,
30 the difficulties begin with self-referential
31 and mutually referential lexical subs: how to
33 lexically scoped typeglobs? (lexical I/O handles work now)
34 wantlvalue? more generalized want()/caller()?
35 named prototypes: sub foo ($foo, @bar) { ... } ?
36 regression/sanity tests for suidperl
37 iterators/lazy evaluation/continuations/first/
38 first_defined/short-circuiting grep/??
39 This is a very thorny and hotly debated subject,
40 tread carefully and do your homework first
41 generalise Errno way of extracting cpp symbols and use that in
42 Errno, Fcntl, POSIX (ExtUtils::CppSymbol?)
43 the _r-problem: for all the {set,get,end}*() system database
44 calls (and a couple more: readdir, *rand*, crypt, *time,
45 tmpnam) there are in many systems the _r versions
46 to be used in re-entrant (=multithreaded) code
47 Icky things: the _r API is not standardized and
48 the _r-forms require per-thread data to store their state
49 cross-compilation support
50 host vs target: compile in the host, get the executable to
51 the target, get the possible input files to the target,
52 execute in the target (and do not assume a UNIXish shell
53 in the target! e.g. no command redirection can be assumed),
54 get possible output files back to to host. this needs to work
55 both during Configure and during the build. You cannot assume
56 shared filesystems between the host and the target (you may need
57 e.g. ftp), executing the target executable may involve e.g. rsh
58 a way to make << and >> to shift bitvectors instead of numbers
62 optimize (use less qw[memory cpu])
65 constant function cache
68 cache eval tree (unless lexical outer scope used (mark in &compiling?))
70 shrink opcode tables via multiple implementations selected in peep
71 cache hash value? (Not a win, according to Guido)
72 optimize away @_ where possible
73 tail recursion removal
74 "one pass" global destruction
75 rewrite regexp parser for better integrated optimization
76 LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
79 ref function in list context?
80 make tr/// return histogram in list context?
81 loop control on do{} et al
82 explicit switch statements
83 compile to real threaded code