(Retracted by #10073)
[p5sagit/p5-mst-13.2.git] / Todo
1 Always check out the latest perl5-porters discussions on these subjects
2 before embarking on an implementation tour.
3
4 Bugs
5         remove recursion in regular expression engine
6         fix memory leaks during compile failures
7
8 Tie 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
13
14 Would be nice to have
15         pack "(stuff)*", "(stuff)?", "(stuff)+", "(stuff)4", ...
16         contiguous bitfields in pack/unpack
17         lexperl
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?)
22         format BOTTOM
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
32                 declare the subs?
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
59
60 Possible pragmas
61         debugger
62         optimize (use less qw[memory cpu])
63
64 Optimizations
65         constant function cache
66         switch structures
67         foreach(reverse...)
68         cache eval tree (unless lexical outer scope used (mark in &compiling?))
69         rcatmaybe
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/ }
77
78 Vague possibilities
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
84         structured types
85         autocroak?
86         modifiable $1 et al