This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Module-CoreList is 5.20151020 on teh CPAN
[perl5.git] / Porting / todo.pod
index a08fad9..ae5de30 100644 (file)
@@ -41,9 +41,9 @@ documentation.  This would be a good way to learn more about Perl.
 
 =head2 Classify bug tickets by type
 
-Known bugs in Perl are tracked by L<https://rt.perl.org/rt3> (which also
+Known bugs in Perl are tracked by L<https://rt.perl.org/> (which also
 includes Perl 6).  A summary can be found at
-L<https://rt.perl.org/rt3/NoAuth/perl5/Overview.html>.
+L<https://rt.perl.org/NoAuth/perl5/Overview.html>.
 It shows bugs classified by "type".  However, the type of many of the
 bugs is "unknown".  This greatly lowers the chances of them getting
 fixed, as the number of open bugs is overwhelming -- too many to wade
@@ -59,7 +59,7 @@ the poster about it, asking for example code that reproduces the
 problem.  Such code should be added to the test suite as TODO tests, and
 the ticket should be classified by type.  To get started on this task,
 look at the tickets that are marked as "New Issues" in
-L<https://rt.perl.org/rt3/NoAuth/perl5/Overview.html>.
+L<https://rt.perl.org/NoAuth/perl5/Overview.html>.
 
 =head2 Migrate t/ from custom TAP generation
 
@@ -71,8 +71,8 @@ instead there is an intentionally simpler library, F<t/test.pl>. However,
 quite a few tests in F<t/> have not been refactored to use it. Refactoring
 any of these tests, one at a time, is a useful thing TODO.
 
-The subdirectories F<base>, F<cmd> and F<comp>, that contain the most
-basic tests, should be excluded from this task.
+The subdirectories F<base>, F<cmd>, F<comp> and F<opbasic>, that contain the
+most basic tests, should be excluded from this task.
 
 =head2 Automate perldelta generation
 
@@ -128,8 +128,9 @@ L<Benchmark::Perl::Formance>
 
 =head2 fix tainting bugs
 
-Fix the bugs revealed by running the test suite with the C<-t> switch (via
-C<make test.taintwarn>).
+Fix the bugs revealed by running the test suite with the C<-t> switch.
+Setting the TEST_ARGS environment variable to C<-taintwarn> will accomplish
+this.
 
 =head2 Dual life everything
 
@@ -266,7 +267,7 @@ do a normal C<Configure>, but include Devel::Cover as a module to install
 
 =item *
 
   cd t; HARNESS_PERL_SWITCHES=-MDevel::Cover ./perl -I../lib harness
+ cd t; HARNESS_PERL_SWITCHES=-MDevel::Cover ./perl -I../lib harness
 
 =item *
 
@@ -358,7 +359,7 @@ are needed to our current source code. Prime example of this is Android.
 There are several scripts and tools for cross-compiling perl for other
 platforms. However, these are somewhat inconsistent and scattered across the
 codebase, none are documented well, none are clearly flexible enough to
-be confident that they can support any TARGET/HOST plaform pair other than
+be confident that they can support any TARGET/HOST platform pair other than
 that which they were developed on, and it's not clear how bitrotted they are.
 
 For example, C<Configure> understands C<-Dusecrosscompile> option. This option
@@ -370,7 +371,7 @@ ARM Linux targets, relying on hand curated F<config.sh> files, but that code
 is getting on for 5 years old, and requires insider knowledge of perl's
 build system to draft a F<config.sh> for a new platform.
 
-Jess Robinson has sumbitted a grant to TPF to work on cleaning this up.
+Jess Robinson has submitted a grant to TPF to work on cleaning this up.
 
 =head2 Split "linker" from "compiler"
 
@@ -466,7 +467,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall.
 On these systems, it might be the default compilation mode, and there
 is currently no guarantee that passing no use64bitall option to the
 Configure process will build a 32bit perl. Implementing -Duse32bit*
-options would be nice for perl 5.19.1.
+options would be nice for perl 5.23.5.
 
 =head2 Profile Perl - am I hot or not?
 
@@ -548,19 +549,12 @@ Maybe create a utility that checks after each libperl.a creation that
 none of the above (nor sprintf(), vsprintf(), or *SHUDDER* gets())
 ever creep back to libperl.a.
 
-  nm libperl.a | ./miniperl -alne '$o = $F[0] if /:$/; print "$o $F[1]" if $F[0] eq "U" && $F[1] =~ /^(?:strn?c(?:at|py)|v?sprintf|gets)$/'
+ nm libperl.a | ./miniperl -alne '$o = $F[0] if /:$/;
+   print "$o $F[1]" if $F[0] eq "U" && $F[1] =~ /^(?:strn?c(?:at|py)|v?sprintf|gets)$/'
 
 Note, of course, that this will only tell whether B<your> platform
 is using those naughty interfaces.
 
-=head2 -D_FORTIFY_SOURCE=2
-
-Recent glibcs support C<-D_FORTIFY_SOURCE=2> which gives
-protection against various kinds of buffer overflow problems.
-It should probably be used for compiling Perl whenever available,
-Configure and/or hints files should be adjusted to probe for the
-availability of these feature and enable it as appropriate.
-
 =head2 Arenas for GPs? For MAGIC?
 
 C<struct gp> and C<struct magic> are both currently allocated by C<malloc>.
@@ -799,11 +793,11 @@ extended.
 
 Change 25773 notes
 
   /* Need to check SvMAGICAL, as during global destruction it may be that
-       AvARYLEN(av) has been freed before av, and hence the SvANY() pointer
-       is now part of the linked list of SV heads, rather than pointing to
-       the original body.  */
   /* FIXME - audit the code for other bugs like this one.  */
+ /* Need to check SvMAGICAL, as during global destruction it may be that
+    AvARYLEN(av) has been freed before av, and hence the SvANY() pointer
+    is now part of the linked list of SV heads, rather than pointing to
+    the original body.  */
+ /* FIXME - audit the code for other bugs like this one.  */
 
 adding the C<SvMAGICAL> check to
 
@@ -854,7 +848,7 @@ if available-- but B<only> if available, all platforms will B<not>
 have catgets().
 
 For the really pure at heart, consider extending this item to cover
-also the warning messages (see L<perllexwarn>, C<warnings.pl>).
+also the warning messages (see L<warnings>, F<regen/warnings.pl>).
 
 =head1 Tasks that need a knowledge of the interpreter
 
@@ -972,10 +966,11 @@ done." ssh and screen do this with named pipes in /tmp. Maybe we can too.
 The old perltodo notes that lvalue functions don't work for list or hash
 slices. This would be good to fix.
 
-=head2 regexp optimiser optional
+=head2 regexp optimizer optional
 
-The regexp optimiser is not optional. It should configurable to be, to allow
-its performance to be measured, and its bugs to be easily demonstrated.
+The regexp optimizer is not optional. It should be configurable to be optional
+and to allow its performance to be measured and its bugs to be easily
+demonstrated.
 
 =head2 C</w> regex modifier
 
@@ -1020,14 +1015,15 @@ The old perltodo notes "Look at the "reification" code in C<av.c>".
 =head2 Virtualize operating system access
 
 Implement a set of "vtables" that virtualizes operating system access
-(open(), mkdir(), unlink(), readdir(), getenv(), etc.)  At the very
-least these interfaces should take SVs as "name" arguments instead of
-bare char pointers; probably the most flexible and extensible way
-would be for the Perl-facing interfaces to accept HVs.  The system
-needs to be per-operating-system and per-file-system
-hookable/filterable, preferably both from XS and Perl level
-(L<perlport/"Files and Filesystems"> is good reading at this point,
-in fact, all of L<perlport> is.)
+(chdir(), chmod(), dbmopen(), getenv(), glob(), link(), mkdir(), open(),
+opendir(), readdir(), rename(), rmdir(), stat(), sysopen(), uname(),
+unlink(), etc.)  At the very least these interfaces should take SVs as
+"name" arguments instead of bare char pointers; probably the most
+flexible and extensible way would be for the Perl-facing interfaces to
+accept HVs.  The system needs to be per-operating-system and
+per-file-system hookable/filterable, preferably both from XS and Perl
+level (L<perlport/"Files and Filesystems"> is good reading at this
+point, in fact, all of L<perlport> is.)
 
 This has actually already been implemented (but only for Win32),
 take a look at F<iperlsys.h> and F<win32/perlhost.h>.  While all Win32
@@ -1109,8 +1105,8 @@ most common and the most confusing). Ideally this code
 
 would produce this output
 
   Use of uninitialized value $undef in addition (+) at wrong.pl line 4.
   Use of uninitialized value $undef in addition (+) at wrong.pl line 7.
+ Use of uninitialized value $undef in addition (+) at wrong.pl line 4.
+ Use of uninitialized value $undef in addition (+) at wrong.pl line 7.
 
 (rather than lines 4 and 5), but this would seem to require every OP to carry
 (at least) line number information.
@@ -1118,7 +1114,7 @@ would produce this output
 What might work is to have an optional line number in memory just before the
 BASEOP structure, with a flag bit in the op to say whether it's present.
 Initially during compile every OP would carry its line number. Then add a late
-pass to the optimiser (potentially combined with L</repack the optree>) which
+pass to the optimizer (potentially combined with L</repack the optree>) which
 looks at the two ops on every edge of the graph of the execution path. If
 the line number changes, flags the destination OP with this information.
 Once all paths are traced, replace every op with the flag with a
@@ -1173,7 +1169,7 @@ L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00339.html>
 =head1 Big projects
 
 Tasks that will get your name mentioned in the description of the "Highlights
-of 5.19.1"
+of 5.23.5"
 
 =head2 make ithreads more robust
 
@@ -1187,13 +1183,6 @@ without a C<fchdir> function (in sv.c:Perl_dirp_dup).
 
 Fix Perl_sv_dup, et al so that threads can return objects.
 
-=head2 Add class set operations to regexp engine
-
-Apparently these are quite useful. Anyway, Jeffery Friedl wants them.
-
-demerphq has this on his todo list, but right at the bottom.  
-
-
 =head1 Tasks for microperl