From: Gurusamy Sarathy Date: Fri, 12 Feb 1999 09:37:37 +0000 (+0000) Subject: add perltodo.pod X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e50bb9a1f1718314efa58a6839f72fc1aae7638e;p=p5sagit%2Fp5-mst-13.2.git add perltodo.pod p4raw-id: //depot/perl@2887 --- diff --git a/MANIFEST b/MANIFEST index 344c581..b3ff728 100644 --- a/MANIFEST +++ b/MANIFEST @@ -969,6 +969,7 @@ pod/perlsyn.pod Syntax info pod/perlthrtut.pod Threads tutorial pod/perltie.pod Tieing an object class into a simple variable pod/perltoc.pod Table of Contents info +pod/perltodo.pod Todo list explained pod/perltoot.pod Tom's object-oriented tutorial pod/perltrap.pod Trap info pod/perlvar.pod Variable info diff --git a/Todo b/Todo index 3fd0845..ca5cbaf 100644 --- a/Todo +++ b/Todo @@ -32,7 +32,6 @@ Possible pragmas Optimizations constant function cache switch structures - eval qw() at compile time foreach(reverse...) Set KEEP on constant split Cache eval tree (unless lexical outer scope used (mark in &compiling?)) diff --git a/pod/Makefile b/pod/Makefile index f971697..77a181e 100644 --- a/pod/Makefile +++ b/pod/Makefile @@ -16,6 +16,8 @@ REALPERL = ../perl POD = \ perl.pod \ perldelta.pod \ + perl5004delta.pod \ + perl5005delta.pod \ perldata.pod \ perlsyn.pod \ perlop.pod \ @@ -54,6 +56,8 @@ POD = \ perlxstut.pod \ perlguts.pod \ perlcall.pod \ + perltodo.pod \ + perlhist.pod \ perlfaq.pod \ perlfaq1.pod \ perlfaq2.pod \ @@ -69,6 +73,8 @@ POD = \ MAN = \ perl.man \ perldelta.man \ + perl5004delta.man \ + perl5005delta.man \ perldata.man \ perlsyn.man \ perlop.man \ @@ -107,6 +113,8 @@ MAN = \ perlxstut.man \ perlguts.man \ perlcall.man \ + perltodo.man \ + perlhist.man \ perlfaq.man \ perlfaq1.man \ perlfaq2.man \ @@ -122,6 +130,8 @@ MAN = \ HTML = \ perl.html \ perldelta.html \ + perl5004delta.html \ + perl5005delta.html \ perldata.html \ perlsyn.html \ perlop.html \ @@ -160,6 +170,8 @@ HTML = \ perlxstut.html \ perlguts.html \ perlcall.html \ + perltodo.html \ + perlhist.html \ perlfaq.html \ perlfaq1.html \ perlfaq2.html \ @@ -175,6 +187,8 @@ HTML = \ TEX = \ perl.tex \ perldelta.tex \ + perl5004delta.tex \ + perl5005delta.tex \ perldata.tex \ perlsyn.tex \ perlop.tex \ @@ -213,6 +227,8 @@ TEX = \ perlxstut.tex \ perlguts.tex \ perlcall.tex \ + perltodo.tex \ + perlhist.tex \ perlfaq.tex \ perlfaq1.tex \ perlfaq2.tex \ diff --git a/pod/perl.pod b/pod/perl.pod index 79cfff7..ecdaac7 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -34,7 +34,6 @@ of sections: perlopentut Perl open() tutorial perlvar Perl predefined variables perlsub Perl subroutines - perlopentut Perl opening things tutorial perlmod Perl modules: how they work perlmodlib Perl modules: how to write and use perlmodinstall Perl modules: how to install from CPAN @@ -69,6 +68,7 @@ of sections: perlguts Perl internal functions for those doing extensions perlcall Perl calling conventions from C + perltodo Perl things to do perlhist Perl history records (If you're intending to read these straight through for the first time, diff --git a/pod/perltodo.pod b/pod/perltodo.pod new file mode 100644 index 0000000..fd2c244 --- /dev/null +++ b/pod/perltodo.pod @@ -0,0 +1,925 @@ +=head1 Perl TO-DO List + +This is a list of wishes for Perl. It is maintained by Nathan +Torkington for the Perl porters. Send updates to +I. If you want to work on any of these +projects, be sure to check the perl5-porters archives for past ideas, +flames, and propaganda. This will save you time and also prevent you +from implementing something that Larry has already vetoed. One set +of archives may be found at: + + http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ + + +=head1 Infrastructure + +=head2 Mailing list archives + +Chaim suggests contacting egroup and asking them to archive the other +perl.org mailing lists. Probably not advocacy, but definitely +perl6-porters, etc. + +=head2 Bug tracking system + +Richard Foley I is writing one. We looked at +several, like gnats and the Debian system, but at the time we +investigated them, none met our needs. Since then, Jitterbug has +matured, and may be worth reinvestigation. + +The system we've developed will eventually be recipient of perlbug +mail. New bugs are entered into a mysql database, and sent on to +perl5-porters with the subject line rewritten to include a "ticket +number" (unique ID for the new bug). If the incoming message already +had a ticket number in the subject line, then the message is logged +against that bug. There is a separate email interface (not forwarding +to p5p) that permits porters to claim, categorize, and close tickets. + +The next desire is a web interface. It is hoped that code can be +reused between the mail and the web interfaces. + +The current delay in implementation is caused by perl.org lockups. +One suspect is the mail handling system, possibly going into loops. + +We're probably going to need a bugmaster, someone who will look at +every new "bug" and kill those that we already know about, those +that are not bugs at all, etc. + +=head2 Regression Tests + +The test suite for Perl serves two needs: ensuring features work, and +ensuring old bugs have not been reintroduced. Both need work. + +Brent LaVelle (lavelle@metronet.com) has stepped forward to work on +performance tests and improving the size of the test suite. + +=over 4 + +=item Coverage + +Do the tests that come with Perl exercise every line (or every block, +or ...) of the Perl interpreter, and if not then how can we make them +do so? + +=item Regression + +No bug fixes should be made without a corresponding testsuite addition. +This needs a dedicated enforcer, as the current pumpking is either too +lazy or too stupid or both and lets enforcement wander all over the +map. :-) + +=item __DIE__ + +Tests that fail need to be of a form that can be readily mailed +to perlbug and diagnosed with minimal back-and-forth's to determine +which test failed, due to what cause, etc. + +=item suidperl + +We need regression/sanity tests for suidperl + +=item The 25% slowdown from perl4 to perl5 + +This value may or may not be accurate, but it certainly is +eye-catching. For some things perl5 is faster than perl4, but often +the reliability and extensability have come at a cost of speed. The +benchmark suite that Gisle released earlier has been hailed as both a +fantastic solution and as a source of entirely meaningless figures. +Do we need to test "real applications"? Can you do so? Anyone have +machines to dedicate to the task? Identify the things that have grown +slower, and see if there's a way to make them faster. + +=back + +=head2 Filenames + +Make filenames in the distribution and in the standard module set +be 8.3 friendly where feasible. Good luck changing the standard +modules, though. B. + +=head1 Configure + +Andy Dougherty maintain(ed|s) a list of "todo" items for the configure +that comes with Perl. See Porting/pumpkin.pod in the latest +source release. + +=head2 Install HTML + +Have "make install" give you the option to install HTML as well. This +would be part of Configure. Andy Wardley (certified Perl studmuffin) +will look into the current problems of HTML installation--is +'installhtml' preventing this from happening cleanly, or is pod2html +the problem? If the latter, Brad Appleton's pod work may fix the +problem for free. + +=head1 Perl Language + +=head2 our ($var) + +Declare global variables (lexically or otherwise). + +=head2 64-bit Perl + +Verify complete 64 bit support so that the value of sysseek, or C<-s>, or +stat(), or tell can fit into a perl number without losing precision. +Work with the perl-64bit mailing list on perl.org. + +=head2 Figure a way out of $^(capital letter) + +Figure out a clean way to extend $^(capital letter) beyond +the 26 alphabets. (${^WORD} maybe?) + +=head2 Prototypes + +=over 4 + +=item Named prototypes + +Add proper named prototypes that actually work usefully. + +=item Indirect objects + +Fix prototype bug that forgets indirect objects. + +=item Method calls + +Prototypes for method calls. + +=item Context + +Return context prototype declarations. + +=item Scoped subs + +lexically-scoped subs, e.g. my sub + +=back + +=head2 Built-in globbing + +Currently the C*.cE> syntax calls the c shell. This causes +problems on sites without csh, systems where fork() is expensive, and +setuid environments. Decide between Glob::BSD and File::KGlob, move +it into the core, and make Perl use it for globbing. Ben Holzman and +Tye McQueen have claimed the pumpkin for this. + +=head2 Proper tied array support + +This was B in 5.005 by Nick Ing-Simmons. + +=head1 Perl Internals + +=head2 magic_setisa + +C should be made to update %FIELDS [???] + +=head2 Foreign lines + +Perl should be more generous in accepting foreign line terminations. +Mostly B in 5.005. + +=head2 Garbage Collection + +There was talk of a mark-and-sweep garbage collector at TPC2, but the +(to users) unpredictable nature of its behaviour put some off. +Sarathy, I believe, did the work. Here's what he has to say: + +Yeah, I hope to implement it someday too. The points that were +raised in TPC2 were all to do with calling DESTROY() methods, but +I think we can accomodate that by extending bless() to stash +extra information for objects so we track their lifetime accurately +for those that want their DESTROY() to be predictable (this will be +a speed hit, naturally, and will therefore be optional, naturally. :) + +[N.B. Don't even ask me about this now! When I have the time to +write a cogent summary, I'll post it.] + +=head2 Reliable signals + +Sarathy and Dan Sugalski are working on this. Chip posted a patch +earlier, but it was not accepted into 5.005. The issue is tricky, +because it has the potential to greatly slow down the core. + +There are at least three things to consider: + +=over 4 + +=item Alternate runops() for signal despatch + +Sarathy and Dan are discussed this on perl5-porters. + +=item Figure out how to die() in delayed sighandler + +=item Add tests for Thread::Signal + +=item Automatic tests against CPAN + +Is there some way to automatically build all/most of CPAN with +the new Perl and check that the modules there pass all the tests? + +=back + +=head2 Interpolated regex performance bugs + + while (<>) { + $found = 0; + foreach $pat (@patterns) { + $found++ if /$pat/o; + } + print if $found; + } + +The qr// syntax added in 5.005 has solved this problem, but +it needs more thorough documentation. + +=head2 Memory leaks from failed eval/regcomp + +The only known memory leaks in Perl are in failed code or regexp +compilation. Fix this. Hugo Van Der Sanden will attempt this but +won't have tuits until January 1999. + +=head2 Make XS easier to use + +There was interest in SWIG from porters, but nothing has happened +lately. + +=head2 Make embedded Perl easier to use + +This is probably difficult for the same reasons that "XS For Dummies" +will be difficult. + +=head2 Namespace cleanup + + symbol-space: "pl_" prefix for all global vars + "Perl_" prefix for all functions + +B. + + CPP-space: restrict what we export from headers + stop malloc()/free() pollution unless asked + header-space: move into CORE/perl/ + API-space: begin list of things that constitute public api + +=head2 MULTIPLICITY + +Complete work on safe recursive interpreters Cnew()>. +Sarathy says that a reference implementation exists. + +=head2 MacPerl + +Chris Nandor and Matthias Neeracher are working on better integrating +MacPerl into the Perl distribution. + +=head1 Documentation + +There's a lot of documentation that comes with Perl. The quantity of +documentation makes it difficult for users to know which section of +which manpage to read in order to solve their problem. Tom +Christiansen has done much of the documentation work in the past. + +=head2 A clear division into tutorial and reference + +Some manpages (e.g., perltoot and perlreftut) clearly set out to +educate the reader about a subject. Other manpages (e.g., perlsub) +are references for which there is no tutorial, or are references with +a slight tutorial bent. If things are either tutorial or reference, +then the reader knows which manpage to read to learn about a subject, +and which manpage to read to learn all about an aspect of that +subject. Part of the solution to this is: + +=head2 Remove the artificial distinction between operators and functions + +History shows us that users, and often porters, aren't clear on the +operator-function distinction. The present split in reference +material between perlfunc and perlop hinders user navigation. Given +that perlfunc is by far the larger of the two, move operator reference +into perlfunc. + +=head2 More tutorials + +More documents of a tutorial nature could help. Here are some +candidates: + +=over 4 + +=item Regular expressions + +Robin Berjon (r.berjon@ltconsulting.net) has volunteered. + +=item I/O + +Mark-Jason Dominus (mjd@plover.com) has an outline for perliotut. + +=item pack/unpack + +This is badly needed. There has been some discussion on the +subject on perl5-porters. + +=item Debugging + +Ronald Kimball (rjk@linguist.dartmouth.edu) has volunteered. + +=head2 Include a search tool + +perldoc should be able to 'grep' fulltext indices of installed POD +files. This would let people say: + + perldoc -find printing numbers with commas + +and get back the perlfaq entry on 'commify'. + +This solution, however, requires documentation to contain the keywords +the user is searching for. Even when the users know what they're +looking for, often they can't spell it. + +=head2 Include a locate tool + +perldoc should be able to help people find the manpages on a +particular high-level subject: + + perldoc -find web + +would tell them manpages, web pages, and books with material on web +programming. Similarly C, C and so on. + +We need something in the vicinity of: + + % perl -help random stuff + No documentation for perl function `random stuff' found + The following entry in perlfunc.pod matches /random/a: + =item rand EXPR + + =item rand + + Returns a random fractional number greater than or equal to C<0> and less + than the value of EXPR. (EXPR should be positive.) If EXPR is + omitted, the value C<1> is used. Automatically calls C unless + C has already been called. See also C. + + (Note: If your rand function consistently returns numbers that are too + large or too small, then your version of Perl was probably compiled + with the wrong number of RANDBITS.) + The following pod pages seem to have /stuff/a: + perlfunc.pod (7 hits) + perlfaq7.pod (6 hits) + perlmod.pod (4 hits) + perlsyn.pod (3 hits) + perlfaq8.pod (2 hits) + perlipc.pod (2 hits) + perl5004delta.pod (1 hit) + perl5005delta.pod (1 hit) + perlcall.pod (1 hit) + perldelta.pod (1 hit) + perlfaq3.pod (1 hit) + perlfaq5.pod (1 hit) + perlhist.pod (1 hit) + perlref.pod (1 hit) + perltoc.pod (1 hit) + perltrap.pod (1 hit) + Proceed to open perlfunc.pod? [y] n + Do you want to speak perl interactively? [y] n + Should I dial 911? [y] n + Do you need psychiatric help? [y] y + Hi, what bothers you today? + A Python programmer in the next cubby is driving me nuts! + Hmm, thats fixable. Just [rest censored] + +=head2 Separate function manpages by default + +Perl should install 'manpages' for every function/operator into the +3pl or 3p manual section. By default. The splitman program in the +Perl source distribution does the work of turning big perlfunc into +little 3p pages. + +=head2 Users can't find the manpages + +Make C tell users what they need to add to their .login or +.cshrc to set their MANPATH correctly. + +=head2 Install ALL Documentation + +Make the standard documentation kit include the VMS, OS/2, Win32, +Threads, etc information. + +=head2 Outstanding issues to be documented + +Tom has a list of 5.005_5* features or changes that require +documentation. + +Create one document that coherently explains the delta between the +last camel release and the current release. perldelta was supposed +to be that, but no longer. The things in perldelta never seemed to +get placed in the right places in the real manpages, either. This +needs work. + +=head2 Replace man with a perl program + +Can we reimplement man in Perl? Tom has a start. I believe some of +the Linux systems distribute a manalike. Alternatively, build on +perldoc to remove the unfeatures like "is slow" and "has no apropos". + +=head2 Unicode tutorial + +We could use more work on helping people understand Perl's new +Unicode support that Larry has created. + +=head2 Explain tool + +Given a piece of Perl code, say what it does. B::Deparse is doing +this. B. + +=head1 Modules + +=head2 Update the POSIX extension to conform with the POSIX 1003.1 Edition 2 + +The current state of the POSIX extension is as of Edition 1, 1991, +whereas the Edition 2 came out in 1996. ISO/IEC 9945:1-1996(E), +ANSI/IEEE Std 1003.1, 1996 Edition. ISBN 1-55937-573-6. The updates +were legion: threads, IPC, and real time extensions. + +=head2 Module versions + +Automate the checking of versions in the standard distribution so +it's easy for a pumpking to check whether CPAN has a newer version +that we should be including? + +=head2 New modules + +Which modules should be added to the standard distribution? This ties +in with the SDK discussed on the perl-sdk list at perl.org. + +=head2 ISA.pm + +Rename and alter ISA.pm. B. It is now base.pm. + +=head2 Profiler + +Make the profiler (Devel::DProf) part of the standard release, and +document it well. + +=head2 Tie Modules + +=over 4 + +=item VecArray + +Implement array using vec(). Nathan Torkington has working code to +do this. + +=item SubstrArray + +Implement array using substr() + +=item VirtualArray + +Implement array using a file + +=item ShiftSplice + +Defines shift et al in terms of splice method + +=back + +=head2 Exceptions + +Figure out a coherent exception model, and implement it. Graham's +Error.pm is an OO module that (I believe) requires core support. +Are objects the right basis for this? Can it be done using the same +text that the rest of Perl works on? The builtins will need to agree +on a system. + +=head2 Procedural options + +Support procedural interfaces for the common cases of Perl's +gratuitously OOO modules. Tom objects to "use IO::File" reading many +thousands of lines of code. + +=head2 RPC + +Write a module for transparent, portable remote procedure calls. (Not +core). This touches on the CORBA and ILU work. + +=head2 y2k localtime/gmtime + +Write a module, Y2k::Catch, which overloads localtime and gmtime's +returned year value and catches "bad" attempts to use it. + +=head2 Export File::Find variables + +Make File::Find export C<$name> etc manually, at least if asked to. + +=head2 Ioctl + +Finish a proper Ioctl module. + +=head2 Debugger attach/detach + +Permit a user to debug an already-running program. + +=head2 Regular Expression debugger + +Create a visual profiler/debugger tool that stepped you through the +execution of a regular expression point by point. Ilya has a module +to color-code and display regular expression parses and executions. +There's something at http://tkworld.org/ that might be a good start, +it's a Tk/Tcl RE wizard, that builds regexen of many flavours. + +=head2 Alternative RE Syntax + +Make an alternative regular expression syntax that is accessed through +a module. For instance, + + use RE; + $re = start_of_line() + ->literal("1998/10/08") + ->optional( whitespace() ) + ->literal("[") + ->remember( many( or( "-", digit() ) ) ); + + if (/$re/) { + print "time is $1\n"; + } + +Newbies to regular expressions typically only use a subset of the full +language. Perhaps you wouldn't have to implement the full feature set. + +=head2 Bundled modules + +Nicholas Clark (nick@flirble.org) had a patch for storing modules in +zipped format. This needs exploring and concluding. + +=head2 Expect + +Adopt IO::Tty, make it as portable as Don Libes' "expect" (can we link +against expect code?), and perfect a Perl version of expect. IO::Tty +and expect could then be distributed as part of the core distribution, +replacing Comm.pl and other hacks. + +=head2 GUI::Native + +A simple-to-use interface to native graphical abilities would +be welcomed. Oh, Perl's access Tk is nice enough, and reasonably +portable, but it's not particularly as fast as one would like. +Simple access to the mouse's cut buffer or mouse-presses shouldn't +required loading a few terabytes of Tk code. + +=head2 Update semibroken auxiliary tools; h2ph, a2p, etc. + +Kurt Starsinic is working on h2ph. mjd has fixed bugs in a2p in the +past. a2p apparently doesn't work on nawk and gawk extensions. +Graham Barr has an Include module that does h2ph work at runtime. + +=head2 POD Converters + +Brad's PodParser code needs to become part of the core, and the Pod::* +and pod2* programs rewritten to use this standard parser. Currently +the converters take different options, some behave in different +fashions, and some are more picky than others in terms of the POD +files they accept. + +=head2 pod2html + +A short-term fix: pod2html generates absolute HTML links. Make it +generate relative links. + +=head2 Podchecker + +Something like lint for Pod would be good. Something that catches +common errors as well as gross ones. Brad Appleton is putting +together something as part of his PodParser work. + +=head1 Tom's Wishes + +=head2 Webperl + +Design a webperl environment that's as tightly integrated and as +easy-to-use as Perl's current command-line environment. + +=head2 Mobile agents + +More work on a safe and secure execution environment for mobile +agents would be neat; the Safe.pm module is a start, but there's a +still a lot to be done in that area. Adopt Penguin? + +=head2 POSIX on non-POSIX + +Standard programming constructs for non-POSIX systems would help a +lot of programmers stuck on primitive, legacy systems. For example, +Microsoft still hasn't made a usable POSIX interface on their clunky +systems, which means that standard operations such as alarm() and +fork(), both critical for sophisticated client-server programming, +must both be kludged around. + +I'm unsure whether Tom means to emulate alarm( )and fork(), or merely +to provide a document like perlport.pod to say which features are +portable and which are not. + +=head2 Portable installations + +Figure out a portable semi-gelled installation, that is, one without +full paths. Larry has said that he's thinking about this. Ilya +pointed out that perllib_mangle() is good for this. + +=head1 Win32 Stuff + +=head2 Automate maintenance of most PERL_OBJECT code + +B, says Sarathy. + +=head2 Get PERL_OBJECT building under gcc + +B, according to Sarathy. It builds under egcs on win32, +but doesn't run for occult reasons. If anyone knows the right +breed of chicken to sacrifice, please speak up. + +=head2 Rename new headers to be consistent with the rest + +=head2 Sort out the spawnvp() mess + +=head2 Work out DLL versioning + +=head2 Get PERL_OBJECT building on non-win32 + +=head2 Style-check + +=head1 Would be nice to have + +=over 4 + +=item C + +=item Contiguous bitfields in pack/unpack + +=item lexperl + +=item Bundled perl preprocessor + +=item Use posix calls internally where possible + +=item gettimeofday + +Joshua Pritikin sent patches to p5p in early December 1998. + +=item format BOTTOM + +=item -iprefix. + +Added in 5.004_70. B + +=item -i rename file only when successfully changed + +=item All ARGV input should act like <> + +=item report HANDLE [formats]. + +=item support in perlmain to rerun debugger + +=item reference to compiled regexp + +B This is the qr// support in 5.005. + +=item lvalue functions + +Tuomas Lukka, on behalf of the PDL project, greatly desires this and +Ilya has a patch for it (probably against an older version of Perl). +Tuomas points out that what PDL really wants is lvalue I, +not just subs. + +=back + +=head1 Possible pragmas + +=head2 'less' + +(use less memory, CPU) + +=head1 Optimizations + +=head2 constant function cache + +=head2 eval qw() at compile time + +qw() is presently compiled as a call to split. This means the split +happens at runtime. Change this so qw() is compiled as a real list +assignment. This also avoids surprises like: + + $a = () = qw(What will $a hold?); + +B. Tom Hughes submitted a patch that went into 5.005_55. + +=head2 foreach(reverse...) + +=head2 Cache eval tree + +Unless lexical outer scope used (mark in &compiling?). + +=head2 rcatmaybe + +=head2 Shrink opcode tables + +Via multiple implementations selected in peep. + +=head2 Cache hash value + +Not a win, according to Guido. + +=head2 Optimize away @_ where possible + +=head2 Optimize sort by { $a <=> $b } + +Greg Bacon added several more sort optimizations. These have +made it into 5.005_55, thanks to Hans Mulder. + +=head2 Rewrite regexp parser for better integrated optimization + +The regexp parser was rewritten for 5.005. Ilya's the regexp guru. + +=head1 Vague possibilities + +=over 4 + +=item ref function in list context + +This seems impossible to do without substantially breaking code. + +=item make tr/// return histogram in list context? + +=item Loop control on do{} et al + +=item Explicit switch statements + +Nobody has yet managed to come up with a switch syntax that would +allow for mixed hash, constant, regexp checks. Submit implementation +with syntax, please. + +=item compile to real threaded code + +=item structured types + +=item autocroak? + +B. This is the Fatal.pm module, so any builtin that that does +not return success automatically die()s. If you're feeling brave, tie +this in with the unified exceptions scheme. + +=item Modifiable $1 et al + +The intent is for this to be a means of editing the matched portions of +the target string. + +=back + +=head1 To Do Or Not To Do + +These are things that have been discussed in the past and roundly +criticized for being of questionable value. + +=head2 Making my() work on "package" variables + +Being able to say my($Foo::Bar), something that sounds ludicrous and +the 5.006 pumpking has mocked. + +=head2 "or" testing defined not truth + +We tell people that C<||> can be used to give a default value to a +variable: + + $children = shift || 5; # default is 5 children + +which is almost (but not): + + $children = shift; + $children = 5 unless $children; + +but if the first argument was given and is "0", then it will be +considered false by C<||> and C<5> used instead. Really we want +an C<||>-like construct that behaves like: + + $children = shift; + $children = 5 unless defined $children; + +Namely, a C<||> that tests defined-ness rather than truth. One +was discussed, and a patch submitted, but the objections were many: + +=over 4 + +=item Punctuation + +We're running out of punctuation. C<|||>, the suggested operator, is +very very verbose. + +=item Orthogonality + +To work like the other logical operators, there'd need to be C<|||=> +and "English" equivalents (as there is "or" for "||"). We couldn't +settle on an equivalent we liked. Does there also have to be an "&&" +that tests truth? + +=back + +While there were objections, many still feel the need. + +=head2 "dynamic" lexicals + + my $x; + sub foo { + local $x; + } + +Localizing, as Tim Bunce points out, is a separate concept from +whether the variable is global or lexical. Chip Salzenberg had +an implementation once, but Larry thought it had potential to +confuse. + +=head2 "class"-based, rather than package-based "lexicals" + +This is like what the Alias module provides, but the variables would +be lexicals reserved by perl at compile-time, which really are indices +pointing into the pseudo-hash object visible inside every method so +declared. + +=head1 Threading + +=head2 Modules + +Which of the standard modules are thread-safe? Which CPAN modules? +How easy is it to fix those non-safe modules? + +=head2 Testing + +Threading is still experimental. Every reproducible bug identifies +something else for us to fix. Find and submit more of these problems. + +=head2 $AUTOLOAD + +=head2 exit/die + +Consistent semantics for exit/die in threads. + +=head2 External threads + +Better support for externally created threads. + +=head2 Thread::Pool + +=head2 thread-safety + +Spot-check globals like statcache and global GVs for thread-safety. +"B", says Sarathy. + +=head2 Per-thread GVs + +According to Sarathy, this would make @_ be the same in threaded +and non-threaded, as well as helping solve problems like filehandles +(the same filehandle currently cannot be used in two threads). + +=head1 Compiler + +=head2 Optimization + +The compiler's back-end code-generators for creating bytecode or +compilable C code could use optimization work. + +=head2 Byteperl + +Figure out how and where byteperl will be built for the various +platforms. + +=head2 Precompiled modules + +Save byte-compiled modules on disk. + +=head2 Executables + +Auto-produce executable. + +=head2 Typed lexicals + +Typed lexicals should affect B::CC::load_pad. + +=head2 Win32 + +Workarounds to help Win32 dynamic loading. + +=head2 Status variable + +$^C to track compiler/checker status. B in 5.005_54. + +=head2 END blocks + +END blocks need saving in compiled output. + +=head2 _AUTOLOAD + +_AUTOLOAD prodding. + +=head2 comppadlist + +Fix comppadlist (names in comppad_name can have fake SvCUR +from where newASSIGNOP steals the field). + +=head2 Cached compilation + +Can we install modules as bytecode? + +=cut diff --git a/pod/roffitall b/pod/roffitall index c7cab42..1bafa8d 100644 --- a/pod/roffitall +++ b/pod/roffitall @@ -68,9 +68,11 @@ toroff=` $mandir/perlxstut.1 \ $mandir/perlguts.1 \ $mandir/perlcall.1 \ + $mandir/perltodo.1 \ $mandir/perlhist.1 \ $mandir/perldelta.1 \ $mandir/perl5004delta.1 \ + $mandir/perl5005delta.1 \ $mandir/perlfaq.1 \ $mandir/perlfaq1.1 \ $mandir/perlfaq2.1 \ diff --git a/win32/pod.mak b/win32/pod.mak index 7476c33..e5dd640 100644 --- a/win32/pod.mak +++ b/win32/pod.mak @@ -16,6 +16,8 @@ REALPERL = ..\perl.exe POD = \ perl.pod \ perldelta.pod \ + perl5004delta.pod \ + perl5005delta.pod \ perldata.pod \ perlsyn.pod \ perlop.pod \ @@ -55,6 +57,8 @@ POD = \ perlxstut.pod \ perlguts.pod \ perlcall.pod \ + perltodo.pod \ + perlhist.pod \ perlfaq.pod \ perlfaq1.pod \ perlfaq2.pod \ @@ -70,6 +74,8 @@ POD = \ MAN = \ perl.man \ perldelta.man \ + perl5004delta.man \ + perl5005delta.man \ perldata.man \ perlsyn.man \ perlop.man \ @@ -109,6 +115,8 @@ MAN = \ perlxstut.man \ perlguts.man \ perlcall.man \ + perltodo.man \ + perlhist.man \ perlfaq.man \ perlfaq1.man \ perlfaq2.man \ @@ -124,6 +132,8 @@ MAN = \ HTML = \ perl.html \ perldelta.html \ + perl5004delta.html \ + perl5005delta.html \ perldata.html \ perlsyn.html \ perlop.html \ @@ -163,6 +173,8 @@ HTML = \ perlxstut.html \ perlguts.html \ perlcall.html \ + perltodo.html \ + perlhist.html \ perlfaq.html \ perlfaq1.html \ perlfaq2.html \ @@ -178,6 +190,8 @@ HTML = \ TEX = \ perl.tex \ perldelta.tex \ + perl5004delta.tex \ + perl5005delta.tex \ perldata.tex \ perlsyn.tex \ perlop.tex \ @@ -217,6 +231,8 @@ TEX = \ perlxstut.tex \ perlguts.tex \ perlcall.tex \ + perltodo.tex \ + perlhist.tex \ perlfaq.tex \ perlfaq1.tex \ perlfaq2.tex \