fe339dec79addd8be56140be6bb26e23f1ab8389
[p5sagit/p5-mst-13.2.git] / pod / perltodo.pod
1 =head1 Perl TO-DO List
2
3 This is a list of wishes for Perl.  It is maintained by Nathan
4 Torkington for the Perl porters.  Send updates to
5 I<perl5-porters@perl.org>.  If you want to work on any of these
6 projects, be sure to check the perl5-porters archives for past ideas,
7 flames, and propaganda.  This will save you time and also prevent you
8 from implementing something that Larry has already vetoed.  One set
9 of archives may be found at:
10
11     http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/
12
13
14 =head1 Infrastructure
15
16 =head2 Mailing list archives
17
18 Chaim suggests contacting egroup and asking them to archive the other
19 perl.org mailing lists.  Probably not advocacy, but definitely
20 perl6-porters, etc.
21
22 =head2 Bug tracking system
23
24 Richard Foley I<richard@perl.org> is writing one.  We looked at
25 several, like gnats and the Debian system, but at the time we
26 investigated them, none met our needs.  Since then, Jitterbug has
27 matured, and may be worth reinvestigation.
28
29 The system we've developed will eventually be recipient of perlbug
30 mail.  New bugs are entered into a mysql database, and sent on to
31 perl5-porters with the subject line rewritten to include a "ticket
32 number" (unique ID for the new bug).  If the incoming message already
33 had a ticket number in the subject line, then the message is logged
34 against that bug.  There is a separate email interface (not forwarding
35 to p5p) that permits porters to claim, categorize, and close tickets.
36
37 The next desire is a web interface.  It is hoped that code can be
38 reused between the mail and the web interfaces.
39
40 The current delay in implementation is caused by perl.org lockups.
41 One suspect is the mail handling system, possibly going into loops.
42
43 We're probably going to need a bugmaster, someone who will look at
44 every new "bug" and kill those that we already know about, those
45 that are not bugs at all, etc.
46
47 =head2 Regression Tests
48
49 The test suite for Perl serves two needs: ensuring features work, and
50 ensuring old bugs have not been reintroduced.  Both need work.
51
52 Brent LaVelle (lavelle@metronet.com) has stepped forward to work on
53 performance tests and improving the size of the test suite.
54
55 =over 4
56
57 =item Coverage
58
59 Do the tests that come with Perl exercise every line (or every block,
60 or ...)  of the Perl interpreter, and if not then how can we make them
61 do so?
62
63 =item Regression
64
65 No bug fixes should be made without a corresponding testsuite addition.
66 This needs a dedicated enforcer, as the current pumpking is either too
67 lazy or too stupid or both and lets enforcement wander all over the
68 map.  :-)
69
70 =item __DIE__
71
72 Tests that fail need to be of a form that can be readily mailed
73 to perlbug and diagnosed with minimal back-and-forth's to determine
74 which test failed, due to what cause, etc.
75
76 =item suidperl
77
78 We need regression/sanity tests for suidperl
79
80 =item The 25% slowdown from perl4 to perl5
81
82 This value may or may not be accurate, but it certainly is
83 eye-catching.  For some things perl5 is faster than perl4, but often
84 the reliability and extensability have come at a cost of speed.  The
85 benchmark suite that Gisle released earlier has been hailed as both a
86 fantastic solution and as a source of entirely meaningless figures.
87 Do we need to test "real applications"?  Can you do so?  Anyone have
88 machines to dedicate to the task?  Identify the things that have grown
89 slower, and see if there's a way to make them faster.
90
91 =back
92
93 =head1 Configure
94
95 Andy Dougherty maintain(ed|s) a list of "todo" items for the configure
96 that comes with Perl.  See Porting/pumpkin.pod in the latest
97 source release.
98
99 =head2 Install HTML
100
101 Have "make install" give you the option to install HTML as well.  This
102 would be part of Configure.  Andy Wardley (certified Perl studmuffin)
103 will look into the current problems of HTML installation--is
104 'installhtml' preventing this from happening cleanly, or is pod2html
105 the problem?  If the latter, Brad Appleton's pod work may fix the
106 problem for free.
107
108 =head1 Perl Language
109
110 =head2 our ($var)
111
112 Declare global variables (lexically or otherwise).
113
114 =head2 64-bit Perl
115
116 Verify complete 64 bit support so that the value of sysseek, or C<-s>, or
117 stat(), or tell can fit into a perl number without losing precision.
118 Work with the perl-64bit mailing list on perl.org.
119
120 =head2 Figure a way out of $^(capital letter)
121
122 Figure out a clean way to extend $^(capital letter) beyond
123 the 26 alphabets.  (${^WORD} maybe?)
124
125 =head2 Prototypes
126
127 =over 4
128
129 =item Named prototypes
130
131 Add proper named prototypes that actually work usefully.
132
133 =item Indirect objects
134
135 Fix prototype bug that forgets indirect objects.
136
137 =item Method calls
138
139 Prototypes for method calls.
140
141 =item Context
142
143 Return context prototype declarations.
144
145 =item Scoped subs
146
147 lexically-scoped subs, e.g. my sub
148
149 =back
150
151 =head2 Built-in globbing
152
153 Currently the C<E<lt>*.cE<gt>> syntax calls the c shell.  This causes
154 problems on sites without csh, systems where fork() is expensive, and
155 setuid environments.  Decide between Glob::BSD and File::KGlob, move
156 it into the core, and make Perl use it for globbing.  Ben Holzman and
157 Tye McQueen have claimed the pumpkin for this.
158
159 =head1 Perl Internals
160
161 =head2 magic_setisa
162
163 C<magic_setisa> should be made to update %FIELDS [???]
164
165 =head2 Garbage Collection
166
167 There was talk of a mark-and-sweep garbage collector at TPC2, but the
168 (to users) unpredictable nature of its behaviour put some off.
169 Sarathy, I believe, did the work.  Here's what he has to say:
170
171 Yeah, I hope to implement it someday too.  The points that were
172 raised in TPC2 were all to do with calling DESTROY() methods, but
173 I think we can accomodate that by extending bless() to stash
174 extra information for objects so we track their lifetime accurately
175 for those that want their DESTROY() to be predictable (this will be
176 a speed hit, naturally, and will therefore be optional, naturally. :)
177     
178 [N.B. Don't even ask me about this now!  When I have the time to
179 write a cogent summary, I'll post it.]
180
181 =head2 Reliable signals
182
183 Sarathy and Dan Sugalski are working on this.  Chip posted a patch
184 earlier, but it was not accepted into 5.005.  The issue is tricky,
185 because it has the potential to greatly slow down the core.
186
187 There are at least three things to consider:
188
189 =over 4
190
191 =item Alternate runops() for signal despatch
192
193 Sarathy and Dan are discussed this on perl5-porters.
194
195 =item Figure out how to die() in delayed sighandler
196
197 =item Add tests for Thread::Signal
198
199 =item Automatic tests against CPAN
200
201 Is there some way to automatically build all/most of CPAN with
202 the new Perl and check that the modules there pass all the tests?
203
204 =back
205
206 =head2 Interpolated regex performance bugs
207
208   while (<>) {
209     $found = 0;
210     foreach $pat (@patterns) {
211       $found++ if /$pat/o;
212     }
213     print if $found;
214   }
215
216 The qr// syntax added in 5.005 has solved this problem, but
217 it needs more thorough documentation.
218
219 =head2 Memory leaks from failed eval/regcomp
220
221 The only known memory leaks in Perl are in failed code or regexp
222 compilation.  Fix this.  Hugo Van Der Sanden will attempt this but
223 won't have tuits until January 1999.
224
225 =head2 Make XS easier to use
226
227 There was interest in SWIG from porters, but nothing has happened
228 lately.
229
230 =head2 Make embedded Perl easier to use
231
232 This is probably difficult for the same reasons that "XS For Dummies"
233 will be difficult.
234
235 =head2 Namespace cleanup
236
237     CPP-space:    restrict CPP symbols exported from headers
238     header-space: move into CORE/perl/
239     API-space:    begin list of things that constitute public api
240
241 =head2 MULTIPLICITY
242
243 Complete work on safe recursive interpreters C<Perl-E<gt>new()>.
244 Sarathy says that a reference implementation exists.
245
246 =head2 MacPerl
247
248 Chris Nandor and Matthias Neeracher are working on better integrating
249 MacPerl into the Perl distribution.
250
251 =head1 Documentation
252
253 There's a lot of documentation that comes with Perl.  The quantity of
254 documentation makes it difficult for users to know which section of
255 which manpage to read in order to solve their problem.  Tom
256 Christiansen has done much of the documentation work in the past.
257
258 =head2 A clear division into tutorial and reference
259
260 Some manpages (e.g., perltoot and perlreftut) clearly set out to
261 educate the reader about a subject.  Other manpages (e.g., perlsub)
262 are references for which there is no tutorial, or are references with
263 a slight tutorial bent.  If things are either tutorial or reference,
264 then the reader knows which manpage to read to learn about a subject,
265 and which manpage to read to learn all about an aspect of that
266 subject.  Part of the solution to this is:
267
268 =head2 Remove the artificial distinction between operators and functions
269
270 History shows us that users, and often porters, aren't clear on the
271 operator-function distinction.  The present split in reference
272 material between perlfunc and perlop hinders user navigation.  Given
273 that perlfunc is by far the larger of the two, move operator reference
274 into perlfunc.
275
276 =head2 More tutorials
277
278 More documents of a tutorial nature could help.  Here are some
279 candidates:
280
281 =over 4
282
283 =item Regular expressions
284
285 Robin Berjon (r.berjon@ltconsulting.net) has volunteered.
286
287 =item I/O
288
289 Mark-Jason Dominus (mjd@plover.com) has an outline for perliotut.
290
291 =item pack/unpack
292
293 This is badly needed.  There has been some discussion on the
294 subject on perl5-porters.
295
296 =item Debugging
297
298 Ronald Kimball (rjk@linguist.dartmouth.edu) has volunteered.
299
300 =head2 Include a search tool
301
302 perldoc should be able to 'grep' fulltext indices of installed POD
303 files.  This would let people say:
304
305   perldoc -find printing numbers with commas
306
307 and get back the perlfaq entry on 'commify'.
308
309 This solution, however, requires documentation to contain the keywords
310 the user is searching for.  Even when the users know what they're
311 looking for, often they can't spell it.
312
313 =head2 Include a locate tool
314
315 perldoc should be able to help people find the manpages on a
316 particular high-level subject:
317
318   perldoc -find web
319
320 would tell them manpages, web pages, and books with material on web
321 programming.  Similarly C<perldoc -find databases>, C<perldoc -find
322 references> and so on.
323
324 We need something in the vicinity of:
325
326   % perl -help random stuff
327   No documentation for perl function `random stuff' found
328   The following entry in perlfunc.pod matches /random/a:
329     =item rand EXPR
330      
331     =item rand
332      
333     Returns a random fractional number greater than or equal to C<0> and less
334     than the value of EXPR.  (EXPR should be positive.)  If EXPR is
335     omitted, the value C<1> is used.  Automatically calls C<srand()> unless
336     C<srand()> has already been called.  See also C<srand()>.
337      
338     (Note: If your rand function consistently returns numbers that are too
339     large or too small, then your version of Perl was probably compiled
340     with the wrong number of RANDBITS.)
341   The following pod pages seem to have /stuff/a:
342     perlfunc.pod        (7 hits)
343     perlfaq7.pod        (6 hits)
344     perlmod.pod         (4 hits)
345     perlsyn.pod         (3 hits)
346     perlfaq8.pod        (2 hits)
347     perlipc.pod         (2 hits)
348     perl5004delta.pod   (1 hit)
349     perl5005delta.pod   (1 hit)
350     perlcall.pod        (1 hit)
351     perldelta.pod       (1 hit)
352     perlfaq3.pod        (1 hit)
353     perlfaq5.pod        (1 hit)
354     perlhist.pod        (1 hit)
355     perlref.pod         (1 hit)
356     perltoc.pod         (1 hit)
357     perltrap.pod        (1 hit)
358   Proceed to open perlfunc.pod? [y] n
359   Do you want to speak perl interactively? [y] n
360   Should I dial 911? [y] n
361   Do you need psychiatric help? [y] y
362   <PELIZA> Hi, what bothers you today?
363            A Python programmer in the next cubby is driving me nuts!
364   <PELIZA> Hmm, thats fixable.  Just [rest censored]
365
366 =head2 Separate function manpages by default
367
368 Perl should install 'manpages' for every function/operator into the
369 3pl or 3p manual section.  By default.  The splitman program in the
370 Perl source distribution does the work of turning big perlfunc into
371 little 3p pages.
372
373 =head2 Users can't find the manpages
374
375 Make C<perldoc> tell users what they need to add to their .login or
376 .cshrc to set their MANPATH correctly.
377
378 =head2 Install ALL Documentation
379
380 Make the standard documentation kit include the VMS, OS/2, Win32,
381 Threads, etc information.
382
383 =head2 Outstanding issues to be documented
384
385 Tom has a list of 5.005_5* features or changes that require
386 documentation.
387
388 Create one document that coherently explains the delta between the
389 last camel release and the current release.  perldelta was supposed
390 to be that, but no longer.  The things in perldelta never seemed to
391 get placed in the right places in the real manpages, either.  This
392 needs work.
393
394 =head2 Adapt www.linuxhq.com for Perl
395
396 This should help glorify documentation and get more people involved in
397 perl development.
398
399 =head2 Replace man with a perl program
400
401 Can we reimplement man in Perl?  Tom has a start.  I believe some of
402 the Linux systems distribute a manalike.  Alternatively, build on
403 perldoc to remove the unfeatures like "is slow" and "has no apropos".
404
405 =head2 Unicode tutorial
406
407 We could use more work on helping people understand Perl's new
408 Unicode support that Larry has created.
409
410 =head1 Modules
411
412 =head2 Update the POSIX extension to conform with the POSIX 1003.1 Edition 2
413
414 The current state of the POSIX extension is as of Edition 1, 1991,
415 whereas the Edition 2 came out in 1996.  ISO/IEC 9945:1-1996(E),
416 ANSI/IEEE Std 1003.1, 1996 Edition. ISBN 1-55937-573-6.  The updates
417 were legion: threads, IPC, and real time extensions.
418
419 =head2 Module versions
420
421 Automate the checking of versions in the standard distribution so
422 it's easy for a pumpking to check whether CPAN has a newer version
423 that we should be including?
424
425 =head2 New modules
426
427 Which modules should be added to the standard distribution?  This ties
428 in with the SDK discussed on the perl-sdk list at perl.org.
429
430 =head2 Profiler
431
432 Make the profiler (Devel::DProf) part of the standard release, and
433 document it well.
434
435 =head2 Tie Modules
436
437 =over 4
438
439 =item VecArray
440
441 Implement array using vec().  Nathan Torkington has working code to
442 do this.
443
444 =item SubstrArray
445
446 Implement array using substr()
447
448 =item VirtualArray
449
450 Implement array using a file
451
452 =item ShiftSplice
453
454 Defines shift et al in terms of splice method
455
456 =back
457
458 =head2 Procedural options
459
460 Support procedural interfaces for the common cases of Perl's
461 gratuitously OOO modules.  Tom objects to "use IO::File" reading many
462 thousands of lines of code.
463
464 =head2 RPC
465
466 Write a module for transparent, portable remote procedure calls.  (Not
467 core).  This touches on the CORBA and ILU work.
468
469 =head2 y2k localtime/gmtime
470
471 Write a module, Y2k::Catch, which overloads localtime and gmtime's
472 returned year value and catches "bad" attempts to use it.
473
474 =head2 Export File::Find variables
475
476 Make File::Find export C<$name> etc manually, at least if asked to.
477
478 =head2 Ioctl
479
480 Finish a proper Ioctl module.
481
482 =head2 Debugger attach/detach
483
484 Permit a user to debug an already-running program.
485
486 =head2 Regular Expression debugger
487
488 Create a visual profiler/debugger tool that stepped you through the
489 execution of a regular expression point by point.  Ilya has a module
490 to color-code and display regular expression parses and executions.
491 There's something at http://tkworld.org/ that might be a good start,
492 it's a Tk/Tcl RE wizard, that builds regexen of many flavours.
493
494 =head2 Alternative RE Syntax
495
496 Make an alternative regular expression syntax that is accessed through
497 a module.  For instance,
498
499   use RE;
500   $re = start_of_line()
501       ->literal("1998/10/08")
502       ->optional( whitespace() )
503       ->literal("[")
504       ->remember( many( or( "-", digit() ) ) );
505
506   if (/$re/) {
507     print "time is $1\n";
508   }
509
510 Newbies to regular expressions typically only use a subset of the full
511 language.  Perhaps you wouldn't have to implement the full feature set.
512
513 =head2 Bundled modules
514
515 Nicholas Clark (nick@flirble.org) had a patch for storing modules in
516 zipped format.  This needs exploring and concluding.
517
518 =head2 Expect
519
520 Adopt IO::Tty, make it as portable as Don Libes' "expect" (can we link
521 against expect code?), and perfect a Perl version of expect.  IO::Tty
522 and expect could then be distributed as part of the core distribution,
523 replacing Comm.pl and other hacks.
524
525 =head2 GUI::Native
526
527 A simple-to-use interface to native graphical abilities would
528 be welcomed.  Oh, Perl's access Tk is nice enough, and reasonably
529 portable, but it's not particularly as fast as one would like.
530 Simple access to the mouse's cut buffer or mouse-presses shouldn't
531 required loading a few terabytes of Tk code.
532
533 =head2 Update semibroken auxiliary tools; h2ph, a2p, etc.
534
535 Kurt Starsinic is working on h2ph.  mjd has fixed bugs in a2p in the
536 past.  a2p apparently doesn't work on nawk and gawk extensions.
537 Graham Barr has an Include module that does h2ph work at runtime.
538
539 =head2 POD Converters
540
541 Brad's PodParser code needs to become part of the core, and the Pod::*
542 and pod2* programs rewritten to use this standard parser.  Currently
543 the converters take different options, some behave in different
544 fashions, and some are more picky than others in terms of the POD
545 files they accept.
546
547 =head2 pod2html
548
549 A short-term fix: pod2html generates absolute HTML links.  Make it
550 generate relative links.
551
552 =head2 Podchecker
553
554 Something like lint for Pod would be good.  Something that catches
555 common errors as well as gross ones.  Brad Appleton is putting
556 together something as part of his PodParser work.
557
558 =head1 Tom's Wishes
559
560 =head2 Webperl
561
562 Design a webperl environment that's as tightly integrated and as
563 easy-to-use as Perl's current command-line environment.
564
565 =head2 Mobile agents
566
567 More work on a safe and secure execution environment for mobile
568 agents would be neat; the Safe.pm module is a start, but there's a
569 still a lot to be done in that area.  Adopt Penguin?
570
571 =head2 POSIX on non-POSIX
572
573 Standard programming constructs for non-POSIX systems would help a
574 lot of programmers stuck on primitive, legacy systems.  For example,
575 Microsoft still hasn't made a usable POSIX interface on their clunky
576 systems, which means that standard operations such as alarm() and
577 fork(), both critical for sophisticated client-server programming,
578 must both be kludged around.
579
580 I'm unsure whether Tom means to emulate alarm( )and fork(), or merely
581 to provide a document like perlport.pod to say which features are
582 portable and which are not.
583
584 =head2 Portable installations
585
586 Figure out a portable semi-gelled installation, that is, one without
587 full paths.  Larry has said that he's thinking about this.  Ilya
588 pointed out that perllib_mangle() is good for this.
589
590 =head1 Win32 Stuff
591
592 =head2 Get PERL_OBJECT building under gcc
593
594 B<Part done>, according to Sarathy.  It builds under egcs on win32,
595 but doesn't run for occult reasons.  If anyone knows the right
596 breed of chicken to sacrifice, please speak up.
597
598 =head2 Rename new headers to be consistent with the rest
599
600 =head2 Sort out the spawnvp() mess
601
602 =head2 Work out DLL versioning
603
604 =head2 Get PERL_OBJECT building on non-win32
605
606 =head2 Style-check
607
608 =head1 Would be nice to have
609
610 =over 4
611
612 =item C<pack "(stuff)*">
613
614 =item Contiguous bitfields in pack/unpack
615
616 =item lexperl
617
618 =item Bundled perl preprocessor
619
620 =item Use posix calls internally where possible
621
622 =item format BOTTOM
623
624 =item -i rename file only when successfully changed
625
626 =item All ARGV input should act like <>
627
628 =item report HANDLE [formats].
629
630 =item support in perlmain to rerun debugger
631
632 =item lvalue functions
633
634 Tuomas Lukka, on behalf of the PDL project, greatly desires this and
635 Ilya has a patch for it (probably against an older version of Perl).
636 Tuomas points out that what PDL really wants is lvalue I<methods>,
637 not just subs.
638
639 =back
640
641 =head1 Possible pragmas
642
643 =head2 'less'
644
645 (use less memory, CPU)
646
647 =head1 Optimizations
648
649 =head2 constant function cache
650
651 =head2 foreach(reverse...)
652
653 =head2 Cache eval tree
654
655 Unless lexical outer scope used (mark in &compiling?).
656
657 =head2 rcatmaybe
658
659 =head2 Shrink opcode tables
660
661 Via multiple implementations selected in peep.
662
663 =head2 Cache hash value
664
665 Not a win, according to Guido.
666
667 =head2 Optimize away @_ where possible
668
669 =head2 Optimize sort by { $a <=> $b }
670
671 Greg Bacon added several more sort optimizations.  These have
672 made it into 5.005_55, thanks to Hans Mulder.
673
674 =head2 Rewrite regexp parser for better integrated optimization
675
676 The regexp parser was rewritten for 5.005.  Ilya's the regexp guru.
677
678 =head1 Vague possibilities
679
680 =over 4
681
682 =item ref function in list context
683
684 This seems impossible to do without substantially breaking code.
685
686 =item make tr/// return histogram in list context?
687
688 =item Loop control on do{} et al
689
690 =item Explicit switch statements
691
692 Nobody has yet managed to come up with a switch syntax that would
693 allow for mixed hash, constant, regexp checks.  Submit implementation
694 with syntax, please.
695
696 =item compile to real threaded code
697
698 =item structured types
699
700 =item Modifiable $1 et al
701
702 The intent is for this to be a means of editing the matched portions of
703 the target string.
704
705 =back
706
707 =head1 To Do Or Not To Do
708
709 These are things that have been discussed in the past and roundly
710 criticized for being of questionable value.
711
712 =head2 Making my() work on "package" variables
713
714 Being able to say my($Foo::Bar), something that sounds ludicrous and
715 the 5.006 pumpking has mocked.
716
717 =head2 "or" testing defined not truth
718
719 We tell people that C<||> can be used to give a default value to a
720 variable:
721
722     $children = shift || 5;             # default is 5 children
723
724 which is almost (but not):
725
726     $children = shift;
727     $children = 5 unless $children;
728
729 but if the first argument was given and is "0", then it will be
730 considered false by C<||> and C<5> used instead.  Really we want
731 an C<||>-like operator that behaves like:
732
733     $children = shift;
734     $children = 5 unless defined $children;
735
736 Namely, a C<||> that tests defined-ness rather than truth.  One was
737 discussed, and a patch submitted, but the objections were many.  While
738 there were objections, many still feel the need.  At least it was
739 decided that C<??> is the best name for the operator.
740
741 =head2 "dynamic" lexicals
742
743   my $x;
744   sub foo {
745     local $x;
746   }
747
748 Localizing, as Tim Bunce points out, is a separate concept from
749 whether the variable is global or lexical.  Chip Salzenberg had
750 an implementation once, but Larry thought it had potential to
751 confuse.
752
753 =head2 "class"-based, rather than package-based "lexicals"
754
755 This is like what the Alias module provides, but the variables would
756 be lexicals reserved by perl at compile-time, which really are indices
757 pointing into the pseudo-hash object visible inside every method so
758 declared.
759
760 =head1 Threading
761
762 =head2 Modules
763
764 Which of the standard modules are thread-safe?  Which CPAN modules?
765 How easy is it to fix those non-safe modules?
766
767 =head2 Testing
768
769 Threading is still experimental.  Every reproducible bug identifies
770 something else for us to fix.  Find and submit more of these problems.
771
772 =head2 $AUTOLOAD
773
774 =head2 exit/die
775
776 Consistent semantics for exit/die in threads.
777
778 =head2 External threads
779
780 Better support for externally created threads.
781
782 =head2 Thread::Pool
783
784 =head2 thread-safety
785
786 Spot-check globals like statcache and global GVs for thread-safety.
787 "B<Part done>", says Sarathy.
788
789 =head2 Per-thread GVs
790
791 According to Sarathy, this would make @_ be the same in threaded
792 and non-threaded, as well as helping solve problems like filehandles
793 (the same filehandle currently cannot be used in two threads).
794
795 =head1 Compiler
796
797 =head2 Optimization
798
799 The compiler's back-end code-generators for creating bytecode or
800 compilable C code could use optimization work.
801
802 =head2 Byteperl
803
804 Figure out how and where byteperl will be built for the various
805 platforms.
806
807 =head2 Precompiled modules
808
809 Save byte-compiled modules on disk.
810
811 =head2 Executables
812
813 Auto-produce executable.
814
815 =head2 Typed lexicals
816
817 Typed lexicals should affect B::CC::load_pad.
818
819 =head2 Win32
820
821 Workarounds to help Win32 dynamic loading.
822
823 =head2 END blocks
824
825 END blocks need saving in compiled output.
826
827 =head2 _AUTOLOAD
828
829 _AUTOLOAD prodding.
830
831 =head2 comppadlist
832
833 Fix comppadlist (names in comppad_name can have fake SvCUR
834 from where newASSIGNOP steals the field).
835
836 =head2 Cached compilation
837
838 Can we install modules as bytecode?
839
840 =head1 Recently Finished Tasks
841
842 =head2 Filenames
843
844 Make filenames in the distribution and in the standard module set
845 be 8.3 friendly where feasible.  Good luck changing the standard
846 modules, though.  B<Done>.
847
848 =head2 Proper tied array support
849
850 This was B<done> in 5.005 by Nick Ing-Simmons.
851
852 =head2 Foreign lines
853
854 Perl should be more generous in accepting foreign line terminations.
855 Mostly B<done> in 5.005.
856
857 =head2 Namespace cleanup
858
859     symbol-space: "pl_" prefix for all global vars
860                   "Perl_" prefix for all functions
861
862     CPP-space:    stop malloc()/free() pollution unless asked
863
864 =head2 Explain tool
865
866 Given a piece of Perl code, say what it does.  B::Deparse is doing
867 this.  B<Done>.
868
869 =head2 ISA.pm
870
871 Rename and alter ISA.pm.  B<Done>.  It is now base.pm.
872
873 =head2 Automate maintenance of most PERL_OBJECT code
874
875 B<Done>, says Sarathy.
876
877 =head2 -iprefix.
878
879 Added in 5.004_70.  B<Done>
880
881 =head2 gettimeofday
882
883 See Time::HiRes.
884
885 =head2 reference to compiled regexp
886
887 B<done>  This is the qr// support in 5.005.
888
889 =head2 eval qw() at compile time
890
891 qw() is presently compiled as a call to split.  This means the split
892 happens at runtime.  Change this so qw() is compiled as a real list
893 assignment.  This also avoids surprises like:
894
895     $a = () = qw(What will $a hold?);
896
897 B<Done>.  Tom Hughes submitted a patch that went into 5.005_55.
898
899 =head2 autocroak?
900
901 B<Done>.  This is the Fatal.pm module, so any builtin that that does
902 not return success automatically die()s.  If you're feeling brave, tie
903 this in with the unified exceptions scheme.
904
905 =head2 Status variable
906
907 $^C to track compiler/checker status.  B<Done> in 5.005_54.
908
909 =cut