=head2 Keeping in sync
The source code to the Perl interpreter, in its different versions, is
-kept in a repository managed by a revision control system (which is
-currently the Perforce program, see http://perforce.com/). The
+kept in a repository managed by a revision control system ( which is
+currently the Perforce program, see http://perforce.com/ ). The
pumpkings and a few others have access to the repository to check in
changes. Periodically the pumpking for the development version of Perl
will release a new version, so the rest of the porters can see what's
available to the LAN and sync the other machines against this
directory.
-From http://rsync.samba.org/README.html:
+From http://rsync.samba.org/README.html :
"Rsync uses rsh or ssh for communication. It does not need to be
setuid and requires no special privileges for installation. It
It's then up to you to apply these patches, using something like
- # last=`ls -rt1 *.gz | tail -1`
+ # last=`ls -t *.gz | sed q`
# rsync -avz rsync://ftp.linux.activestate.com/perl-current-diffs/ .
# find . -name '*.gz' -newer $last -exec gzcat {} \; >blead.patch
# cd ../perl-current
=over 4
-There are three (3) remote administrative interfaces for modifying bug status, category, etc. In all cases an admin must be first registered with the Perlbug database by sending an email request to richard@perl.org or bugmongers@perl.org.
+There are three (3) remote administrative interfaces for modifying bug
+status, category, etc. In all cases an admin must be first registered
+with the Perlbug database by sending an email request to
+richard@perl.org or bugmongers@perl.org.
-The main requirement is the willingness to classify, (with the emphasis on closing where possible :), outstanding bugs. Further explanation can be garnered from the web at http://bugs.perl.org/, or by asking on the admin mailing list at: bugmongers@perl.org
+The main requirement is the willingness to classify, (with the
+emphasis on closing where possible :), outstanding bugs. Further
+explanation can be garnered from the web at http://bugs.perl.org/ , or
+by asking on the admin mailing list at: bugmongers@perl.org
For more info on the web see
copy (see L<Patching a core module>). This lets other porters review
your patch, which catches a surprising number of errors in patches.
Either use the diff program (available in source code form from
-I<ftp://ftp.gnu.org/pub/gnu/>), or use Johan Vromans' I<makepatch>
+ftp://ftp.gnu.org/pub/gnu/ , or use Johan Vromans' I<makepatch>
(available from I<CPAN/authors/id/JV/>). Unified diffs are preferred,
but context diffs are accepted. Do not send RCS-style diffs or diffs
without context lines. More information is given in the
Perl (if you can't get Perl to work, send mail to the address
I<perlbug@perl.org> or I<perlbug@perl.com>). Reporting bugs through
I<perlbug> feeds into the automated bug-tracking system, access to
-which is provided through the web at I<http://bugs.perl.org/>. It
+which is provided through the web at http://bugs.perl.org/ . It
often pays to check the archives of the perl5-porters mailing list to
see whether the bug you're reporting has been reported before, and if
so whether it was considered a bug. See above for the location of
the searchable archives.
-The CPAN testers (I<http://testers.cpan.org/>) are a group of
+The CPAN testers ( http://testers.cpan.org/ ) are a group of
volunteers who test CPAN modules on a variety of platforms. Perl Labs
-(I<http://labs.perl.org/>) automatically tests Perl source releases on
+( http://labs.perl.org/ ) automatically tests Perl source releases on
platforms and gives feedback to the CPAN testers mailing list. Both
efforts welcome volunteers.
You might also want to look at Gisle Aas's illustrated perlguts -
there's no guarantee that this will be absolutely up-to-date with the
latest documentation in the Perl core, but the fundamentals will be
-right. (http://gisle.aas.no/perl/illguts/)
+right. ( http://gisle.aas.no/perl/illguts/ )
=item L<perlxstut> and L<perlxs>
=item The perl5-porters FAQ
This is posted to perl5-porters at the beginning on every month, and
-should be available from http://perlhacker.org/p5p-faq; alternatively,
+should be available from http://perlhacker.org/p5p-faq ; alternatively,
you can get the FAQ emailed to you by sending mail to
C<perl5-porters-faq@perl.org>. It contains hints on reading
perl5-porters, information on how perl5-porters works and how Perl
to L<perlguts/Background and PERL_IMPLICIT_CONTEXT> for information on
the C<[pad]THX_?> macros.
-
=head2 Poking at Perl
To really poke around with Perl, you'll probably want to build Perl for
this when you post your patch to P5P; the pumpking needs to know this.
When you write your new code, please be conscious of existing code
-conventions used in the perl source files. See <perlstyle> for
+conventions used in the perl source files. See L<perlstyle> for
details. Although most of the guidelines discussed seem to focus on
Perl code, rather than c, they all apply (except when they don't ;).
See also I<Porting/patching.pod> file in the Perl source distribution
This binary is used in place of the standard 'perl' binary
when you want to debug Perl memory problems.
+To minimize the number of memory leak false alarms
+(see L</PERL_DESTRUCT_LEVEL>), set environment variable
+PERL_DESTRUCT_LEVEL to 2.
+
+ setenv PERL_DESTRUCT_LEVEL 2
+
+In Bourne-type shells:
+
+ PERL_DESTRUCT_LEVEL=2
+ export PERL_DESTRUCT_LEVEL
+
As an example, to show any memory leaks produced during the
standard Perl testset you would create and run the Purify'ed
perl as:
setenv PURIFYOPTIONS "-chain-length=25"
+In Bourne-type shells:
+
+ PURIFY_OPTIONS="..."
+ export PURIFY_OPTIONS
+
+or if you have the "env" utility:
+
+ env PURIFY_OPTIONS="..." ../pureperl ...
+
=head2 Purify on NT
Purify on Windows NT instruments the Perl binary 'perl.exe'
environment variable PERL_DESTRUCT_LEVEL to a non-zero value.
The t/TEST wrapper does set this to 2, and this is what you
need to do too, if you don't want to see the "global leaks":
+For example, for "third-degreed" Perl:
- PERL_DESTRUCT_LEVEL=2 ./perl.third t/foo/bar.t
+ env PERL_DESTRUCT_LEVEL=2 ./perl.third -Ilib t/foo/bar.t
=head2 Profiling
For further information, see your system's manual pages for pixie and prof.
+=head2 Miscellaneous tricks
+
+=over 4
+
+=item *
+
+Those debugging perl with the DDD frontend over gdb may find the
+following useful:
+
+You can extend the data conversion shortcuts menu, so for example you
+can display an SV's IV value with one click, without doing any typing.
+To do that simply edit ~/.ddd/init file and add after:
+
+ ! Display shortcuts.
+ Ddd*gdbDisplayShortcuts: \
+ /t () // Convert to Bin\n\
+ /d () // Convert to Dec\n\
+ /x () // Convert to Hex\n\
+ /o () // Convert to Oct(\n\
+
+the following two lines:
+
+ ((XPV*) (())->sv_any )->xpv_pv // 2pvx\n\
+ ((XPVIV*) (())->sv_any )->xiv_iv // 2ivx
+
+so now you can do ivx and pvx lookups or you can plug there the
+sv_peek "conversion":
+
+ Perl_sv_peek(my_perl, (SV*)()) // sv_peek
+
+(The my_perl is for threaded builds.)
+Just remember that every line, but the last one, should end with \n\
+
+Alternatively edit the init file interactively via:
+3rd mouse button -> New Display -> Edit Menu
+
+Note: you can define up to 20 conversion shortcuts in the gdb
+section.
+
+=back
+
=head2 CONCLUSION
We've had a brief look around the Perl source, an overview of the stages