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