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