Add test.deparse make target.
[p5sagit/p5-mst-13.2.git] / Todo
CommitLineData
54aff467 1Always check out the latest perl5-porters discussions on these subjects
2before embarking on an implementation tour.
ed3f4a32 3
7a95317d 4Bugs
5 remove recursion in regular expression engine
6 fix memory leaks during compile failures
7a95317d 7
8990e307 8Tie Modules
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
93a17b20 13
8990e307 14Would be nice to have
55f6b6ec 15 pack "(stuff)*", "(stuff)?", "(stuff)+", "(stuff)4", ...
54aff467 16 contiguous bitfields in pack/unpack
463ee0b2 17 lexperl
55f6b6ec 18 bundled perl preprocessor/macro facility
19 this would solve many of the syntactic nice-to-haves
54aff467 20 use posix calls internally where possible
9cc29783 21 gettimeofday (possibly best left for a module?)
8990e307 22 format BOTTOM
2304df62 23 -i rename file only when successfully changed
54aff467 24 all ARGV input should act like <>
2304df62 25 report HANDLE [formats].
a0d0e21e 26 support in perlmain to rerun debugger
aa00cc68 27 regression tests using __DIE__ hook
aa00cc68 28 lexically scoped functions: my sub foo { ... }
e620704b 29 the basic concept is easy and sound,
30 the difficulties begin with self-referential
31 and mutually referential lexical subs: how to
32 declare the subs?
33 lexically scoped typeglobs? (lexical I/O handles work now)
55f6b6ec 34 wantlvalue? more generalized want()/caller()?
54aff467 35 named prototypes: sub foo ($foo, @bar) { ... } ?
7b8d334a 36 regression/sanity tests for suidperl
ed3f4a32 37 iterators/lazy evaluation/continuations/first/
38 first_defined/short-circuiting grep/??
39 This is a very thorny and hotly debated subject,
54aff467 40 tread carefully and do your homework first
54aff467 41 generalise Errno way of extracting cpp symbols and use that in
55f6b6ec 42 Errno, Fcntl, POSIX (ExtUtils::CppSymbol?)
54aff467 43 the _r-problem: for all the {set,get,end}*() system database
2607c2e4 44 calls (and a couple more: readdir, *rand*, crypt, *time,
45 tmpnam) there are in many systems the _r versions
54aff467 46 to be used in re-entrant (=multithreaded) code
24e11b2a 47 Icky things: the _r API is not standardized and
54aff467 48 the _r-forms require per-thread data to store their state
d57b1ce7 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
53c32ee0 58 a way to make << and >> to shift bitvectors instead of numbers
8990e307 59
a0d0e21e 60Possible pragmas
85e6fe83 61 debugger
54aff467 62 optimize (use less qw[memory cpu])
463ee0b2 63
64Optimizations
a0d0e21e 65 constant function cache
66 switch structures
a0d0e21e 67 foreach(reverse...)
54aff467 68 cache eval tree (unless lexical outer scope used (mark in &compiling?))
463ee0b2 69 rcatmaybe
54aff467 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
55f6b6ec 73 tail recursion removal
8990e307 74 "one pass" global destruction
54aff467 75 rewrite regexp parser for better integrated optimization
aa00cc68 76 LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
463ee0b2 77
a0d0e21e 78Vague possibilities
54aff467 79 ref function in list context?
463ee0b2 80 make tr/// return histogram in list context?
54aff467 81 loop control on do{} et al
82 explicit switch statements
463ee0b2 83 compile to real threaded code
84 structured types
85e6fe83 85 autocroak?
54aff467 86 modifiable $1 et al