This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Removed unnecessary pointers checks
[perl5.git] / pod / perlcompile.pod
index 0ba9418..046576b 100644 (file)
@@ -9,7 +9,7 @@ internal form (a parse tree) which is then optimized before being
 run.  Since version 5.005, Perl has shipped with a module
 capable of inspecting the optimized parse tree (C<B>), and this has
 been used to write many useful utilities, including a module that lets
-you turn your Perl into C source code that can be compiled into an
+you turn your Perl into C source code that can be compiled into a
 native executable.
 
 The C<B> module provides access to the parse tree, and other modules
@@ -103,9 +103,9 @@ This is why all the back ends print:
 
 before producing any other output.
 
-=head2 The Cross Referencing Back End (B::Xref)
+=head2 The Cross Referencing Back End
 
-The cross referencing back end produces a report on your program,
+The cross referencing back end (B::Xref) produces a report on your program,
 breaking down declarations and uses of subroutines and variables (and
 formats) by file and subroutine.  For instance, here's part of the
 report from the I<pod2man> program that comes with Perl:
@@ -183,9 +183,6 @@ one-liners:
       rename $was, $_ unless $was eq $_;
   }
 
-(this is the I<rename> program that comes in the I<eg/> directory
-of the Perl source distribution).
-
 The decompiler has several options for the code it generates.  For
 instance, you can set the size of each indent from 4 (as above) to
 2 with:
@@ -203,11 +200,11 @@ The B<-p> option adds parentheses where normally they are omitted:
 
 See L<B::Deparse> for more information on the formatting options.
 
-=head2 The Lint Back End (B::Lint)
+=head2 The Lint Back End
 
-The lint back end inspects programs for poor style.  One programmer's
-bad style is another programmer's useful tool, so options let you
-select what is complained about.
+The lint back end (B::Lint) inspects programs for poor style.  One
+programmer's bad style is another programmer's useful tool, so options
+let you select what is complained about.
 
 To run the style checker across your source code:
 
@@ -239,9 +236,9 @@ execute the bytecode that it produces.  The ByteLoader module provides
 this functionality.
 
 To turn a Perl program into executable byte code, you can use C<perlcc>
-with the C<-b> switch:
+with the C<-B> switch:
 
-  perlcc -b myperlprogram.pl
+  perlcc -B myperlprogram.pl
 
 The byte code is machine independent, so once you have a compiled
 module or program, it is as portable as Perl source (assuming that
@@ -259,18 +256,20 @@ the Perl data structures directly.  The program will still link against
 the Perl interpreter library, to allow for eval(), C<s///e>,
 C<require>, etc.
 
-The C<perlcc> tool generates such executables when using the -opt
+The C<perlcc> tool generates such executables when using the -O
 switch.  To compile a Perl program (ending in C<.pl>
 or C<.p>):
 
-  perlcc -opt myperlprogram.pl
+  perlcc -O myperlprogram.pl
 
 To produce a shared library from a Perl module (ending in C<.pm>):
 
-  perlcc -opt Myperlmodule.pm
+  perlcc -O Myperlmodule.pm
 
 For more information, see L<perlcc> and L<B::CC>.
 
+=head1 Module List for the Compiler Suite
+
 =over 4
 
 =item B
@@ -306,8 +305,9 @@ I<assemble> program that produces bytecode.
 
 =item B::Bblock
 
-This module is used by the B::CC back end.  It walks "basic blocks",
-whatever they may be.
+This module is used by the B::CC back end.  It walks "basic blocks".
+A basic block is a series of operations which is known to execute from
+start to finish, with no possibility of branching or halting.
 
 =item B::Bytecode
 
@@ -337,6 +337,14 @@ programs translated into C by B::CC can execute faster than normal
 interpreted programs.  See L</"The Optimized C Back End"> for
 details about usage.
 
+=item B::Concise
+
+This module prints a concise (but complete) version of the Perl parse
+tree.  Its output is more customizable than the one of B::Terse or
+B::Debug (and it can emulate them). This module useful for people who
+are writing their own back end, or who are learning about the Perl
+internals.  It's not useful to the average programmer.
+
 =item B::Debug
 
 This module dumps the Perl parse tree in verbose detail to STDOUT.
@@ -368,12 +376,12 @@ can identify.  See L</"The Lint Back End"> for details about usage.
 =item B::Showlex
 
 This module prints out the my() variables used in a function or a
-file.  To gt a list of the my() variables used in the subroutine
+file.  To get a list of the my() variables used in the subroutine
 mysub() defined in the file myperlprogram:
 
   $ perl -MO=Showlex,mysub myperlprogram
 
-To gt a list of the my() variables used in the file myperlprogram:
+To get a list of the my() variables used in the file myperlprogram:
 
   $ perl -MO=Showlex myperlprogram
 
@@ -409,7 +417,7 @@ formats are defined and used within a program and the modules it
 loads.  See L</"The Cross Referencing Back End"> for details about
 usage.
 
-=cut
+=back
 
 =head1 KNOWN PROBLEMS
 
@@ -418,7 +426,7 @@ names.
 
 The optimized C backend outputs code for more modules than it should
 (e.g., DirHandle).  It also has little hope of properly handling
-C<goto LABEL> outside the running subroutine (C<goto &sub> is ok).
+C<goto LABEL> outside the running subroutine (C<goto &sub> is okay).
 C<goto LABEL> currently does not work at all in this backend.
 It also creates a huge initialization function that gives
 C compilers headaches.  Splitting the initialization function gives