This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
cygwin update
[perl5.git] / Todo
CommitLineData
ed3f4a32
JH
1Check out always the latest perl5-porters discussions on these subjects
2before embaring on an implementation tour.
3
8990e307
LW
4Tie 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
93a17b20 9
8990e307 10Would be nice to have
ed3f4a32 11 pack "(stuff)*", "(stuff)4", ...
85e6fe83 12 Contiguous bitfields in pack/unpack
463ee0b2
LW
13 lexperl
14 Bundled perl preprocessor
8990e307 15 Use posix calls internally where possible
9cc29783 16 gettimeofday (possibly best left for a module?)
8990e307 17 format BOTTOM
2304df62 18 -i rename file only when successfully changed
8990e307 19 All ARGV input should act like <>
2304df62 20 report HANDLE [formats].
a0d0e21e 21 support in perlmain to rerun debugger
aa00cc68
TB
22 regression tests using __DIE__ hook
23 reference to compiled regexp
24 lexically scoped functions: my sub foo { ... }
25 lvalue functions
ed3f4a32
JH
26 wantlvalue? more generalized want()?
27 named prototypes: sub ($foo, @bar) foo { ... }
7b8d334a 28 regression/sanity tests for suidperl
ed3f4a32
JH
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.
2607c2e4
JH
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)
24e11b2a
JH
38 Generalise Errno way of extracting cpp symbols and use that in
39 Errno and Fcntl (ExtUtils::CppSymbol?)
2607c2e4
JH
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.
24e11b2a
JH
44 Icky things: the _r API is not standardized and
45 the _r-forms require per-thread data to store their state.
ed3f4a32 46 Memory profiler: turn malloc.c:Perl_dump_mstats() into
24e11b2a
JH
47 an extension (Devel::MProf?) that would return the malloc
48 stats in a nice Perl datastructure (also a simple interface
ed3f4a32 49 to return just the grand total would be good).
8990e307 50
a0d0e21e 51Possible pragmas
85e6fe83 52 debugger
a0d0e21e 53 optimize (use less memory, CPU)
463ee0b2
LW
54
55Optimizations
a0d0e21e
LW
56 constant function cache
57 switch structures
a0d0e21e 58 foreach(reverse...)
463ee0b2
LW
59 Set KEEP on constant split
60 Cache eval tree (unless lexical outer scope used (mark in &compiling?))
61 rcatmaybe
62 Shrink opcode tables via multiple implementations selected in peep
a0d0e21e 63 Cache hash value? (Not a win, according to Guido)
ed6116ce 64 Optimize away @_ where possible
8990e307 65 "one pass" global destruction
a0d0e21e 66 Rewrite regexp parser for better integrated optimization
aa00cc68 67 LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
463ee0b2 68
a0d0e21e 69Vague possibilities
8990e307 70 ref function in list context
463ee0b2 71 make tr/// return histogram in list context?
463ee0b2
LW
72 Loop control on do{} et al
73 Explicit switch statements
463ee0b2
LW
74 built-in globbing
75 compile to real threaded code
76 structured types
85e6fe83 77 autocroak?
a0d0e21e 78 Modifiable $1 et al
a0d0e21e 79