1 Always check out the latest perl5-porters discussions on these subjects
2 before embarking on an implementation tour.
5 VecArray Implement array using vec()
6 SubstrArray Implement array using substr()
7 VirtualArray Implement array using a file
8 ShiftSplice Defines shift et al in terms of splice method
11 pack "(stuff)*", "(stuff)?", "(stuff)+", "(stuff)4", ...
12 contiguous bitfields in pack/unpack
14 bundled perl preprocessor/macro facility
15 this would solve many of the syntactic nice-to-haves
16 use posix calls internally where possible
17 gettimeofday (possibly best left for a module?)
19 -i rename file only when successfully changed
20 all ARGV input should act like <>
21 report HANDLE [formats].
22 support in perlmain to rerun debugger
23 regression tests using __DIE__ hook
24 lexically scoped functions: my sub foo { ... }
25 the basic concept is easy and sound,
26 the difficulties begin with self-referential
27 and mutually referential lexical subs: how to
29 lexically scoped typeglobs? (lexical I/O handles work now)
30 wantlvalue? more generalized want()/caller()?
31 named prototypes: sub foo ($foo, @bar) { ... } ?
32 regression/sanity tests for suidperl
33 iterators/lazy evaluation/continuations/first/
34 first_defined/short-circuiting grep/??
35 This is a very thorny and hotly debated subject,
36 tread carefully and do your homework first
37 generalise Errno way of extracting cpp symbols and use that in
38 Errno, Fcntl, POSIX (ExtUtils::CppSymbol?)
39 the _r-problem: for all the {set,get,end}*() system database
40 calls (and a couple more: readdir, *rand*, crypt, *time,
41 tmpnam) there are in many systems the _r versions
42 to be used in re-entrant (=multithreaded) code
43 Icky things: the _r API is not standardized and
44 the _r-forms require per-thread data to store their state
45 memory profiler: turn malloc.c:Perl_get_mstats() into
46 an extension (Devel::MProf?) that would return the malloc
47 stats in a nice Perl datastructure (also a simple interface
48 to return just the grand total would be good)
49 a way to make << and >> to shift bitvectors instead of numbers
53 optimize (use less qw[memory cpu])
56 constant function cache
59 cache eval tree (unless lexical outer scope used (mark in &compiling?))
61 shrink opcode tables via multiple implementations selected in peep
62 cache hash value? (Not a win, according to Guido)
63 optimize away @_ where possible
64 tail recursion removal
65 "one pass" global destruction
66 rewrite regexp parser for better integrated optimization
67 LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
70 ref function in list context?
71 make tr/// return histogram in list context?
72 loop control on do{} et al
73 explicit switch statements
75 compile to real threaded code