-Bugs
- fix small memory leaks on compile-time failures
-
Unicode support
- finish byte <-> utf8 and localencoding <-> utf8 conversions
- make substr($bytestr,0,0, $charstr) do the right conversion
+ finish byte <-> utf8 and localencoding <-> utf8 conversions
+ make substr($bytestr,0,0,$charstr) do the right conversion
add Unicode::Map equivivalent to core
add support for I/O disciplines
- - open(F, "<!crlf!utf16", $file)
- - binmode(STDIN, "<!crlf!utf16")?
- - a way to set the "system" discipline (binmode("!crlf!utf16") maybe?)
- - nice IO::Filter module to push/pop disciplines
+ - a way to specify disciplines when opening things:
+ open(F, "<:crlf :utf16", $file)
+ - a way to specify disciplines for an already opened handle:
+ binmode(STDIN, ":slurp :raw")
+ - a way to set default disciplines for all handle constructors:
+ use open IN => ":any", OUT => ":utf8", SYS => ":utf16"
eliminate need for "use utf8;"
- support C<print v1.2.3>
- make C<v123> mean C<chr(123)> (if !exists(&v123))
- autoload utf8_heavy.pl's swash routines in swash_init()
+ autoload byte.pm when byte:: is seen by the parser
check uv_to_utf8() calls for buffer overflow
+ make \uXXXX (and \u{XXXX}?) where XXXX are hex digits
+ to work similarly to Unicode tech reports and Java
+ notation \uXXXX (and already existing \x{XXXX))?
+ more than four hexdigits? make also \U+XXXX work?
+ See also "Locales", "Regexen", and "Miscellaneous".
Multi-threading
support "use Thread;" under useithreads
Configure
make configuring+building away from source directory work (VPATH et al)
- _r support
- cross-compilation configuring
- POSIX 1003.1 1996 Edition support
+ this is related to: cross-compilation configuring (see Todo)
+ _r support (see Todo for mode detailed description)
+ POSIX 1003.1 1996 Edition support--realtime stuff:
+ POSIX semaphores, message queues, shared memory, realtime clocks,
+ timers, signals (the metaconfig units mostly already exist for these)
+ PREFERABLY AS AN EXTENSION
+ UNIX98 support: reader-writer locks, realtime/asynchronous IO
+ PREFERABLY AS AN EXTENSION
+ IPv6 support: see RFC2292, RFC2553
+ PREFERABLY AS AN EXTENSION
+ there already is Socket6 in CPAN
+
+Long doubles
+ figure out where the PV->NV->PV conversion gets it wrong at least
+ in AIX and Tru64 (V5.0 and onwards) when using long doubles: see the
+ regexp tricks we had to insert to t/comp/use.t and t/lib/bigfltpm.t,
+ (?:9|8999\d+) and the like.
+
+64-bit support
+ Configure probe for quad_t, uquad_t, and (argh) u_quad_t, they might
+ be in some systems the only thing working as quadtype and uquadtype.
+ more pain: long_long, u_long_long.
Locales
deprecate traditional/legacy locales?
+ How do locales work across packages?
figure out how to support Unicode locales
- locales across packages?
+ suggestion: integrate the IBM Classes for Unicode (ICU)
+ http://oss.software.ibm.com/developerworks/opensource/icu/project/
+ ICU is "portable, open-source Unicode library with:
+ charset-independent locales (with multiple locales
+ simultaneously supported in same thread; character
+ conversions; formatting/parsing for numbers, currencies,
+ date/time and messages; message catalogs (resources);
+ transliteration, collation, normalization, and text
+ boundaries (grapheme, word, line-break))".
+ Check out also the Locale Converter:
+ http://alphaworks.ibm.com/tech/localeconverter
+ There is also the iconv interface, either from XPG4 or GNU (glibc).
+ iconv is about character set conversions.
+ Either ICU or iconv would be valuable to get integrated
+ into Perl, Configure already probes for libiconv and <iconv.h>.
Regexen
make RE engine thread-safe
+ a way to do full character set arithmetics: now one can do
+ addition, negate a whole class, and negate certain subclasses
+ (e.g. \D, [:^digit:]), but a more generic way to add/subtract/
+ intersect characters/classes, like described in the Unicode technical
+ report on Regular Expression Guidelines,
+ http://www.unicode.org/unicode/reports/tr18/
+ (amusingly, the TR notes that difference and intersection
+ can be done using "Perl-style look-ahead")
+ difference syntax? maybe [[:alpha:][^abc]] meaning
+ "all alphabetic expect a, b, and c"? or [[:alpha:]-[abc]]?
+ (maybe bad, as we explicitly disallow such 'ranges')
+ intersection syntax? maybe [[..]&[...]]?
POSIX [=bar=] and [.zap.] would nice too but there's no API for them
- (=bar= could be done with Unicode, though)
+ =bar= could be done with Unicode, though, see the Unicode TR #15 about
+ normalization forms:
+ http://www.unicode.org/unicode/reports/tr15/
+ this is also a part of the Unicode 3.0:
+ http://www.unicode.org/unicode/uni2book/u2.html
+ executive summary: there are several different levels of 'equivalence'
+ trie optimization: factor out common suffixes (and prefixes?)
+ from |-alternating groups (both for exact strings and character
+ classes, use lookaheads?)
approximate matching
+Security
+ use fchown, fchmod (and futimes?) internally when possible
+ use fchdir(how portable?)
+ create secure reliable portable temporary file modules
+ audit the standard utilities for security problems and fix them
+
Reliable Signals
custom opcodes
alternate runops() for signal despatch
work out DLL versioning
Miscellaneous
+ introduce @( and @) because group names can have spaces
add new modules (Archive::Tar, Compress::Zlib, CPAN::FTP?)
+ sub-second sleep()? alarm()? time()? (integrate Time::HiRes?
+ Configure doesn't yet probe for usleep/nanosleep/ualarm but
+ the units exist)
+ floating point handling: nans, infinities, fp exception masks, etc.
+ At least the following interfaces exist: fp_classify(), fp_class(),
+ class(), isinf(), isfinite(), finite(), isnormal(), unordered(),
+ <ieeefp.h>, <fp_class.h> (there are metaconfig units for all these),
+ fp_setmask(), fp_getmask(), fp_setround(), fp_getround()
+ (no metaconfig units yet for these).
+ Don't forget finitel(), fp_classl(), fp_class_l(), (yes, both do,
+ unfortunately, exist), and unorderedl().
+ PREFERABLY AS AN EXTENSION.
+ As of 5.6.1 there is cpp macro Perl_isnan().
+ fix the basic arithmetics (+ - * / %) to preserve IVness/UVness if
+ both arguments are IVs/UVs: it sucks that one cannot see
+ the 'carry flag' (or equivalent) of the CPU from C,
+ C is too high-level...
replace pod2html with new PodtoHtml? (requires other modules from CPAN)
automate testing with large parts of CPAN
+ turn Cwd into an XS module? (Configure already probes for getcwd())
+ mmap for speeding up input? (Configure already probes for the mmap family)
+ sendmsg, recvmsg? (Configure doesn't probe for these but the units exist)
+ setitimer, getitimer? (the metaconfig units exist)
+
+Unicode
+ SCSU? http://www.unicode.org/unicode/reports/tr6/
+ Collation? http://www.unicode.org/unicode/reports/tr10/
+ Normalization? http://www.unicode.org/unicode/reports/tr15/
+ EBCDIC? http://www.unicode.org/unicode/reports/tr16/
+ Regexes? http://www.unicode.org/unicode/reports/tr18/
+ Case Mappings? http://www.unicode.org/unicode/reports/tr21/
Ongoing
keep filenames 8.3 friendly, where feasible
Documentation
describe new age patterns
update perl{guts,call,embed,xs} with additions, changes to API
+ convert more examples to use autovivified filehandles
document Win32 choices
spot-check all new modules for completeness
better docs for pack()/unpack()
reorg tutorials vs. reference sections
+ make roffitall to be dynamical about its pods and libs
+