X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperltodo.pod;h=0e5d8a74ef6c16d770f3f2dff66716d479b59f8a;hb=d7133549e15d907b18e0c1873e57e635dc9d6424;hp=85027e31e55843544555caef45b82af409f91df3;hpb=f224927c1e379a33cd6d5e0a5d25d0ecb9c9d964;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perltodo.pod b/pod/perltodo.pod index 85027e3..0e5d8a7 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -87,35 +87,60 @@ 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. =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/ + +=head2 Work out exit/die semantics for threads -Artur Bergman's C module is a start on this, but needs to -be more mature. +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: -=head2 make perl_clone optionally clone ops + use threads wait => 0; -So that pseudoforking, mod_perl, iThreads and nvi will work properly -(but not as efficiently) until the regex engine is fixed to be threadsafe. +Do not wait. -=head2 Work out exit/die semantics for threads + 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 @@ -163,17 +188,13 @@ 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. - =head2 Arithmetic on non-Arabic numerals 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 +261,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 +418,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 +550,18 @@ 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?) + =head1 Vague ideas Ideas which have been discussed, and which may or may not happen. @@ -610,6 +637,51 @@ 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, qx, +readdir, readlink, rename, rmdir, stat, symlink, sysopen, system, +truncate, unlink, utime. 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. + +Note that in Windows the -C command line flag already does quite +a bit of the above (but even there the support is not complete: +for example the exec/spawn are not Unicode-aware) by turning on +the so-called "wide API support". + =head1 Recently done things These are things which have been on the todo lists in previous releases @@ -873,27 +945,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.