This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Use Pid_t.
[perl5.git] / Todo
1 Check out always the latest perl5-porters discussions on these subjects
2 before embarking on an implementation tour.
3
4 Tie Modules
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
9
10 Would be nice to have
11         pack "(stuff)*", "(stuff)4", ...
12         Contiguous bitfields in pack/unpack
13         lexperl
14         Bundled perl preprocessor
15         Use posix calls internally where possible
16         gettimeofday (possibly best left for a module?)
17         format BOTTOM
18         -i rename file only when successfully changed
19         All ARGV input should act like <>
20         report HANDLE [formats].
21         support in perlmain to rerun debugger
22         regression tests using __DIE__ hook
23         reference to compiled regexp
24         lexically scoped functions: my sub foo { ... }
25         lvalue functions
26             wantlvalue?  more generalized want()?
27         named prototypes: sub ($foo, @bar) foo { ... }
28         regression/sanity tests for suidperl
29         iterators/lazy evaluation/continuations/first/
30             first_defined/short-circuiting grep/??
31             This is a very thorny and hotly debated subject,
32             tread carefully and do your homework first.
33         Full 64 bit support (i.e. "long long").  Things to consider:
34             how to store/retrieve 32+ integers into/from Perl scalars?
35             32+ constants in Perl code? (non-portable!)
36             32+ arguments/return values to/from system calls? (seek et al)
37             32+ bit ops (&|^~, currently explicitly disabled)
38         Generalise Errno way of extracting cpp symbols and use that in
39             Errno and Fcntl (ExtUtils::CppSymbol?)
40         The _r-problem: for all the {set,get,end}*() system database
41              calls (and a couple more: readdir, *rand*, crypt, *time,
42              tmpnam) there are in many systems the _r versions
43              to be used in re-entrant (=multithreaded) code.
44              Icky things: the _r API is not standardized and
45              the _r-forms require per-thread data to store their state.
46         Memory profiler: turn malloc.c:Perl_dump_mstats() into
47             an extension (Devel::MProf?) that would return the malloc
48             stats in a nice Perl datastructure (also a simple interface
49             to return just the grand total would be good).
50         Unicode: [=bar=], combining characters equivalence
51             (U+4001 + U+0308 should be equal to U+00C4, in other words
52              A+diaereres should equal Ä), Unicode collation
53
54 Possible pragmas
55         debugger
56         optimize (use less memory, CPU)
57
58 Optimizations
59         constant function cache
60         switch structures
61         foreach(reverse...)
62         Set KEEP on constant split
63         Cache eval tree (unless lexical outer scope used (mark in &compiling?))
64         rcatmaybe
65         Shrink opcode tables via multiple implementations selected in peep
66         Cache hash value?  (Not a win, according to Guido)
67         Optimize away @_ where possible
68         "one pass" global destruction
69         Rewrite regexp parser for better integrated optimization
70         LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
71
72 Vague possibilities
73         ref function in list context
74         make tr/// return histogram in list context?
75         Loop control on do{} et al
76         Explicit switch statements
77         built-in globbing
78         compile to real threaded code
79         structured types
80         autocroak?
81         Modifiable $1 et al
82