Quickie documentation of the C UTF-8 API.
[p5sagit/p5-mst-13.2.git] / pod / perltodo.pod
index c6d64bd..f0b1b72 100644 (file)
@@ -54,6 +54,9 @@ Possible options, controlled by the flags:
 - append a "..." to the produced string if the maximum length is exceeded
 - really fancy: print unicode characters as \N{...}
 
+NOTE: pv_display(), pv_uni_display(), sv_uni_display() are doing
+something like the above.
+
 =head2 Overloadable regex assertions
 
 This may or may not be possible with the current regular expression
@@ -61,24 +64,47 @@ 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
+=head2 Unicode
 
-Simon Cozens promises to work on this.
+=over 4
 
-    Collation?     http://www.unicode.org/unicode/reports/tr10/
-    Normalization? http://www.unicode.org/unicode/reports/tr15/
+=item *
+
+Allow for long form of the General Category Properties, e.g
+C<\p{IsOpenPunctuation}>, not just the abbreviated form, e.g.
+C<\p{IsPs}>.
+
+=item *
+
+Allow for the metaproperties: C<XID Start>, C<XID Continue>,
+C<NF*_NO>, C<NF*_MAYBE> (require the DerivedCoreProperties and
+DerviceNormalizationProperties files).
 
-=head2 Unicode case mappings 
+There are also multiple value properties still unimplemented:
+C<Numeric Type>, C<East Asian Width>.
+
+=item *
 
     Case Mappings? http://www.unicode.org/unicode/reports/tr21/
 
-=head2 Unicode regular expression character classes
+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).
+
+=item *
 
 They have some tricks Perl doesn't yet implement like character
 class subtraction.
 
        http://www.unicode.org/unicode/reports/tr18/
 
+=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.
+
 =head2 use Thread for iThreads
 
 Artur Bergman's C<iThreads> module is a start on this, but needs to
@@ -147,7 +173,7 @@ C<[1234567890]> aren't the only numerals any more.
 
 =head2 POSIX Unicode character classes
 
-([=a=] for equivalance classes, [.ch.] for collation.)
+(C<[=a=]> for equivalance classes, C<[.ch.]> for collation.)
 These are dependent on Unicode normalization and collation.
 
 =head2 Factoring out common suffices/prefices in regexps (trie optimization)
@@ -166,14 +192,9 @@ Have a way to introduce user-defined opcodes without the subroutine call
 overhead of an XSUB; the user should be able to create PP code. Simon
 Cozens has some ideas on this.
 
-=head2 spawnvp() on Win32
-
-Win32 has problems spawning processes, particularly when the arguments
-to the child process contain spaces, quotes or tab characters.
-
 =head2 DLL Versioning
 
-Windows needs a way to know what version of a XS or C<libperl> DLL it's
+Windows needs a way to know what version of an XS or C<libperl> DLL it's
 loading.
 
 =head2 Introduce @( and @)
@@ -192,7 +213,7 @@ 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().)
 
-As of Perl 5.6.1 is a Perl macro, Perl_isnan().
+As of Perl 5.6.1, there is a Perl macro, Perl_isnan().
 
 =head2 IV/UV preservation
 
@@ -258,7 +279,7 @@ mark-and-sweep GC implementation.
 
 Alan notes that: The basic idea was to extend the parser token stack
 (C<YYSTYPE>) to include a type field so we knew what sort of thing each
-element of the stack was.  The F<<perly.c> code would then have to be
+element of the stack was.  The F<perly.c> code would then have to be
 postprocessed to record the type of each entry on the stack as it was
 created, and the parser patched so that it could unroll the stack
 properly on error.
@@ -275,7 +296,7 @@ That's to say, C<pack "(sI)40"> would be the same as C<pack "sI"x40>
 =head2 Cross compilation
 
 Make Perl buildable with a cross-compiler. This will play havoc with
-Configure, which needs to how how the target system will respond to
+Configure, which needs to know how the target system will respond to
 its tests; maybe C<microperl> will be a good starting point here.
 (Indeed, Bart Schuller reports that he compiled up C<microperl> for
 the Agenda PDA and it works fine.)  A really big spanner in the works
@@ -301,11 +322,11 @@ Damian Conway is planning to work on this, but it hasn't happened yet.
 
 =head2 Using POSIX calls internally
 
-When faced with a BSD vs. SySV -style interface to some library or
+When faced with a BSD vs. SysV -style interface to some library or
 system function, perl's roots show in that it typically prefers the BSD
 interface (but falls back to the SysV one).  One example is getpgrp().
 Other examples include C<memcpy> vs. C<bcopy>.  There are others, mostly in
-F<<pp_sys.c>.
+F<pp_sys.c>.
 
 Mostly, this item is a suggestion for which way to start a journey into
 an C<#ifdef> forest.  It is not primarily a suggestion to eliminate any of
@@ -323,6 +344,8 @@ has changed. Detecting a change is perhaps the difficult bit.
 
 =head2 All ARGV input should act like E<lt>E<gt>
 
+eg C<read(ARGV, ...)> doesn't currently read across multiple files.
+
 =head2 Support for rerunning debugger
 
 There should be a way of restarting the debugger on demand.
@@ -421,7 +444,7 @@ Look at the "reification" code in C<av.c>
 
 Currently, indirect object syntax bypasses prototype checks.
 
-=head2 Install HMTL
+=head2 Install HTML
 
 HTML versions of the documentation need to be installed by default; a
 call to C<installhtml> from C<installperl> may be all that's necessary.
@@ -488,6 +511,12 @@ Hugo van der Sanden plans to look at this.
 This has been done in places, but needs a thorough code review.
 Also fchdir is available in some platforms.
 
+=head2 Make v-strings overloaded objects
+
+Instead of having to guess whether a string is a v-string and thus
+needs to be displayed with %vd, make v-strings (readonly) objects
+(class "vstring"?) with a stringify overload.
+
 =head1 Vague ideas
 
 Ideas which have been discussed, and which may or may not happen.
@@ -592,11 +621,11 @@ can be found on the CPAN.
 
 =head2 gettimeofday
 
-C<Time::Hires> has been integrated into the core.
+C<Time::HiRes> has been integrated into the core.
 
 =head2 setitimer and getimiter
 
-Adding C<Time::Hires> got us this too.
+Adding C<Time::HiRes> got us this too.
 
 =head2 Testing __DIE__ hook
 
@@ -809,4 +838,24 @@ 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/
+
+=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.
 
+=cut