Remove completed perltodo entry
[p5sagit/p5-mst-13.2.git] / pod / perltodo.pod
index f99c4ae..00effc3 100644 (file)
@@ -36,9 +36,11 @@ Since then the Perl 6 target moved, but the Perl 5 implementation did not.
 So it would be useful for someone to compare the Perl 6 smartmatch table
 as of February 2006 L<http://svn.perl.org/viewvc/perl6/doc/trunk/design/syn/S03.pod?view=markup&pathrev=7615>
 and the current table L<http://svn.perl.org/viewvc/perl6/doc/trunk/design/syn/S03.pod?revision=14556&view=markup>
-and tabulate the differences in Perl 6. The diff is
+and tabulate the differences in Perl 6. The annotated view of changes is
+L<http://svn.perl.org/viewvc/perl6/doc/trunk/design/syn/S03.pod?view=annotate> and the diff is
 C<svn diff -r7615:14556 http://svn.perl.org/perl6/doc/trunk/design/syn/S03.pod>
--- search for C<=head1 Smart matching>
+-- search for C<=head1 Smart matching>. (In theory F<viewvc> can generate that,
+but in practice when I tried it hung forever, I assume "thinking")
 
 With that done and published, someone (else) can then map any changed Perl 6
 semantics back to Perl 5, based on how the existing semantics map to Perl 5:
@@ -89,13 +91,6 @@ 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 merge checkpods and podchecker
-
-F<pod/checkpods.PL> (and C<make check> in the F<pod/> subdirectory)
-implements a very basic check for pod files, but the errors it discovers
-aren't found by podchecker. Add this check to podchecker, get rid of
-checkpods and have C<make check> use podchecker.
-
 =head2 Parallel testing
 
 (This probably impacts much more than the core: also the Test::Harness
@@ -124,28 +119,6 @@ tests that are currently missing.
 
 A full test suite for the B module would be nice.
 
-=head2 Deparse inlined constants
-
-Code such as this
-
-    use constant PI => 4;
-    warn PI
-
-will currently deparse as
-
-    use constant ('PI', 4);
-    warn 4;
-
-because the tokenizer inlines the value of the constant subroutine C<PI>.
-This allows various compile time optimisations, such as constant folding
-and dead code elimination. Where these haven't happened (such as the example
-above) it ought be possible to make B::Deparse work out the name of the
-original constant, because just enough information survives in the symbol
-table to do this. Specifically, the same scalar is used for the constant in
-the optree as is used for the constant subroutine, so by iterating over all
-symbol tables and generating a mapping of SV address to constant name, it
-would be possible to provide B::Deparse with this functionality.
-
 =head2 A decent benchmark
 
 C<perlbench> seems impervious to any recent changes made to the perl core. It
@@ -382,14 +355,14 @@ Right now, Configure probes for two commands, and sets two variables:
 
 =over 4
 
-=item * C<cc (cc.U)>
+=item * C<cc> (in F<cc.U>)
 
 This variable holds the name of a command to execute a C compiler which
 can resolve multiple global references that happen to have the same
 name.  Usual values are F<cc> and F<gcc>.
 Fervent ANSI compilers may be called F<c89>.  AIX has F<xlc>.
 
-=item * ld (dlsrc.U)
+=item * C<ld> (in F<dlsrc.U>)
 
 This variable indicates the program to be used to link
 libraries for dynamic loading.  On some systems, it is F<ld>.
@@ -398,29 +371,31 @@ the hint file setting.
 
 =back
 
-There is an implicit historical assumption, probably from Perl 1, that C<$cc>
-is also the correct command for linking object files together to make an
-executable. This may be true on Unix, but it's not true on other platforms,
-and there are a maze of work arounds in other places (such as F<Makefile.SH>)
-to cope with this.
+There is an implicit historical assumption from around Perl5.000alpha
+something, that C<$cc> is also the correct command for linking object files
+together to make an executable. This may be true on Unix, but it's not true
+on other platforms, and there are a maze of work arounds in other places (such
+as F<Makefile.SH>) to cope with this.
 
 Ideally, we should create a new variable to hold the name of the executable
 linker program, probe for it in F<Configure>, and centralise all the special
 case logic there or in hints files.
 
 A small bikeshed issue remains - what to call it, given that C<$ld> is already
-taken (arguably for the wrong thing) and C<$link> could be confused with the
-Unix command line executable of the same name, which does something completely
-different. Andy Dougherty makes the counter argument "In parrot, I tried to
-call the command used to link object files and  libraries into an executable
-F<link>, since that's what my vaguely-remembered DOS and VMS experience
-suggested.  I don't think any real confusion has ensued, so it's probably a
-reasonable name for perl5 to use."
+taken (arguably for the wrong thing now, but on SunOS 4.1 it is the command
+for creating dynamically-loadable modules) and C<$link> could be confused with
+the Unix command line executable of the same name, which does something
+completely different. Andy Dougherty makes the counter argument "In parrot, I
+tried to call the command used to link object files and  libraries into an
+executable F<link>, since that's what my vaguely-remembered DOS and VMS
+experience suggested. I don't think any real confusion has ensued, so it's
+probably a reasonable name for perl5 to use."
 
 "Alas, I've always worried that introducing it would make things worse, 
 since now the module building utilities would have to look for 
 C<$Config{link}> and institute a fall-back plan if it weren't found."
-
+Although I can see that as confusing, given that C<$Config{d_link}> is true
+when (hard) links are available.
 
 =head1 Tasks that need a little C knowledge
 
@@ -841,6 +816,23 @@ also the warning messages (see L<perllexwarn>, C<warnings.pl>).
 These tasks would need C knowledge, and knowledge of how the interpreter works,
 or a willingness to learn.
 
+=head2 error reporting of [$a ; $b]
+
+Using C<;> inside brackets is a syntax error, and we don't propose to change
+that by giving it any meaning. However, it's not reported very helpfully:
+
+    $ perl -e '$a = [$b; $c];'
+    syntax error at -e line 1, near "$b;"
+    syntax error at -e line 1, near "$c]"
+    Execution of -e aborted due to compilation errors.
+
+It should be possible to hook into the tokeniser or the lexer, so that when a
+C<;> is parsed where it is not legal as a statement terminator (ie inside
+C<{}> used as a hashref, C<[]> or C<()>) it issues an error something like
+I<';' isn't legal inside an expression - if you need multiple statements use a
+do {...} block>. See the thread starting at
+http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-09/msg00573.html
+
 =head2 lexicals used only once
 
 This warns:
@@ -920,11 +912,6 @@ could probably be optimized.
 The old perltodo notes that lvalue functions don't work for list or hash
 slices. This would be good to fix.
 
-=head2 LVALUE functions in the debugger
-
-The old perltodo notes that lvalue functions don't work in the debugger. This
-would be good to fix.
-
 =head2 regexp optimiser optional
 
 The regexp optimiser is not optional. It should configurable to be, to allow