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