This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Retract #6826 as the #6828 should be do the same
[perl5.git] / Todo-5.6
index 9203d5c..30c7cc0 100644 (file)
--- a/Todo-5.6
+++ b/Todo-5.6
@@ -1,17 +1,22 @@
 Unicode support
-    finish byte <-> utf8 and localencoding <-> utf8 conversions 
-    make "$bytestr$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;"
-    add -C switch that sets ${^WIDE_SYSTEM_CALLS}
-    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
@@ -39,21 +44,81 @@ Namespace cleanup
 
 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
@@ -65,10 +130,32 @@ Win32 stuff
     work out DLL versioning
 
 Miscellaneous
-    magic_setisa should be made to update %FIELDS [???]
+    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
+    Unicode collation? http://www.unicode.org/unicode/reports/tr10/
+    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)
 
 Ongoing
     keep filenames 8.3 friendly, where feasible
@@ -78,7 +165,10 @@ Ongoing
 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
+