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