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