This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix Sys::Syslog breakage on domain sockets (from Tom Hughes)
[perl5.git] / Todo
CommitLineData
54aff467
GS
1Always check out the latest perl5-porters discussions on these subjects
2before embarking on an implementation tour.
ed3f4a32 3
7a95317d
GS
4Bugs
5 remove recursion in regular expression engine
6 fix memory leaks during compile failures
7 make signal handling safe
8
8990e307
LW
9Tie Modules
10 VecArray Implement array using vec()
11 SubstrArray Implement array using substr()
12 VirtualArray Implement array using a file
13 ShiftSplice Defines shift et al in terms of splice method
93a17b20 14
8990e307 15Would be nice to have
55f6b6ec 16 pack "(stuff)*", "(stuff)?", "(stuff)+", "(stuff)4", ...
54aff467 17 contiguous bitfields in pack/unpack
463ee0b2 18 lexperl
55f6b6ec
JH
19 bundled perl preprocessor/macro facility
20 this would solve many of the syntactic nice-to-haves
54aff467 21 use posix calls internally where possible
9cc29783 22 gettimeofday (possibly best left for a module?)
8990e307 23 format BOTTOM
2304df62 24 -i rename file only when successfully changed
54aff467 25 all ARGV input should act like <>
2304df62 26 report HANDLE [formats].
a0d0e21e 27 support in perlmain to rerun debugger
aa00cc68 28 regression tests using __DIE__ hook
aa00cc68 29 lexically scoped functions: my sub foo { ... }
e620704b
JH
30 the basic concept is easy and sound,
31 the difficulties begin with self-referential
32 and mutually referential lexical subs: how to
33 declare the subs?
34 lexically scoped typeglobs? (lexical I/O handles work now)
55f6b6ec 35 wantlvalue? more generalized want()/caller()?
54aff467 36 named prototypes: sub foo ($foo, @bar) { ... } ?
7b8d334a 37 regression/sanity tests for suidperl
ed3f4a32
JH
38 iterators/lazy evaluation/continuations/first/
39 first_defined/short-circuiting grep/??
40 This is a very thorny and hotly debated subject,
54aff467 41 tread carefully and do your homework first
54aff467 42 generalise Errno way of extracting cpp symbols and use that in
55f6b6ec 43 Errno, Fcntl, POSIX (ExtUtils::CppSymbol?)
54aff467 44 the _r-problem: for all the {set,get,end}*() system database
2607c2e4
JH
45 calls (and a couple more: readdir, *rand*, crypt, *time,
46 tmpnam) there are in many systems the _r versions
54aff467 47 to be used in re-entrant (=multithreaded) code
24e11b2a 48 Icky things: the _r API is not standardized and
54aff467 49 the _r-forms require per-thread data to store their state
55f6b6ec 50 memory profiler: turn malloc.c:Perl_get_mstats() into
24e11b2a
JH
51 an extension (Devel::MProf?) that would return the malloc
52 stats in a nice Perl datastructure (also a simple interface
54aff467 53 to return just the grand total would be good)
d57b1ce7
GS
54 cross-compilation support
55 host vs target: compile in the host, get the executable to
56 the target, get the possible input files to the target,
57 execute in the target (and do not assume a UNIXish shell
58 in the target! e.g. no command redirection can be assumed),
59 get possible output files back to to host. this needs to work
60 both during Configure and during the build. You cannot assume
61 shared filesystems between the host and the target (you may need
62 e.g. ftp), executing the target executable may involve e.g. rsh
53c32ee0 63 a way to make << and >> to shift bitvectors instead of numbers
8990e307 64
a0d0e21e 65Possible pragmas
85e6fe83 66 debugger
54aff467 67 optimize (use less qw[memory cpu])
463ee0b2
LW
68
69Optimizations
a0d0e21e
LW
70 constant function cache
71 switch structures
a0d0e21e 72 foreach(reverse...)
54aff467 73 cache eval tree (unless lexical outer scope used (mark in &compiling?))
463ee0b2 74 rcatmaybe
54aff467
GS
75 shrink opcode tables via multiple implementations selected in peep
76 cache hash value? (Not a win, according to Guido)
77 optimize away @_ where possible
55f6b6ec 78 tail recursion removal
8990e307 79 "one pass" global destruction
54aff467 80 rewrite regexp parser for better integrated optimization
aa00cc68 81 LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
463ee0b2 82
a0d0e21e 83Vague possibilities
54aff467 84 ref function in list context?
463ee0b2 85 make tr/// return histogram in list context?
54aff467
GS
86 loop control on do{} et al
87 explicit switch statements
463ee0b2
LW
88 built-in globbing
89 compile to real threaded code
90 structured types
85e6fe83 91 autocroak?
54aff467 92 modifiable $1 et al