Document the changes with regards to running of END blocks.
[p5sagit/p5-mst-13.2.git] / pod / perltodo.pod
index 39aa37f..0f4ea63 100644 (file)
@@ -20,15 +20,7 @@ of archives may be found at:
 C<perlio> provides this, but the interface could be a lot more
 straightforward.
 
-=head2 Eliminate need for "use utf8";
-
-While the C<utf8> pragma is autoloaded when necessary, it's still needed
-for things like Unicode characters in a source file. The UTF8 hint can
-always be set to true, but it needs to be set to false when F<utf8.pm>
-is being compiled. (To stop Perl trying to autoload the C<utf8>
-pragma...)
-
-=head2 Autoload byte.pm
+=head2 Autoload bytes.pm
 
 When the lexer sees, for instance, C<bytes::length>, it should
 automatically load the C<bytes> pragma.
@@ -39,6 +31,29 @@ Danger, Will Robinson! Discussing the semantics of C<"\x{F00}">,
 C<"\xF00"> and C<"\U{F00}"> on P5P I<will> lead to a long and boring
 flamewar.
 
+=head2 Create a char *sv_pvprintify(sv, STRLEN *lenp, UV flags)
+
+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()
+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.
+
+Possible options, controlled by the flags:
+- whitespace (other than ' ' of isPRINT()) printed as-is
+- use isPRINT_LC() instead of isPRINT()
+- print control characters like this: "\cA"
+- print control characters like this: "^A"
+- non-PRINTables printed as '.' instead of \xHH
+- use \OOO instead of \xHH
+- use the C/Perl-metacharacters like \n, \t
+- have a maximum length for the produced string (read it from *lenp)
+- append a "..." to the produced string if the maximum length is exceeded
+- really fancy: print unicode characters as \N{...}
+
 =head2 Overloadable regex assertions
 
 This may or may not be possible with the current regular expression
@@ -46,20 +61,14 @@ engine. The idea is that, for instance, C<\b> needs to be
 algorithmically computed if you're dealing with Thai text. Hence, the
 B<\b> assertion wants to be overloaded by a function.
 
-=head2 Unicode collation and normalization
-
-Simon Cozens promises to work on this.
-
-    Collation?     http://www.unicode.org/unicode/reports/tr10/
-    Normalization? http://www.unicode.org/unicode/reports/tr15/
-
 =head2 Unicode case mappings 
 
     Case Mappings? http://www.unicode.org/unicode/reports/tr21/
 
 =head2 Unicode regular expression character classes
 
-They have some tricks Perl doesn't yet implement.
+They have some tricks Perl doesn't yet implement like character
+class subtraction.
 
        http://www.unicode.org/unicode/reports/tr18/
 
@@ -68,6 +77,11 @@ They have some tricks Perl doesn't yet implement.
 Artur Bergman's C<iThreads> module is a start on this, but needs to
 be more mature.
 
+=head2 make perl_clone optionally clone ops
+
+So that pseudoforking, mod_perl, iThreads and nvi will work properly
+(but not as efficiently) until the regex engine is fixed to be threadsafe.
+
 =head2 Work out exit/die semantics for threads
 
 =head2 Typed lexicals for compiler
@@ -262,6 +276,12 @@ is the bootstrapping build process of Perl: if the filesystem the
 target systems sees is not the same what the build host sees, various
 input, output, and (Perl) library files need to be copied back and forth.
 
+As of 5.8.0 Configure mostly works for cross-compilation
+(used successfully for iPAQ Linux), miniperl gets built,
+but then building DynaLoader (and other extensions) fails
+since MakeMaker knows nothing of cross-compilation.
+(See INSTALL/Cross-compilation for the state of things.)
+
 =head2 Perl preprocessor / macros
 
 Source filters help with this, but do not get us all the way. For
@@ -300,6 +320,12 @@ has changed. Detecting a change is perhaps the difficult bit.
 
 There should be a way of restarting the debugger on demand.
 
+=head2 Test Suite for the Debugger
+
+The debugger is a complex piece of software and fixing something
+here may inadvertently break something else over there.  To tame
+this chaotic behaviour, a test suite is necessary. 
+
 =head2 my sub foo { }
 
 The basic principle is sound, but there are problems with the semantics
@@ -418,9 +444,9 @@ There are a few suggestions for what to do with C<perldoc>: maybe a
 full-text search, an index function, locating pages on a particular
 high-level subject, and so on.
 
-=head2 Install .3p man pages
+=head2 Install .3p manpages
 
-This is a bone of contention; we can create C<.3p> man pages for each
+This is a bone of contention; we can create C<.3p> manpages for each
 built-in function, but should we install them by default? Tcl does this,
 and it clutters up C<apropos>.
 
@@ -429,6 +455,7 @@ and it clutters up C<apropos>.
 Simon Cozens promises to do this before he gets old.
 
 =head2 Update POSIX.pm for 1003.1-2
+
 =head2 Retargetable installation
 
 Allow C<@INC> to be changed after Perl is built.
@@ -463,12 +490,14 @@ Ideas which have been discussed, and which may or may not happen.
 It's unclear what this should do or how to do it without breaking old
 code.
 
-=head2 Make tr/// return histogram
+=head2 Make tr/// return histogram of characters in list context
 
 There is a patch for this, but it may require Unicodification.
 
 =head2 Compile to real threaded code
+
 =head2 Structured types
+
 =head2 Modifiable $1 et al.
 
     ($x = "elephant") =~ /e(ph)/;
@@ -690,11 +719,13 @@ This would break old code; use C<do{{ }}> instead.
 Not needed now we have lexical IO handles.
 
 =head2 format BOTTOM
+
 =head2 report HANDLE
 
 Damian Conway's text formatting modules seem to be the Way To Go.
 
 =head2 Generalised want()/caller())
+
 =head2 Named prototypes
 
 These both seem to be delayed until Perl 6.
@@ -747,7 +778,8 @@ Suggesting this on P5P B<will> cause a boring and interminable flamewar.
 
 =head2 "class"-based lexicals
 
-Use flyweight objects, secure hashes or, dare I say it, pseudohashes instead.
+Use flyweight objects, secure hashes or, dare I say it, pseudo-hashes instead.
+(Or whatever will replace pseudohashes in 5.10.)
 
 =head2 byteperl
 
@@ -755,8 +787,27 @@ C<ByteLoader> covers this.
 
 =head2 Lazy evaluation / tail recursion removal
 
-C<List::Util> in core gives some of these; tail recursion removal is
-done manually, with C<goto &whoami;>. (However, MJD has found that
-C<goto &whoami> introduces a performance penalty, so maybe there should
-be a way to do this after all: C<sub foo {START: ... goto START;> is
-better.)
+C<List::Util> gives first() (a short-circuiting grep); tail recursion
+removal is done manually, with C<goto &whoami;>. (However, MJD has
+found that C<goto &whoami> introduces a performance penalty, so maybe
+there should be a way to do this after all: C<sub foo {START: ... goto
+START;> is better.)
+
+=head2 Make "use utf8" the default
+
+Because of backward compatibility this is difficult: scripts could not
+contain B<any legacy eight-bit data> (like Latin-1) anymore, even in
+string literals or pod.  Also would introduce a measurable slowdown of
+at least few percentages since all regular expression operations would
+be done in full UTF-8.  But if you want to try this, add
+-DUSE_UTF8_SCRIPTS to your compilation flags.
+
+=head2 Unicode collation and normalization
+
+The Unicode::Collate and Unicode::Normalize modules
+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/
+
+=cut