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