This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
pod updates (from Tom Christiansen)
[perl5.git] / Todo-5.6
1 Bugs
2     fix small memory leaks on compile-time failures
3
4 Unicode support
5     finish byte <-> utf8 and localencoding <-> utf8 conversions
6     make substr($bytestr,0,0,$charstr) do the right conversion
7     add Unicode::Map equivivalent to core
8     add support for I/O disciplines
9         - a way to specify disciplines when opening things:
10             open(F, "<:crlf :utf16", $file)
11         - a way to specify disciplines for an already opened handle:
12             binmode(STDIN, ":slurp :raw")
13         - a way to set default disciplines for all handle constructors:
14             use open IN => ":any", OUT => ":utf8", SYS => ":utf16"
15     eliminate need for "use utf8;"
16     autoload byte.pm when byte:: is seen by the parser
17     check uv_to_utf8() calls for buffer overflow
18     (see also "Locales", "Regexen", and "Miscellaneous")
19
20 Multi-threading
21     support "use Thread;" under useithreads
22     add mechanism to:
23       - create new interpreter in a different thread
24       - exchange data between interpreters/threads
25       - share namespaces between interpreters/threads
26     work out consistent semantics for exit/die in threads
27     support for externally created threads?
28     Thread::Pool?
29
30 Compiler
31     auto-produce executable
32     typed lexicals should affect B::CC::load_pad
33     workarounds to help Win32
34     END blocks need saving in compiled output
35     _AUTOLOAD prodding
36     fix comppadlist (names in comppad_name can have fake SvCUR
37         from where newASSIGNOP steals the field)
38
39 Namespace cleanup
40     CPP-space:    restrict what we export from headers when !PERL_CORE
41     header-space: move into CORE/perl/?
42     API-space:    complete the list of things that constitute public api
43
44 Configure
45     fix the vicious cyclic multidependency of cc <-> libpth <-> loclibpth
46         libswanted <-> usethreads <-> use64bitint <-> use64bitall <->
47         uselargefiles <-> ...  
48     make configuring+building away from source directory work (VPATH et al)
49         this is related to: cross-compilation configuring (see Todo)
50     _r support (see Todo for mode detailed description)
51     POSIX 1003.1 1996 Edition support--realtime stuff:
52         POSIX semaphores, message queues, shared memory, realtime clocks,
53         timers, signals (the metaconfig units mostly already exist for these)
54     UNIX98 support: reader-writer locks, realtime/asynchronous IO
55     IPv6 support: see RFC2292, RFC2553
56
57 Long doubles
58     figure out where the PV->NV->PV conversion gets it wrong at least
59     in AIX and Tru64 (V5.0 and onwards) when using long doubles: see the
60     regexp tricks we had to insert to t/comp/use.t and t/lib/bigfltpm.t,
61      (?:9|8999\d+) and the like.
62
63 64-bit support
64     Configure probe for quad_t, uquad_t, and (argh) u_quad_t, they might
65     be in some systems the only thing working as quadtype and uquadtype.
66
67 Locales
68     deprecate traditional/legacy locales?
69     How do locales work across packages?
70     figure out how to support Unicode locales
71         suggestion: integrate the IBM Classes for Unicode (ICU)
72         http://oss.software.ibm.com/developerworks/opensource/icu/project/
73         and check out also the Locale Converter:
74         http://alphaworks.ibm.com/tech/localeconverter
75     ICU is "portable, open-source Unicode library with:
76     charset-independent locales (with multiple locales simultaneously
77     supported in same thread; character conversions; formatting/parsing
78     for numbers, currencies, date/time and messages; message catalogs
79     (resources) ; transliteration, collation, normalization, and text
80     boundaries (grapheme, word, line-break))".
81     There is also 'iconv', either from XPG4 or GNU (glibc).
82     iconv is about character set conversions.
83     Either ICU or iconv would be valuable to get integrated
84     into Perl, Configure already probes for libiconv and <iconv.h>. 
85
86 Regexen
87    make RE engine thread-safe
88    a way to do full character set arithmetics: now one can do
89         addition, negate a whole class, and negate certain subclasses
90         (e.g. \D, [:^digit:]), but a more generic way to add/subtract/
91         intersect characters/classes, like described in the Unicode technical
92         report on Regular Expression Guidelines,
93         http://www.unicode.org/unicode/reports/tr18/
94         (amusingly, the TR notes that difference and intersection
95          can be done using "Perl-style look-ahead")
96         difference syntax?  maybe [[:alpha:][^abc]] meaning
97         "all alphabetic expect a, b, and c"? or [[:alpha:]-[abc]]?
98         (maybe bad, as we explicitly disallow such 'ranges')
99         intersection syntax? maybe [[..]&[...]]?
100    POSIX [=bar=] and [.zap.] would nice too but there's no API for them
101         =bar= could be done with Unicode, though, see the Unicode TR #15 about
102         normalization forms:
103         http://www.unicode.org/unicode/reports/tr15/
104         this is also a part of the Unicode 3.0:
105         http://www.unicode.org/unicode/uni2book/u2.html
106         executive summary: there are several different levels of 'equivalence'
107    approximate matching
108
109 Security
110     use fchown, fchmod (and futimes?) internally when possible
111     use fchdir(how portable?)
112     create secure reliable portable temporary file modules
113     audit the standard utilities for security problems and fix them
114
115 Reliable Signals
116     custom opcodes
117     alternate runops() for signal despatch
118     figure out how to die() in delayed sighandler
119     make Thread::Signal work under useithreads
120
121 Win32 stuff
122     sort out the spawnvp() mess for system('a','b','c') compatibility
123     work out DLL versioning
124
125 Miscellaneous
126     add new modules (Archive::Tar, Compress::Zlib, CPAN::FTP?)
127     sub-second sleep()? alarm()? time()? (integrate Time::HiRes?
128         Configure doesn't yet probe for usleep/nanosleep/ualarm but
129         the units exist)
130     floating point handling: nans, infinities, fp exception masks, etc.
131         at least the following interfaces exist: fp_classify(), fp_class(),
132         class(), isnan(), isinf(), isfinite(), finite(), isnormal(),
133         ordered(), fp_setmask(), fp_getmask(), fp_setround(), fp_getround(), 
134         ieeefp.h, fp_class.h.  There are metaconfig units for most of these.
135         Search for ifdef __osf__ in pp.c to find a temporary fix that
136         needs to be done right.
137     fix the basic arithmetics (+ - * / %) to preserve IVness/UVness if
138         both arguments are IVs/UVs
139     replace pod2html with new PodtoHtml? (requires other modules from CPAN)
140     automate testing with large parts of CPAN
141     Unicode collation? http://www.unicode.org/unicode/reports/tr10/
142     turn Cwd into an XS module?  (Configure already probes for getcwd())
143     mmap for speeding up input? (Configure already probes for the mmap family)
144     sendmsg, recvmsg? (Configure doesn't probe for these but the units exist)
145     setitimer, getitimer? (the metaconfig units exist)
146
147 Ongoing
148     keep filenames 8.3 friendly, where feasible
149     upgrade to newer versions of all independently maintained modules
150     comprehensive perldelta.pod
151
152 Documentation
153     describe new age patterns
154     update perl{guts,call,embed,xs} with additions, changes to API
155     convert more examples to use autovivified filehandles
156     document Win32 choices
157     spot-check all new modules for completeness
158     better docs for pack()/unpack()
159     reorg tutorials vs. reference sections