X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/61e83bc83af51fdbf1a7b0dd6cb63468d199583f..4e34385f1add67f206da4307d1e033b6827d3720:/Todo-5.6 diff --git a/Todo-5.6 b/Todo-5.6 index e06add9..30c7cc0 100644 --- a/Todo-5.6 +++ b/Todo-5.6 @@ -1,10 +1,32 @@ +Unicode support + 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 + - 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;" + 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 - $AUTOLOAD. Hmm. - consistent semantics for exit/die in threads - SvREFCNT_dec(curstack) in threadstart() in Thread.xs - better support for externally created threads - Thread::Pool - spot-check globals like statcache and global GVs for thread-safety + support "use Thread;" under useithreads + add mechanism to: + - create new interpreter in a different thread + - exchange data between interpreters/threads + - share namespaces between interpreters/threads + work out consistent semantics for exit/die in threads + support for externally created threads? + Thread::Pool? Compiler auto-produce executable @@ -16,49 +38,124 @@ Compiler from where newASSIGNOP steals the field) Namespace cleanup - CPP-space: restrict what we export from headers - header-space: move into CORE/perl/ - API-space: begin list of things that constitute public api - -MULTIPLICITY support - complete work on safe recursive interpreters, Cnew()> - revisit extra implicit arg that provides curthread/curinterp context + CPP-space: restrict what we export from headers when !PERL_CORE + header-space: move into CORE/perl/? + API-space: complete the list of things that constitute public api 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 - locales across packages? + deprecate traditional/legacy locales? + How do locales work across packages? + figure out how to support Unicode locales + 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 . 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 figure out how to die() in delayed sighandler - add tests for Thread::Signal + make Thread::Signal work under useithreads Win32 stuff - get PERL_OBJECT building under gcc - get PERL_OBJECT building on non-win32 - automate generation of 'protected' prototypes for CPerlObj - rename new headers to be consistent with the rest - sort out the spawnvp() mess + sort out the spawnvp() mess for system('a','b','c') compatibility work out DLL versioning - style-check Miscellaneous - rename and alter ISA.pm - 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?) - fix pod2html to generate relative URLs (replace with new PodtoHtml?) + 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(), + , (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 @@ -68,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 +