X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperltodo.pod;h=e92d4742454db18f2dcaeb70171ac91ff80ff5f7;hb=56da5a46eac515b5a165aaf05cb06f7bcdfd8e67;hp=eea756b64106c0b2c50a1c97c99c5d9b02915f52;hpb=666f95b95a2f6347f7b7bbc8951144df2db05479;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perltodo.pod b/pod/perltodo.pod index eea756b..e92d474 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -37,7 +37,7 @@ For displaying PVs with control characters, embedded nulls, and Unicode. This would be useful for printing warnings, or data and regex dumping, not_a_number(), and so on. -Requirements: should handle both byte and UTF8 strings. isPRINT() +Requirements: should handle both byte and UTF-8 strings. isPRINT() characters printed as-is, character less than 256 as \xHH, Unicode characters as \x{HHH}. Don't assume ASCII-like, either, get somebody on EBCDIC to test the output. @@ -87,35 +87,78 @@ C, C. Case Mappings? http://www.unicode.org/unicode/reports/tr21/ -lc(), uc(), lcfirst(), and ucfirst() work only for some of the -simplest cases, where the mapping goes from a single Unicode character -to another single Unicode character. See lib/unicore/SpecCase.txt -(and CaseFold.txt). +Mostly implemented (all of 1:1, 1:N, N:1), only the "final sigma" +and locale-specific rules of SpecCase are not implemented. =item * -They have some tricks Perl doesn't yet implement like character -class subtraction. +UTF-8 identifier names should probably be canonicalized: NFC? - http://www.unicode.org/unicode/reports/tr18/ +=item * + +UTF-8 in package names and sub names? The first is problematic +because of the mapping to pathnames, ditto for the second one if +one does autosplitting, for example. Some of this works already +in 5.8.0, but essentially it is unsupported. Constructs to consider, +at the very least: + + use utf8; + package UnicodePackage; + sub new { bless {}, shift }; + sub UnicodeMethod1 { ... $_[0]->UnicodeMethod2(...) ... } + sub UnicodeMethod2 { ... } # in here caller(0) should contain Unicode + ... + package main; + my $x = UnicodePackage->new; + print ref $x, "\n"; # should be Unicode + $x->UnicodeMethod1(...); + my $y = UnicodeMethod3 UnicodePackage ...; + +In the above all I contain (identifier-worthy) characters +beyond the code point 255, for example 256. Wherever package/class or +subroutine names can be returned needs to be checked for Unicodeness. =back See L for what's there and what's missing. Almost all of Levels 2 and 3 is missing, and as of 5.8.0 not even all of Level 1 is there. +They have some tricks Perl doesn't yet implement, such as character +class subtraction. -=head2 use Thread for iThreads + http://www.unicode.org/unicode/reports/tr18/ -Artur Bergman's C module is a start on this, but needs to -be more mature. +=head2 Work out exit/die semantics for threads -=head2 make perl_clone optionally clone ops +There are some suggestions to use for example something like this: +default to "(thread exiting first will) wait for the other threads +until up to 60 seconds". Other possibilities: -So that pseudoforking, mod_perl, iThreads and nvi will work properly -(but not as efficiently) until the regex engine is fixed to be threadsafe. + use threads wait => 0; -=head2 Work out exit/die semantics for threads +Do not wait. + + use threads wait_for => 10; + +Wait up to 10 seconds. + + use threads wait_for => -1; + +Wait for ever. + +http://archive.develooper.com/perl5-porters@perl.org/msg79618.html + +=head2 Better support for nonpreemptive threading systems like GNU pth + +To better support nonpreemptive threading systems, perhaps some of the +blocking functions internally in Perl should do a yield() before a +blocking call. (Now certain threads tests ({basic,list,thread.t}) +simply do a yield() before they sleep() to give nonpreemptive thread +implementations a chance). + +In some cases, like the GNU pth, which has replacement functions that +are nonblocking (pth_select instead of select), maybe Perl should be +using them instead when built for threading. =head2 Typed lexicals for compiler @@ -161,11 +204,7 @@ Floating point formatting is still causing some weird test failures. Locales and Unicode interact with each other in unpleasant ways. One possible solution would be to adopt/support ICU: - http://oss.software.ibm.com/developerworks/opensource/icu/project/ - -=head2 Thread-safe regexes - -The regular expression engine is currently non-threadsafe. + http://oss.software.ibm.com/icu/index.html =head2 Arithmetic on non-Arabic numerals @@ -173,7 +212,7 @@ C<[1234567890]> aren't the only numerals any more. =head2 POSIX Unicode character classes -(C<[=a=]> for equivalance classes, C<[.ch.]> for collation.) +(C<[=a=]> for equivalence classes, C<[.ch.]> for collation.) These are dependent on Unicode normalization and collation. =head2 Factoring out common suffices/prefices in regexps (trie optimization) @@ -240,7 +279,7 @@ C<&>, C, C and C. =head2 Replace pod2html with something using Pod::Parser The CPAN module C may be a more suitable basis for a -C convertor; the current one duplicates the functionality +C converter; the current one duplicates the functionality abstracted in C, which makes updating the POD language difficult. @@ -397,12 +436,6 @@ This is to speed up C already gives us a way of saving compiled regexps, but it should be done automatically. -=head2 Re-entrant functions - -Add configure probes for C<_r> forms of system calls and fit them to the -core. Unfortunately, calling conventions for these functions and not -standardised. - =head2 Cross-compilation support Bart Schuller reports that using C and a cross-compiler, he @@ -535,6 +568,25 @@ even with the same keys. This should be allowed if the new keyset is a subset of the old keyset. May require more extra code than we'd like in pp_aassign. +=head2 Should overload be inheritable? + +Should overload be 'contagious' through @ISA so that derived classes +would inherit their base classes' overload definitions? What to do +in case of overload conflicts? + +=head2 Taint rethink + +Should taint be stopped from affecting control flow, if ($tainted)? +Should tainted symbolic method calls and subref calls be stopped? +(Look at Ruby's $SAFE levels for inspiration?) + +=head2 Perform correctly when XSUBs call subroutines that exit via goto(LABEL) and friends + +If an XSUB calls a subroutine that exits using goto(LABEL), +last(LABEL) or next(LABEL), then the interpreter will very probably crash +with a segfault because the execution resumes in the XSUB instead of +never returning there. + =head1 Vague ideas Ideas which have been discussed, and which may or may not happen. @@ -610,6 +662,54 @@ modules have tests. The code we ship with Perl should look like good Perl 5. +=head2 Create debugging macros + +Debugging macros (like printsv, dump) can make debugging perl inside a +C debugger much easier. A good set for gdb comes with mod_perl. +Something similar should be distributed with perl. + +The proper way to do this is to use and extend Devel::DebugInit. +Devel::DebugInit also needs to be extended to support threads. + +See p5p archives for late May/early June 2001 for a recent discussion +on this topic. + +=head2 truncate to the people + +One can emulate ftruncate() using F_FREESP and F_CHSIZ fcntls +(see the UNIX FAQ for details). This needs to go somewhere near +pp_sys.c:pp_truncate(). + +One can emulate truncate() easily if one has ftruncate(). +This emulation should also go near pp_sys.pp_truncate(). + +=head2 Unicode in Filenames + +chdir, chmod, chown, chroot, exec, glob, link, lstat, mkdir, open, +opendir, qx, readdir, readlink, rename, rmdir, stat, symlink, sysopen, +system, truncate, unlink, utime, -X. All these could potentially accept +Unicode filenames either as input or output (and in the case of system +and qx Unicode in general, as input or output to/from the shell). +Whether a filesystem - an operating system pair understands Unicode in +filenames varies. + +Known combinations that have some level of understanding include +Microsoft NTFS, Apple HFS+ (In Mac OS 9 and X) and Apple UFS (in Mac +OS X), NFS v4 is rumored to be Unicode, and of course Plan 9. How to +create Unicode filenames, what forms of Unicode are accepted and used +(UCS-2, UTF-16, UTF-8), what (if any) is the normalization form used, +and so on, varies. Finding the right level of interfacing to Perl +requires some thought. Remember that an OS does not implicate a +filesystem. + +(The Windows -C command flag "wide API support" has been at least +temporarily retired in 5.8.1, and the -C has been repurposed, see +L.) + +=head1 Unicode in %ENV + +Currently the %ENV entries are always byte strings. + =head1 Recently done things These are things which have been on the todo lists in previous releases @@ -706,7 +806,7 @@ Benjamin Sugars has done this. Nick Ing-Simmons' C supports an C IO method. -=head2 Byte to/from UTF8 and UTF8 to/from local conversion +=head2 Byte to/from UTF-8 and UTF-8 to/from local conversion C provides this. @@ -716,11 +816,12 @@ Added in 5.7.1 =head2 Mailing list archives -http://lists.perl.org/, http://archive.develooper.com/ +http://lists.perl.org/ , http://archive.develooper.com/ =head2 Bug tracking -Richard Foley has written the bug tracking system at http://bugs.perl.org/ +Since 5.8.0 perl uses the RT bug tracking system from Jesse Vincent, +implemented by Robert Spier at http://bugs.perl.org/ =head2 Integrate MacPerl @@ -829,7 +930,7 @@ Use C. =head2 man for perl -See the Perl Power Tools. (http://language.perl.com/ppt/) +See the Perl Power Tools. ( http://language.perl.com/ppt/ ) =head2 my $Package::variable @@ -873,27 +974,6 @@ by SADAHIRO Tomoyuki have been included since 5.8.0. Collation? http://www.unicode.org/unicode/reports/tr10/ Normalization? http://www.unicode.org/unicode/reports/tr15/ -=head2 Create debugging macros - -Debugging macros (like printsv, dump) can make debugging perl inside a -C debugger much easier. A good set for gdb comes with mod_perl. -Something similar should be distributed with perl. - -The proper way to do this is to use and extend Devel::DebugInit. -Devel::DebugInit also needs to be extended to support threads. - -See p5p archives for late May/early June 2001 for a recent discussion -on this topic. - -=head2 truncate to the people - -One can emulate ftruncate() using F_FREESP and F_CHSIZ fcntls -(see the UNIX FAQ for details). This needs to go somewhere near -pp_sys.c:pp_truncate(). - -One can emulate truncate() easily if one has ftruncate(). -This emulation should also go near pp_sys.pp_truncate(). - =head2 pack/unpack tutorial Wolfgang Laun finished what Simon Cozens started.