NAMEperltodo - Perl TO-DO List
DESCRIPTIONThis is a list of wishes for Perl. It is maintained by Nathan Torkington for the Perl porters. Send updates to perl5-porters@perl.org. 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/
Infrastructure
Mailing list archivesChaim suggests contacting egroup and asking them to archive the other perl.org mailing lists. Probably not advocacy, but definitely perl6-porters, etc.
Bug tracking systemRichard Foley richard@perl.org 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 is the recipient of perlbug mail, and any followups it generates from perl5-porters. 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. There is also a web interface to the system at http://bugs.perl.org. The current delay in implementation is caused by perl.org lockups. One suspect is the mail handling system, possibly going into loops. We still desperately 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.
Regression TestsThe 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.
ConfigureAndy Dougherty
Install HTMLHave ``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.
Perl Language
64-bit PerlVerify complete 64 bit support so that the value of sysseek, or
Prototypes
Perl Internals
magic_setisa
Garbage CollectionThere 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 [N.B. Don't even ask me about this now! When I have the time to write a cogent summary, I'll post it.]
Reliable signalsSarathy 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:
Interpolated regex performance bugswhile (<>) { $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.
Memory leaks from failed eval/regcompThe 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.
Make XS easier to useThere was interest in SWIG from porters, but nothing has happened lately.
Make embedded Perl easier to useThis is probably difficult for the same reasons that ``XS For Dummies'' will be difficult.
Namespace cleanupCPP-space: restrict CPP symbols exported from headers header-space: move into CORE/perl/ API-space: begin list of things that constitute public api env-space: Configure should use PERL_CONFIG instead of CONFIG etc.
MULTIPLICITYComplete work on safe recursive interpreters
MacPerlChris Nandor and Matthias Neeracher are working on better integrating MacPerl into the Perl distribution.
DocumentationThere'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.
A clear division into tutorial and referenceSome 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:
Remove the artificial distinction between operators and functionsHistory 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.
More tutorialsMore documents of a tutorial nature could help. Here are some candidates:
Include a search toolperldoc 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.
Include a locate toolperldoc 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 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<srand()> unless C<srand()> has already been called. See also C<srand()>. (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 <PELIZA> Hi, what bothers you today? A Python programmer in the next cubby is driving me nuts! <PELIZA> Hmm, thats fixable. Just [rest censored]
Separate function manpages by defaultPerl 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.
Users can't find the manpagesMake
Install ALL DocumentationMake the standard documentation kit include the VMS, OS/2, Win32, Threads, etc information. installperl and pod/Makefile should know enough to copy README.foo to perlfoo.pod before building everything, when appropriate.
Outstanding issues to be documentedTom 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.
Adapt www.linuxhq.com for PerlThis should help glorify documentation and get more people involved in perl development.
Replace man with a perl programCan 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''.
Unicode tutorialWe could use more work on helping people understand Perl's new Unicode support that Larry has created.
Modules
Update the POSIX extension to conform with the POSIX 1003.1 Edition 2The 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.
Module versionsAutomate 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?
New modulesWhich modules should be added to the standard distribution? This ties in with the SDK discussed on the perl-sdk list at perl.org.
ProfilerMake the profiler (Devel::DProf) part of the standard release, and document it well.
Tie Modules
Procedural optionsSupport 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.
RPCWrite a module for transparent, portable remote procedure calls. (Not core). This touches on the CORBA and ILU work.
y2k localtime/gmtimeWrite a module, Y2k::Catch, which overloads localtime and gmtime's returned year value and catches ``bad'' attempts to use it.
Export File::Find variablesMake File::Find export
IoctlFinish a proper Ioctl module.
Debugger attach/detachPermit a user to debug an already-running program.
Regular Expression debuggerCreate 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.
Alternative RE SyntaxMake 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.
Bundled modulesNicholas Clark (nick@flirble.org) had a patch for storing modules in zipped format. This needs exploring and concluding.
ExpectAdopt 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.
GUI::NativeA 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.
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.
pod2htmlA short-term fix: pod2html generates absolute HTML links. Make it generate relative links.
PodcheckerSomething 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.
Tom's Wishes
WebperlDesign a webperl environment that's as tightly integrated and as easy-to-use as Perl's current command-line environment.
Mobile agentsMore 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?
POSIX on non-POSIXStandard 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 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.
Portable installationsFigure 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
Win32 Stuff
Rename new headers to be consistent with the rest
Work out DLL versioning
Style-check
Would be nice to have
Possible pragmas
'less'(use less memory, CPU)
Optimizations
constant function cache
|
perltodo - Perl TO-DO List |