X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperltodo.pod;h=1898b118d40ad4912e18828766bbe42b4d93eff2;hb=17c338f39c13131c1bc175ef38013b54bc98396d;hp=dab73b90c085735ead09a116b56b301975aaee51;hpb=0661e9a4f58f56c330261e7c3fa4dc38e42204b1;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perltodo.pod b/pod/perltodo.pod index dab73b9..1898b11 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -20,15 +20,18 @@ of archives may be found at: C provides this, but the interface could be a lot more straightforward. -=head2 Eliminate need for "use utf8"; +=head2 Autoload bytes.pm -While the C 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 -is being compiled. (To stop Perl trying to autoload the C -pragma...) +When the lexer sees, for instance, C, it should +automatically load the C pragma. -=head2 Create a char *sv_printify(sv, STRLEN *lenp, UV flags) +=head2 Make "\u{XXXX}" et al work + +Danger, Will Robinson! Discussing the semantics of C<"\x{F00}">, +C<"\xF00"> and C<"\U{F00}"> on P5P I 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, @@ -51,17 +54,6 @@ 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{...} -=head2 Autoload byte.pm - -When the lexer sees, for instance, C, it should -automatically load the C pragma. - -=head2 Make "\u{XXXX}" et al work - -Danger, Will Robinson! Discussing the semantics of C<"\x{F00}">, -C<"\xF00"> and C<"\U{F00}"> on P5P I lead to a long and boring -flamewar. - =head2 Overloadable regex assertions This may or may not be possible with the current regular expression @@ -69,23 +61,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}>. -=head2 Unicode case mappings +=item * + +Allow for the metaproperties: C, C, +C, C (require the DerivedCoreProperties and +DerviceNormalizationProperties files). + +There are also multiple value properties still unimplemented: +C, C. + +=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). -They have some tricks Perl doesn't yet implement. +=item * + +They have some tricks Perl doesn't yet implement like character +class subtraction. http://www.unicode.org/unicode/reports/tr18/ +=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. + =head2 use Thread for iThreads Artur Bergman's C module is a start on this, but needs to @@ -173,11 +189,6 @@ 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 DLL it's @@ -282,7 +293,7 @@ That's to say, C would be the same as C =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 will be a good starting point here. (Indeed, Bart Schuller reports that he compiled up C for the Agenda PDA and it works fine.) A really big spanner in the works @@ -290,6 +301,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 @@ -324,10 +341,18 @@ has changed. Detecting a change is perhaps the difficult bit. =head2 All ARGV input should act like EE +eg C doesn't currently read across multiple files. + =head2 Support for rerunning debugger 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 @@ -492,7 +517,7 @@ 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. @@ -781,6 +806,7 @@ Suggesting this on P5P B cause a boring and interminable flamewar. =head2 "class"-based lexicals Use flyweight objects, secure hashes or, dare I say it, pseudo-hashes instead. +(Or whatever will replace pseudohashes in 5.10.) =head2 byteperl @@ -788,18 +814,39 @@ C covers this. =head2 Lazy evaluation / tail recursion removal -C in core gives some of these; tail recursion removal is -done manually, with C. (However, MJD has found that -C introduces a performance penalty, so maybe there should -be a way to do this after all: C is -better.) +C gives first() (a short-circuiting grep); tail recursion +removal is done manually, with C. (However, MJD has +found that C introduces a performance penalty, so maybe +there should be a way to do this after all: C is better.) =head2 Make "use utf8" the default -There is a patch available for this, search p5p archives for -the Subject "[EXPERIMENTAL PATCH] make unicode (utf8) default" -but this would be unacceptable because of backward compatibility: -scripts could not contain B. Also would -introduce a measurable slowdown of at least few percentages since all -regular expression operations would be done in full UTF-8. +Because of backward compatibility this is difficult: scripts could not +contain B (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/ + +=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