http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/
+What can we offer you in return? Fame, fortune, and everlasting glory? Maybe
+not, but if your patch is incorporated, then we'll add your name to the
+F<AUTHORS> file, which ships in the official distribution. How many other
+programming languages offer you 1 line of immortality?
+=head1 The roadmap to 5.10
+The roadmap to 5.10 envisages feature based releases, as various items in this
+TODO are completed.
+=head2 Needed for a 5.9.3 release
+
+=over
+
+=item *
+Implement L</lexical pragmas>
+
+=back
+
+=head2 Needed for a 5.9.4 release
+
+=over
+
+=item *
+Review assertions. Review syntax to combine assertions. Can assertions take
+advantage of the lexical pragams work? L</What hooks would assertions need?>
+
+=back
+
+=head2 Needed for a 5.9.5 release
+
+=over
+
+=item *
+Implement L</_ prototype character>
+
+=item *
+Implement L</state variables>
+
+=back
+
+=head2 Needed for a 5.9.6 release
+
+Stabilisation. If all goes well, this will be the equivalent of a 5.10-beta.
=head1 Tasks that only need Perl knowledge
errors. See also L</make HTML install work>, as the layout of installation tree
is needed to improve the cross-linking.
+The addition of C<Pod::Simple> and its related modules may make this task
+easier to complete.
+
+=head2 Parallel testing
+
+The core regression test suite is getting ever more comprehensive, which has
+the side effect that it takes longer to run. This isn't so good. Investigate
+whether it would be feasible to give the harness script the B<option> of
+running sets of tests in parallel. This would be useful for tests in
+F<t/op/*.t> and F<t/uni/*.t> and maybe some sets of tests in F<lib/>.
+
+Questions to answer
+
+=over 4
+
+=item 1
+
+How does screen layout work when you're running more than one test?
+
+=item 2
+
+How does the caller of test specify how many tests to run in parallel?
+
+=item 3
+
+How do setup/teardown tests identify themselves?
+
+=back
+
+Pugs already does parallel testing - can their approach be re-used?
+
=head2 Make Schwern poorer
We should have for everything. When all the core's modules are tested,
=head2 A decent benchmark
-perlbench seems impervious to any recent changes made to the perl core. It
+C<perlbench> seems impervious to any recent changes made to the perl core. It
would be useful to have a reasonable general benchmarking suite that roughly
represented what current perl programs do, and measurably reported whether
tweaks to the core improve, degrade or don't really affect performance, to
Or if you prefer, tasks that you would learn from, and broaden your skills
base...
+=head2 Relocatable perl
+
+The C level patches needed to create a relocatable perl binary are done, as
+is the work on F<Config.pm>. All that's left to do is the C<Configure> tweaking
+to let people specify how they want to do the install.
+
=head2 make HTML install work
There is an C<installhtml> target in the Makefile. It's marked as
=item 2
-Work out how to split perlfunc into chunks, preferably one per function group,
-preferably with general case code that could be used elsewhere. Challenges
-here are correctly identifying the groups of functions that go together, and
-making the right named external cross-links point to the right page. Things to
-be aware of are C<-X>, groups such as C<getpwnam> to C<endservent>, two or
-more C<=items> giving the different parameter lists, such as
+Work out how to split C<perlfunc> into chunks, preferably one per function
+group, preferably with general case code that could be used elsewhere.
+Challenges here are correctly identifying the groups of functions that go
+together, and making the right named external cross-links point to the right
+page. Things to be aware of are C<-X>, groups such as C<getpwnam> to
+C<endservent>, two or more C<=items> giving the different parameter lists, such
+as
=item substr EXPR,OFFSET,LENGTH,REPLACEMENT
a binary distribution better describes the installed machine, when the
installed machine differs from the build machine in some significant way.
-=head2 Relocatable perl
-
-The C level patches needed to create a relocatable perl binary are done, as
-is the work on Config.pm. All that's left to do is the C<Configure> tweaking
-to let people specify how they want to do the install.
-
=head2 make parallel builds work
Currently parallel builds (such as C<make -j3>) don't work reliably. We believe
It would be good if someone were able to track down the causes of these
problems, so that parallel builds worked properly.
+=head2 linker specification files
+
+Some platforms mandate that you provide a list of a shared library's external
+symbols to the linker, so the core already has the infrastructure in place to
+do this for generating shared perl libraries. My understanding is that the
+GNU toolchain can accept an optional linker specification file, and restrict
+visibility just to symbols declared in that file. It would be good to extend
+F<makedef.pl> to support this format, and to provide a means within
+C<Configure> to enable it. This would allow Unix users to test that the
+export list is correct, and to build a perl that does not pollute the global
+namespace with private symbols.
+
+
=head1 Tasks that need a little C knowledge
=head2 Make it clear from -v if this is the exact official release
-Currently perl from p4/rsync ships with a patchlevel.h file that usually
-defines one local patch, of the form "MAINT12345" or "RC1". The output of
-perl -v doesn't report that a perl isn't an official release, and this
+Currently perl from C<p4>/C<rsync> ships with a F<patchlevel.h> file that
+usually defines one local patch, of the form "MAINT12345" or "RC1". The output
+of perl -v doesn't report that a perl isn't an official release, and this
information can get lost in bugs reports. Because of this, the minor version
isn't bumped up until RC time, to minimise the possibility of versions of perl
escaping that believe themselves to be newer than they actually are.
when making a tarball, yet leave the default source saying "I'm not the
official release".
+=head2 Tidy up global variables
+
+There's a note in F<intrpvar.h>
+
+ /* These two variables are needed to preserve 5.8.x bincompat because
+ we can't change function prototypes of two exported functions.
+ Probably should be taken out of blead soon, and relevant prototypes
+ changed. */
+
+So doing this, and removing any of the unused variables still present would
+be good.
+
=head2 Ordering of "global" variables.
F<thrdvar.h> and F<intrpvarh> define the "global" variables that need to be
Study the possibility of adding a new prototype character, C<_>, meaning
"this argument defaults to $_".
+=head2 state variables
+
+C<my $foo if 0;> is deprecated, and should be replaced with
+C<state $x = "initial value\n";> the syntax from Perl 6.
+
=head2 @INC source filter to Filter::Simple
The second return value from a sub in @INC can be a source filter. This isn't
=head2 make ithreads more robust
-Generally make ithreads more robust. See also L<iCOW>
+Generally make ithreads more robust. See also L</iCOW>
This task is incremental - even a little bit of work on it will help, and
will be greatly appreciated.