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 *
-UTF-8 identifier names should probably be canonized: NFC?
+UTF-8 identifier names should probably be canonicalized: NFC?
=item *
UTF-8 in package names and sub names? The first is problematic
-because of the mapping to pathnames, ditto for the second one is
-one does autosplitting, for example.
+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<UnicodeXxx> 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<perlunicode/UNICODE REGULAR EXPRESSION SUPPORT LEVEL> 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 like character
+They have some tricks Perl doesn't yet implement, such as character
class subtraction.
http://www.unicode.org/unicode/reports/tr18/
-=head2 use Thread for iThreads
+=head2 Work out exit/die semantics for threads
-Artur Bergman's C<iThreads> 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
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)
=head2 Replace pod2html with something using Pod::Parser
The CPAN module C<Marek::Pod::Html> may be a more suitable basis for a
-C<pod2html> convertor; the current one duplicates the functionality
+C<pod2html> converter; the current one duplicates the functionality
abstracted in C<Pod::Parser>, which makes updating the POD language
difficult.
C<qr//> 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<microperl> and a cross-compiler, he
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.
=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.
+chdir, chmod, chown, chroot, exec, glob, link, lstat, mkdir, open,
+opendir, 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