Hello community, here is the log from the commit of package perl-Devel-NYTProf for openSUSE:Factory checked in at 2016-04-12 19:33:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Devel-NYTProf (Old) and /work/SRC/openSUSE:Factory/.perl-Devel-NYTProf.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Devel-NYTProf" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Devel-NYTProf/perl-Devel-NYTProf.changes 2015-08-07 00:24:36.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Devel-NYTProf.new/perl-Devel-NYTProf.changes 2016-04-12 19:33:37.000000000 +0200 @@ -1,0 +2,22 @@ +Mon Apr 4 09:34:04 UTC 2016 - co...@suse.com + +- updated to 6.03 + see /usr/share/doc/packages/perl-Devel-NYTProf/Changes + + =head2 Changes in Devel::NYTProf 6.03 - 25th March 2016 + + Fix to account for the deep stack optimizations in perl 5.23.8 + by Dave Mitchell, with my great gratitude! + Fix SIGUSR2 on MSWin32 and div by zero #78 PR#79 + with thanks to Nicolas Georges. + Fix for perl 5.8.8 but adding definition for tTHX. + Unify 'Profile format error' messages. + + Improve the TROUBLESHOOTING docs. + Added some more docs for the start=init option #85 + Corrected URL of KCachegrind home page #87 + with thanks to Denis Ibaev. + Corrected URL of sample report #80 + Removed dead code.nytimes.com URL and redundant history #84 + +------------------------------------------------------------------- Old: ---- Devel-NYTProf-6.02.tar.gz New: ---- Devel-NYTProf-6.03.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Devel-NYTProf.spec ++++++ --- /var/tmp/diff_new_pack.mSKr1O/_old 2016-04-12 19:33:38.000000000 +0200 +++ /var/tmp/diff_new_pack.mSKr1O/_new 2016-04-12 19:33:38.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-Devel-NYTProf # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: perl-Devel-NYTProf -Version: 6.02 +Version: 6.03 Release: 0 %define cpan_name Devel-NYTProf Summary: Powerful fast feature-rich Perl source code profiler @@ -42,81 +42,43 @@ %description Devel::NYTProf is a powerful, fast, feature-rich perl source code profiler. -* * + * Performs per-line statement profiling for fine detail - Performs per-line statement profiling for fine detail + * Performs per-subroutine statement profiling for overview -* * + * Performs per-opcode profiling for slow perl builtins - Performs per-subroutine statement profiling for overview + * Performs per-block statement profiling (the first profiler to do so) -* * + * Accounts correctly for time spent after calls return - Performs per-opcode profiling for slow perl builtins + * Performs inclusive and exclusive timing of subroutines -* * + * Subroutine times are per calling location (a powerful feature) - Performs per-block statement profiling (the first profiler to do so) + * Can profile compile-time activity, just run-time, or just END time -* * + * Uses novel techniques for efficient profiling - Accounts correctly for time spent after calls return + * Sub-microsecond (100ns) resolution on supported systems -* * + * Very fast - the fastest statement and subroutine profilers for perl - Performs inclusive and exclusive timing of subroutines + * Handles applications that fork, with no performance cost -* * + * Immune from noise caused by profiling overheads and I/O - Subroutine times are per calling location (a powerful feature) + * Program being profiled can stop/start the profiler -* * + * Generates richly annotated and cross-linked html reports - Can profile compile-time activity, just run-time, or just END time + * Captures source code, including string evals, for stable results -* * + * Trivial to use with mod_perl - add one line to httpd.conf - Uses novel techniques for efficient profiling + * Includes an extensive test suite -* * - - Sub-microsecond (100ns) resolution on supported systems - -* * - - Very fast - the fastest statement and subroutine profilers for perl - -* * - - Handles applications that fork, with no performance cost - -* * - - Immune from noise caused by profiling overheads and I/O - -* * - - Program being profiled can stop/start the profiler - -* * - - Generates richly annotated and cross-linked html reports - -* * - - Captures source code, including string evals, for stable results - -* * - - Trivial to use with mod_perl - add one line to httpd.conf - -* * - - Includes an extensive test suite - -* * - - Tested on very large codebases + * Tested on very large codebases NYTProf is effectively two profilers in one: a statement profiler, and a subroutine profiler. ++++++ Devel-NYTProf-6.02.tar.gz -> Devel-NYTProf-6.03.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/Changes new/Devel-NYTProf-6.03/Changes --- old/Devel-NYTProf-6.02/Changes 2015-08-02 21:48:43.000000000 +0200 +++ new/Devel-NYTProf-6.03/Changes 2016-03-25 20:17:40.000000000 +0100 @@ -4,6 +4,22 @@ =cut +=head2 Changes in Devel::NYTProf 6.03 - 25th March 2016 + + Fix to account for the deep stack optimizations in perl 5.23.8 + by Dave Mitchell, with my great gratitude! + Fix SIGUSR2 on MSWin32 and div by zero #78 PR#79 + with thanks to Nicolas Georges. + Fix for perl 5.8.8 but adding definition for tTHX. + Unify 'Profile format error' messages. + + Improve the TROUBLESHOOTING docs. + Added some more docs for the start=init option #85 + Corrected URL of KCachegrind home page #87 + with thanks to Denis Ibaev. + Corrected URL of sample report #80 + Removed dead code.nytimes.com URL and redundant history #84 + =head2 Changes in Devel::NYTProf 6.02 - 2nd August 2015 FlameGraphs upgraded the latest version, which supports searching. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/FileHandle.xs new/Devel-NYTProf-6.03/FileHandle.xs --- old/Devel-NYTProf-6.02/FileHandle.xs 2015-06-03 19:46:59.000000000 +0200 +++ new/Devel-NYTProf-6.03/FileHandle.xs 2016-03-19 22:47:20.000000000 +0100 @@ -56,6 +56,10 @@ # define FILE_STATE(f) NYTP_FILE_STDIO #endif +#if defined(PERL_IMPLICIT_CONTEXT) && ! defined(tTHX) +# define tTHX PerlInterpreter* +#endif + struct NYTP_file_t { FILE *file; #ifdef PERL_IMPLICIT_CONTEXT @@ -351,7 +355,7 @@ NYTP_read(NYTP_file ifile, void *buffer, size_t len, const char *what) { size_t got = NYTP_read_unchecked(ifile, buffer, len); if (got != len) { - croak("Profile format error whilst reading %s at %ld%s: expected %ld got %ld, %s", + croak("Profile format error whilst reading %s at %ld%s: expected %ld got %ld, %s (see TROUBLESHOOTING in docs)", what, NYTP_tell(ifile), NYTP_type_of_offset(ifile), (long)len, (long)got, (NYTP_eof(ifile)) ? "end of file" : NYTP_fstrerror(ifile)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/META.json new/Devel-NYTProf-6.03/META.json --- old/Devel-NYTProf-6.02/META.json 2015-08-03 10:15:49.000000000 +0200 +++ new/Devel-NYTProf-6.03/META.json 2016-03-25 20:20:48.000000000 +0100 @@ -62,6 +62,6 @@ }, "x_MailingList" : "http://groups.google.com/group/develnytprof-dev" }, - "version" : "6.02", + "version" : "6.03", "x_serialization_backend" : "JSON::PP version 2.27203" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/META.yml new/Devel-NYTProf-6.03/META.yml --- old/Devel-NYTProf-6.02/META.yml 2015-08-03 10:15:49.000000000 +0200 +++ new/Devel-NYTProf-6.03/META.yml 2016-03-25 20:20:47.000000000 +0100 @@ -33,5 +33,5 @@ homepage: https://code.google.com/p/perl-devel-nytprof/ license: http://dev.perl.org/licenses/ repository: git://github.com/timbunce/devel-nytprof.git -version: '6.02' +version: '6.03' x_serialization_backend: 'CPAN::Meta::YAML version 0.012' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/NYTProf.xs new/Devel-NYTProf-6.03/NYTProf.xs --- old/Devel-NYTProf-6.02/NYTProf.xs 2015-06-03 19:46:59.000000000 +0200 +++ new/Devel-NYTProf-6.03/NYTProf.xs 2016-03-19 19:48:42.000000000 +0100 @@ -629,7 +629,7 @@ NYTP_read(ifile, &tag, sizeof(tag), "string prefix"); if (NYTP_TAG_STRING != tag && NYTP_TAG_STRING_UTF8 != tag) - croak("File format error at offset %ld%s, expected string tag but found %d ('%c')", + croak("Profile format error at offset %ld%s, expected string tag but found %d ('%c') (see TROUBLESHOOTING in docs)", NYTP_tell(ifile)-1, NYTP_type_of_offset(ifile), tag, tag); len = read_u32(ifile); @@ -1271,6 +1271,12 @@ #ifdef CXt_LOOP_LAZYIV case CXt_LOOP_LAZYIV: return "CXt_LOOP_LAZYIV"; #endif +#ifdef CXt_LOOP_ARY + case CXt_LOOP_ARY: return "CXt_LOOP_ARY"; +#endif +#ifdef CXt_LOOP_LIST + case CXt_LOOP_LIST: return "CXt_LOOP_LIST"; +#endif } /* short-lived and not thread safe but we only use this for tracing * and it should never be reached anyway @@ -1323,12 +1329,17 @@ # endif break; #else -# if defined (CXt_LOOP_PLAIN) && defined (CXt_LOOP_FOR) && defined(CXt_LOOP_LAZYIV) && defined (CXt_LOOP_LAZYSV) +# if defined (CXt_LOOP_PLAIN) && defined(CXt_LOOP_LAZYIV) && defined (CXt_LOOP_LAZYSV) /* This is Perl 5.11.0 or later */ case CXt_LOOP_LAZYIV: case CXt_LOOP_LAZYSV: case CXt_LOOP_PLAIN: +# if defined (CXt_LOOP_FOR) case CXt_LOOP_FOR: +# else + case CXt_LOOP_ARY: + case CXt_LOOP_LIST: +# endif start_op = cx->blk_loop.my_op->op_redoop; break; # else @@ -1987,9 +1998,9 @@ }; /* save stack index to the current subroutine entry structure */ -static I32 subr_entry_ix = 0; +static I32 subr_entry_ix = -1; -#define subr_entry_ix_ptr(ix) ((ix) ? SSPTR(ix, subr_entry_t *) : NULL) +#define subr_entry_ix_ptr(ix) ((ix != -1) ? SSPTR(ix, subr_entry_t *) : NULL) static void @@ -2404,7 +2415,7 @@ if (subr_entry_ix <= prev_subr_entry_ix) { /* one cause of this is running NYTProf with threads */ - logwarn("NYTProf panic: stack is confused, giving up! (Try running with subs=0)\n"); + logwarn("NYTProf panic: stack is confused, giving up! (Try running with subs=0) ix=%"IVdf" prev_ix=%"IVdf"\n", (IV)subr_entry_ix, (IV)prev_subr_entry_ix); /* limit the damage */ disable_profile(aTHX); return prev_subr_entry_ix; @@ -2653,7 +2664,7 @@ CV *called_cv; dSP; SV *sub_sv = *SP; - I32 this_subr_entry_ix = 0; /* local copy (needed for goto) */ + I32 this_subr_entry_ix; /* local copy (needed for goto) */ subr_entry_t *subr_entry; @@ -2668,7 +2679,7 @@ /* don't profile other kinds of goto */ || (op_type==OP_GOTO && ( !(SvROK(sub_sv) && SvTYPE(SvRV(sub_sv)) == SVt_PVCV) - || !subr_entry_ix ) /* goto out of sub whose entry wasn't profiled */ + || subr_entry_ix == -1) /* goto out of sub whose entry wasn't profiled */ ) #ifdef MULTIPLICITY || (orig_my_perl && my_perl != orig_my_perl) @@ -2770,6 +2781,7 @@ subr_entry = subr_entry_ix_ptr(this_subr_entry_ix); /* detect wierdness/corruption */ + assert(subr_entry); assert(subr_entry->caller_fid < fidhash.next_id); /* Check if this call has already been counted because the op performed @@ -4732,7 +4744,7 @@ if (NYTP_read_unchecked(in, &c, sizeof(c)) != sizeof(c)) { if (NYTP_eof(in)) break; - croak("Profile format error '%s' whilst reading tag at %ld", + croak("Profile format error '%s' whilst reading tag at %ld (see TROUBLESHOOTING in docs)", NYTP_fstrerror(in), NYTP_tell(in)); } @@ -4882,7 +4894,7 @@ char *end = NYTP_gets(in, &buffer, &buffer_len); if (NULL == end) /* probably EOF */ - croak("Profile format error reading attribute"); + croak("Profile format error reading attribute (see TROUBLESHOOTING in docs)"); --end; /* End, as returned, points 1 after the \n */ if ((NULL == (value = (char *)memchr(buffer, '=', end - buffer)))) { logwarn("attribute malformed '%s'\n", buffer); @@ -4913,7 +4925,7 @@ char *end = NYTP_gets(in, &buffer, &buffer_len); if (NULL == end) /* probably EOF */ - croak("Profile format error reading attribute"); + croak("Profile format error reading attribute (see TROUBLESHOOTING in docs)"); --end; /* end, as returned, points 1 after the \n */ if ((NULL == (value = (char *)memchr(buffer, '=', end - buffer)))) { logwarn("option malformed '%s'\n", buffer); @@ -4933,7 +4945,7 @@ char *end = NYTP_gets(in, &buffer, &buffer_len); if (!end) /* probably EOF */ - croak("Profile format error reading comment"); + croak("Profile format error reading comment (see TROUBLESHOOTING in docs)"); if (callbacks[nytp_comment]) callbacks[nytp_comment](state, nytp_comment, buffer, @@ -4958,7 +4970,7 @@ } default: - croak("File format error: token %d ('%c'), chunk %lu, pos %ld%s", + croak("Profile format error: token %d ('%c'), chunk %lu, pos %ld%s (see TROUBLESHOOTING in docs)", c, c, state->input_chunk_seqn, NYTP_tell(in)-1, NYTP_type_of_offset(in)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/bin/nytprofcalls new/Devel-NYTProf-6.03/bin/nytprofcalls --- old/Devel-NYTProf-6.02/bin/nytprofcalls 2015-08-03 10:12:30.000000000 +0200 +++ new/Devel-NYTProf-6.03/bin/nytprofcalls 2016-03-25 20:12:35.000000000 +0100 @@ -14,7 +14,7 @@ use Devel::NYTProf::Core; require Devel::NYTProf::Data; -our $VERSION = '6.02'; +our $VERSION = '6.03'; use Data::Dumper; use Getopt::Long; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/bin/nytprofcg new/Devel-NYTProf-6.03/bin/nytprofcg --- old/Devel-NYTProf-6.02/bin/nytprofcg 2015-05-10 15:34:04.000000000 +0200 +++ new/Devel-NYTProf-6.03/bin/nytprofcg 2016-03-25 20:12:35.000000000 +0100 @@ -134,6 +134,6 @@ The output Callgrind file can be loaded into the C<kcachegrind> GUI for interactive exploration. -For more information see L<http://kcachegrind.sourceforge.net/html/Home.html> +For more information see L<http://kcachegrind.github.io/html/Home.html> =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/bin/nytprofcsv new/Devel-NYTProf-6.03/bin/nytprofcsv --- old/Devel-NYTProf-6.02/bin/nytprofcsv 2015-05-10 15:36:29.000000000 +0200 +++ new/Devel-NYTProf-6.03/bin/nytprofcsv 2016-03-25 20:12:35.000000000 +0100 @@ -142,19 +142,6 @@ B<nytprofcsv is deprecated and will be removed in a future release.> -=head1 HISTORY - -A bit of history and a shameless plug... - -NYTProf stands for 'New York Times Profiler'. Indeed, the original version of this -module was developed by The New York Times Co. to help our developers quickly -identify bottlenecks in large Perl applications. The NY Times loves Perl and -we hope the community will benefit from our work as much as we have from theirs. - -Please visit L<http://open.nytimes.com>, our open source blog to see what we are -up to, L<http://code.nytimes.com> to see some of our open projects and then -check out L<htt://nytimes.com> for the latest news! - =head1 DESCRIPTION C<nytprofcsv> is a script that implements L<Devel::NYTProf::Reader> to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/bin/nytprofhtml new/Devel-NYTProf-6.03/bin/nytprofhtml --- old/Devel-NYTProf-6.02/bin/nytprofhtml 2015-08-03 10:12:45.000000000 +0200 +++ new/Devel-NYTProf-6.03/bin/nytprofhtml 2016-03-25 20:12:35.000000000 +0100 @@ -61,7 +61,7 @@ ); use Devel::NYTProf::Constants qw(NYTP_SCi_CALLING_SUB); -our $VERSION = '6.02'; +our $VERSION = '6.03'; if ($VERSION != $Devel::NYTProf::Core::VERSION) { die "$0 version '$VERSION' doesn't match version '$Devel::NYTProf::Core::VERSION' of $INC{'Devel/NYTProf/Core.pm'}\n"; @@ -158,7 +158,8 @@ lib->import($opt_lib); } -$SIG{USR2} = \&Carp::cluck; +$SIG{USR2} = \&Carp::cluck + if exists $SIG{USR2}; # some platforms don't have SIGUSR2 (Windows) my $reporter = new Devel::NYTProf::Reader($opt_file, { quiet => 0, @@ -1022,10 +1023,10 @@ my $total_time = $si->profile->{attribute}{profiler_duration}; my $incl_time = $si->incl_time; push @html, sprintf "Inclusive time: %s, %.2f%%", - fmt_time($incl_time), $incl_time/$total_time*100; + fmt_time($incl_time), $total_time ? $incl_time/$total_time*100 : 0; my $excl_time = $si->excl_time; push @html, sprintf "Exclusive time: %s, %.2f%%", - fmt_time($excl_time), $excl_time/$total_time*100 + fmt_time($excl_time), $total_time ? $excl_time/$total_time*100 : 0 if $excl_time ne $incl_time; if (my $mrd = $si->recur_max_depth) { @@ -1598,8 +1599,8 @@ <div class="footer">Report produced by the <a href="http://metacpan.org/release/Devel-NYTProf/">NYTProf $version</a> Perl profiler, developed by - <a href="http://www.linkedin.com/in/timbunce">Tim Bunce</a> and - <a href="http://code.nytimes.com">Adam Kaplan</a>. + <a href="http://www.linkedin.com/in/timbunce">Tim Bunce</a> based on + work by Adam Kaplan and Salvador Fandiño García. </div> $spacing }; @@ -1999,11 +2000,11 @@ =head1 SAMPLE OUTPUT -You can see a complete report for a large application (over 200 files and 2000 subroutines) at -L<https://www.me.com/ix/tim.bunce/Public/perl/nytprof/nytprof-perlcritic-demo/index.html> +You can see a complete report for a large application at +L<http://timbunce.github.io/devel-nytprof/sample-report/nytprof-20160319/index.html> -The report was generated by profiling L<perlcritic> 1.106 checking its own source code -using perl 5.12.1. +The report was generated by profiling L<perlcritic> 1.121 checking its own source code +using perl v5.18.2. =head1 DIAGNOSTICS @@ -2025,20 +2026,6 @@ running, before an autoloaded sub is called. -=head1 HISTORY - -A bit of history and a shameless plug... - -NYTProf stands for 'New York Times Profiler'. Indeed, this module was initially -developed from Devel::FastProf by The New York Times Co. to help our developers -quickly identify bottlenecks in large Perl applications. The NY Times loves -Perl and we hope the community will benefit from our work as much as we have -from theirs. - -Please visit L<http://open.nytimes.com>, our open source blog to see what we -are up to, L<http://code.nytimes.com> to see some of our open projects and then -check out L<http://nytimes.com> for the latest news! - =head2 Background Subroutine-level profilers: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/bin/nytprofmerge new/Devel-NYTProf-6.03/bin/nytprofmerge --- old/Devel-NYTProf-6.02/bin/nytprofmerge 2015-08-03 10:12:49.000000000 +0200 +++ new/Devel-NYTProf-6.03/bin/nytprofmerge 2016-03-25 20:12:35.000000000 +0100 @@ -16,7 +16,7 @@ require Devel::NYTProf::Data; use List::Util qw(min sum); -our $VERSION = '6.02'; +our $VERSION = '6.03'; if ($VERSION != $Devel::NYTProf::Core::VERSION) { die "$0 version '$VERSION' doesn't match version '$Devel::NYTProf::Core::VERSION' of $INC{'Devel/NYTProf/Core.pm'}\n"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/bin/nytprofpf new/Devel-NYTProf-6.03/bin/nytprofpf --- old/Devel-NYTProf-6.02/bin/nytprofpf 2015-08-03 10:12:55.000000000 +0200 +++ new/Devel-NYTProf-6.03/bin/nytprofpf 2016-03-25 20:12:35.000000000 +0100 @@ -54,7 +54,7 @@ ); use Devel::NYTProf::Constants qw(NYTP_SCi_CALLING_SUB); -our $VERSION = '6.02'; +our $VERSION = '6.03'; if ($VERSION != $Devel::NYTProf::Core::VERSION) { die "$0 version '$VERSION' doesn't match version '$Devel::NYTProf::Core::VERSION' of $INC{'Devel/NYTProf/Core.pm'}\n"; @@ -113,7 +113,8 @@ lib->import($opt_lib); } -eval { $SIG{USR2} = \&Carp::cluck }; # some platforms don't have SIGUSR2 (Windows) +$SIG{USR2} = \&Carp::cluck + if exists $SIG{USR2}; # some platforms don't have SIGUSR2 (Windows) my $reporter = new Devel::NYTProf::Reader($opt_file, { quiet => 0, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/lib/Devel/NYTProf/Core.pm new/Devel-NYTProf-6.03/lib/Devel/NYTProf/Core.pm --- old/Devel-NYTProf-6.02/lib/Devel/NYTProf/Core.pm 2015-08-03 10:13:21.000000000 +0200 +++ new/Devel-NYTProf-6.03/lib/Devel/NYTProf/Core.pm 2016-03-25 20:12:35.000000000 +0100 @@ -12,7 +12,7 @@ use XSLoader; -our $VERSION = '6.02'; # increment with XS changes too +our $VERSION = '6.03'; # increment with XS changes too XSLoader::load('Devel::NYTProf', $VERSION); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-NYTProf-6.02/lib/Devel/NYTProf.pm new/Devel-NYTProf-6.03/lib/Devel/NYTProf.pm --- old/Devel-NYTProf-6.02/lib/Devel/NYTProf.pm 2015-08-03 10:13:27.000000000 +0200 +++ new/Devel-NYTProf-6.03/lib/Devel/NYTProf.pm 2016-03-25 20:12:35.000000000 +0100 @@ -9,7 +9,7 @@ ########################################################### package Devel::NYTProf; -our $VERSION = '6.02'; # also change in Devel::NYTProf::Core +our $VERSION = '6.03'; # also change in Devel::NYTProf::Core package # hide the package from the PAUSE indexer DB; @@ -332,7 +332,7 @@ Specify at which phase of program execution the profiler should be enabled: start=begin - start immediately (the default) - start=init - start at beginning of INIT phase (after compilation) + start=init - start at beginning of INIT phase (after compilation/use/BEGIN) start=end - start at beginning of END phase start=no - don't automatically start @@ -340,6 +340,9 @@ by calling DB::enable_profile() and DB::disable_profile() yourself. See L</RUN-TIME CONTROL OF PROFILING>. +The start=init option is handy if you want to avoid profiling the loading and +initialization of modules. + =head2 optimize=0 Disable the perl optimizer. @@ -853,7 +856,7 @@ =head2 nytprofcg Translates a profile into a format that can be loaded into KCachegrind -L<http://kcachegrind.sourceforge.net> +L<http://kcachegrind.github.io/> =head2 nytprofcalls @@ -1158,9 +1161,10 @@ =head1 TROUBLESHOOTING -=head2 "Profile data incomplete, ..." or "File format error: ..." +=head2 "Profile data incomplete, ..." or "Profile format error: ..." -This error message means the file doesn't contain all the expected data. +This error message means the file doesn't contain all the expected data +or the data has been corrupted in some way. That may be because it was truncated (perhaps the filesystem was full) or, more commonly, because the all the expected data hasn't been written. @@ -1171,8 +1175,10 @@ exits cleanly (runs C<END> blocks or L</finish_profile> is called explicitly). If the process being profiled has exited then it's likely that it met with a -sudden and unnatural death that didn't give NYTProf a chance to finish the profile. -If the sudden death was due to a signal then L</sigexit=1> may help. +sudden and unnatural death that didn't give NYTProf a chance to finish the +profile. If the sudden death was due to a signal, like SIGTERM, or a SIGINT +from pressing Ctrl-C, then the L</sigexit=1> option may help. + If the sudden death was due to calling C<POSIX::_exit($status)> then you'll need to call L</finish_profile> before calling C<POSIX::_exit>. @@ -1180,6 +1186,11 @@ being profiled. That's most likely to happen if you enable profiling via the C<PERL5OPT> environment variable and have forgotten to unset it. +If you've encountered this error message, and you're sure you've understood the +concerns described above, and you're sure they don't apply in your case, then +please open an issue. Be sure to include sufficient information so I can see +how you've addressed these likely causes. + =head2 Some source files don't have profile information This is usually due to NYTProf being initialized after some perl files have @@ -1256,26 +1267,12 @@ =head1 COPYRIGHT AND LICENSE Copyright (C) 2008 by Adam Kaplan and The New York Times Company. - Copyright (C) 2008-2013 by Tim Bunce, Ireland. + Copyright (C) 2008-2016 by Tim Bunce, Ireland. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available. -=head1 HISTORY - -A bit of history (and a shameless plug from Adam)... - -NYTProf stands for 'New York Times Profiler'. Indeed, this module was initially -developed from Devel::FastProf by The New York Times Co. to help our developers -quickly identify bottlenecks in large Perl applications. The NY Times loves -Perl and we hope the community will benefit from our work as much as we have -from theirs. - -Please visit L<http://open.nytimes.com>, our open source blog to see what we -are up to, L<http://code.nytimes.com> to see some of our open projects and then -check out L<http://nytimes.com> for the latest news! - =head2 Background Subroutine-level profilers: