This is an automated email from the git hooks/post-receive script. gregoa pushed a change to annotated tag upstream/6.02+dfsg in repository libdevel-nytprof-perl.
at 311ae82 (tag) tagging 7f3e56e17481a77bb04054a4af8ee80c38fa78e9 (commit) replaces upstream/6.01+dfsg tagged by gregor herrmann on Wed Aug 12 14:06:42 2015 +0200 - Log ----------------------------------------------------------------- Upstream version 6.02+dfsg Adam Kaplan (28): Initial directory structure. Initial check-in. Note that this code is completely decrecated and probably fairly broken! It is the oldest public release that I have, so I have uploaded it only as a benchmark of where the project started to measure how far it has come. Get the next svn version! Version 1.11. Stable CPAN release. Contains all changes from 0.02 through 1.11 Added HACKING file and updated MANIFEST accordingly Added links to svn repo @ google code Added test15p/x/v for perl <5.8.0 only and limited test06 to perl > 5.8 Added ModuleVersion.pm and changed everything to pull the distribution version Attempted fix for RHEL platform where %f is handled differently (?) Fixed compile errors on 5.8.8 Reverted Trunk to r13 because of too many major changes. Branched previous changes into sandbox at branches/tim.bunce SVN Keyword tests... SVN Keywords tests 2... Added svn property Id to all these files Fixed a bug in these scripts where the output directory was being checked for Changed "print OUT sprintf..." to less redundant "printf OUT ..." nytprofhtml - fixed module version variable Testing new svn alert list svn alert email list test attempt Failing to locate a source file after a best-effort attempt is no longer fatal (but will still whine) Updated changelog, Readme version and module version number Temporary patch -- Pause uses MakeMaker to determine versioning, and won't evaluate the 'required' version number. (All files that use the XS need to include its specific package version) - Added $VERSION to each module because the PAUSE indexer doesn't actually evaluation that Merged changes from the tim.bunce branch into the trunk. Added new header prototype to the html output for the invidual files. The output seemed overly bland. Added formatting to the subroutine link table: Removed link from the package name in the subroutine dispatch table (didn't make sense). Added ability to switch between any profile modes from any profile page. Current modes are 'block', 'line', and 'sub', however these can change arbitrarily without requirement any code in nytprofhtml to change. test.pl: swapped backwards warning messages. Chia-liang Kao (2): Make DB::enable_profile work after finish_profile is called. first cut of the nytoprof to cachegrind calltree output script. Christian Walde (2): ensure flamegraph.pl is called according to OS tell cpan about the repo David Booth (1): Clarified the documentation David Steinbrunner (29): kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ typo fix typo fixes typo fix typo fix typo fix typo fixes typo fix typo fix typo fixes kill $Id$ kill $Id$ kill $Id$ kill $Id$ kill $Id$ even more fixed META_MERGE Dylan Cali (1): fallback to checking PATH for nytprof scripts Ed J (2): Fix so works when perl installed in directory with space Make bin/nytprofhtml work when perl in space Gisle Aas (36): There is no copyright and contact information at the bottom of the test.pl file. Make the --open option imply --html Just pass on --open to nyprofhtml. Improved test descriptions. Make 'test.pl 5' run all the <test05.*> tests Don't complain about passing *.pm and *.pl files to test.pl Add the attributes missing from expected test output in r526. Make 'nytprofhtml --open' work on machines that does not run Mac OS X. Document the nytprofhtml --open option. Use standard tabstop (ts=8) in all vim modelines. Rename test.pl as t/20.runtests.t No need to calculate the $diff twice in fmt_incl_excl_time Improve the Englishness of the prologue text Produce more readable timestamps in the code prologs. Make fmt_incl_excl_time not repeat the unit Failed to consistently convert '1 times' to 'once'. Sort the call locations by the time spent in the funtion as well as call count Simplify; $caller_filename same as $filename. Don't show filename for call refs to the same file. Cleanup; load_profile_data_from_file do need a filename argument Cleanup; Use named constant for TIME_BLOCK marker Make indentation in the documentation code samples consistent. Use consistent POD item lists Add Devel::NYTProf::Data::Raw module Incorporate Tim's explanations of the mystery chunks Use '#!/usr/bin/perl' lines for the scripts Let $. track the chunk sequence numbers Reuse the same SVs for each callback call. Rename ::Data::Raw as ::ReadStream as suggested by Tim Complete the rename to ::ReadStream. Doc tweaks; document the header attributes used. Oops - missing braces on if-block Improve portability to older perls; gv_fetchpvs() not supported in 5.8 The timestamps in TAG_PID_{START,END} are NV Can't rely on #!-line to always work Avoid triggering "gcc internal compiler error" Helmut Wollmersdorfer (2): Typo in bin/nytprofhtml Typo in doc Holger Schmeisky (16): added printer for plat_forms style reports added tests for plat_forms style printer added files to ignore added printer for plat_forms style reports Merge branch 'master' of https://github.com/holger-s/devel-nytprof removed extra test case for plat_forms changed version back to 5.05 Merge branch 'master' of https://github.com/holger-s/devel-nytprof added tim's comments - removed old tests - removed extra platforms_tests Merge branch 'master' of https://github.com/holger-s/devel-nytprof - fixed test run - bumped version to 5.06 Merge remote-tracking branch 'upstream/master' - fixed test count to 2 for .pf files Jan Dubois (18): Fix signed/unsigned mismatch Declarations must come before executable code (for MS VisualC) Hash keys length are only 32 bits while STRLEN may be 64 An (unsigned long) is still only 32 bits on 64-bit Windows. %Ix prints the right number of bytes for size_t values for both 32 and 64 bit Windows. Declarations before executable code (plus a missing 'const') Use %p to format pointer values. Solves potential issue with Cygwin, which may define WIN32 symbol too but doesn't use MSVCRT.dll This C, not C++. Declaration must happen before any executable code inside the lexical scope! Perl built with the -DUSE_SITECUSTOMIZE option will execute an Fix type inconsistencies Add casts for 32/64 bit mismatches More 32/64-bit adjustments XSUB.h is supposed to redefine fgets under PERL_IMPLICIT_SYS, but doesn't There shall be only one plan per test file Need string form of eval() to defer execution of use() until runtime #ifdef works on symbols, not expressions Use File::Spec->catfile() for portability Move context definition into higher scopes Use "%"IVdf instead of "%ld" for printing IV values John P. Linderman (1): This changes only documentation, no testing should be required. Joshua ben Jore (8): bin/nytprof* --help exits true prefer usage() to &usage because we're not using any magic Invalid parameters to bin/nytprof* also prints usage Allow \ to escape things in NYTPROF environment variable Clean up crud Test \ escape in NYPROF environment variable Disable once, redefine warnings for t/31-env.t As of r748, require Test-More-0.81_01 or greater Karen Etheridge (3): switch from JSON::Any (deprecated) to JSON::MaybeXS ignore new ExtUtils::MakeMaker artifact switch search.cpan.org URLs to metacpan.org Mike Doherty (1): Document --minimal in nytprofhtml's POD Moritz Lenz (1): [doc] Devel::NYTProf needs to be loaded as early as possible Nicholas Clark (208): When reporting a token error in a profile file, also give the file offset, as Parse @ARGV to see if PERL_CORE=1 is there, which allows Devel::NYTProf to be Replace use of fputc() with fwrite() in output_int() Rename output_int() to output_tag_int(), optionally outputing the one byte tag Replace all fpuc(tag), output_int() combinations with a single call to Replace most uses of fgetc() in read_int() with a single fread(). Make every internal C function static (and one variable that I spotted). Eliminate (well, paper over) two compiler warnings about unused variables. Use a typedef for PL_ppaddr_orig so that we can case the value assigned to it, c cannot be anything other than EOF here, as there's no other way out of the If the expected test data file is missing (and hence undefined) for any reason, Reverse r407. For some reason "works on my machine" doesn't hold for all "my" Wrap all FILE * output functions in NYT_* functions, and the FILE *out in a Wrap all FILE * input functions in NYT_* functions, and the FILE *in in Add a tag for "starting deflated data stream". Add a state flag to the NYTP Correct the bad prefix on my names -- s/NYT_/NYTP_/g Add NYTP_start_inflate() which is called when we get the tag Fix a typo in printf's name. Make NYTP_write() and NYTP_read() validate that the file state is either STDIO Rename parameters to file functions to ifile/ofile from in/out as it's bad to "deflate" the stream (by copying it via a buffer, and for now a deliberately "inflate" via a copy loop NYTP_read(). And now invert the bits of everything we read and write. Modify the write code to write to a buffer, and only flush the buffer contents Remove my debugging fprintf()s that weren't supposed to be there. In struct NYTP_file_t, rename 'used' to 'count' Move the reading code into grab_input(), refilling the buffer as required. Fix the bug in NYTP_fstrerror In struct NYTP_file_t, rename buffer to small_buffer, as we will need two Add a large_buffer (which will become the buffer for the uncompressed data) and Eliminate NYTP_FILE_BUFFER_SIZE. Remove a duplicated initialisation. Include <zlib.h>. Link with -lz. Add a z_stream structure into NYTP_file. Deflate the output stream, inflate the input stream. All tests pass. (Finally) Refactor the library detection code in Makefile.PL to be more generic. Add a static variable compression_level, and use this to determine the Add a comment noting that the file is compressed, recording the compression In NYTP_tell(), for compressed files, instead of using the stdio file offset, Up the input and output buffer sizes to something sensible, now that we've Remove an extraneous -lz Replace file->state with a macro FILE_STATE(file), which can be conditionally Correctly wrap compression specific code in HAS_ZLIB so that it will compile Correct Perl_form() to Perl_form_nocontext(). Change the return type for grab_input() and flush_output() to void, as by now Update the paragraph on compression. RTFM reveals that the LIBS paramter to ExtUtils::MakeMaker is a list of Cope with the fact that on some versions of perl, strerror() is redefined with Note the possibility of using pthread_atfork() to detect forks. Add comments after the compressed stream, noting the totals for uncompressed Calculate the available output using two pointers, rather than relying on After a flush, reduce the available output buffer such that after the next struct NYTP_file's end, which is only used for input, can be eliminated, and For output, replace use count in NYTP_file with zs.avail_in, as the later is In struct NYTP_file, shrink state from int to unsigned char, and stdio_at_eof Make the decision to use %e format based on the precision passed in, rather than Use e notation for values under 0.0001, to give at least 2 digits of precision. Disable output file compression if compression_level is zero. We don't yet have If inflate fails, report the position in the input stream. If we're at EOF, Add an option compress that specifies the compression level (with 0 disabling In set_option(), replace linear copy/paste strEQ() && atoi() for integer Fix grammar error. Fix a typo I spotted, and another that ispell found. Another typo spotted by ispell. Pass in the length of the string to sub_pkg_filename_sv(), as we always have it Add SPAGAIN after call_sv()s used to make callbacks. Without this, the stack Correct the documentation for callback parameters for TIME_BLOCK and TIME_LINE Revert r952. The documentation for TIME_BLOCK and TIME_LINE is correct and for_chunks SUB_CALLERS was not passing the callback the caller name. Move calls to normalize_eval_seqn() after the callback runs, so that the Convert several occurrences of 'in' to the parameter passed to the function. Replacce NYTP_type_of_offset() with a macro when HAS_ZLIB is not defined. Replace the common construction CROAK_IF_NOT_STDIO() can explicitly do nothing when HAS_ZLIB is not defined. compressed_io_croak() is only needed when HAS_ZLIB is defined. Change NYTP_close() from returning pass/fail to returning pass/errno. Move the logging out of NYTP_close() into its callers. This will make it easier Move all NYTP_* file handling functions into FileHandle.xs Create a package Devel::NYTProf::FileHandle which can open and close NYYProf's file handles. Refactor output_int() and output_tag_int() to take an explict file handle. Refactor output_nv() to take an explict file handle. Refactor output_str() to take an explict file handle. Add methods write(), output_int(), output_nv() and output_str() to Devel::NYTProf::FileHandle. It's now possible to write out a profile file from Perl. Refactor Devel::NYTProf::ReadStream::output_iv() to take a list of values. Refactor Devel::NYTProf::ReadStream::output_nv() to take a list of values. A tool for merging NYTProf profile files. This prototype can't merge yet. An initial implementation of FID remapping. profiler_duration needs to sum over all PIDs run, not just the last PID seen. Merge 2 (or more) NYTProf output files. Unpolished - error checking, sanity checking and tests not present yet. Actually add an entry to the fid mapping table when a given file is seen again. In addition to the regular fid mapping, track the mapping if fids for all evals Need to map the fids for TIME_BLOCK and TIME_LINE Track where related evals in different files (re)define the same subroutine, In pkg_fids_hv, use the SV type to track whether this is a new entry, and Add a heuristic to detect and ignore subroutine entries in %DB::sub with Use sv_setpvs() instead of sv_setpv() when possible. Avoid two possible "value computed is not used" warnings from the C compiler. A slightly tighter implementation normalize_eval_seqn(), which assumes that When iterating %DB::sub to find filenames for packages, skip over any entry We know the length of the text key of an attribute, so use it rather than Change store_attrib_sv() to take the length of the key, as we always know it. Replacing strEQ() of "-" and "-e" with character based checks allows gcc to The hashing code knows the lengths of the strings passed in, so can use memEQ() strtol() with a base of 0 is equivalent to the replaced code. In fid_is_pmc(), use only 1 temporary SV, and avoid *printf format parsing. Swap from char pointers to char arrays to avoid two strlen()s on constants. In incr_sub_inclusive_time(), copy a '\0' instead of explicitly writing one. In incr_sub_inclusive_time(), avoid a strlen() by remembering a pointer to the strlen(src) is already known, so no need to re-compute it. In pp_subcall_profiler(), a "longhand" check for "DB" produces terser object In append_linenum_to_begin(), avoid using *printf functions to build the sub's In append_linenum_to_begin(), avoid making 2 identical calls to *printf() like Skip this test if perl was configured to disable .pmc files. Avoid calls to *printf functions when the string is fixed or known. Fix a bug in the FID folding in nytprofmerge. Add a cache for CORE:$opname, to save repeatedly regenerating the same SVs. Use atoi() rather than SvUV() to get ticks_per_sec. When reading NYTP_TAG_ATTRIBUTE with a callback, assign directly to cb_args[2] Fix an off-by-two error in normalize_eval_seqn() introduced by r1018. Fix length calculation error if normalize_eval_seqn() finds a second eval Convert NYTProf_gets() to dynamically resize the read buffer, so that it can When merging, enforce identical profile file attributes where appropriate. In the merged profile, count the number of times each program was profiled, When merging, strip out the comment about "Compressed ... with zlib", as it's Missing a space before 'and'. Switch to using a typemap for Devel::NYTProf::FileHandle. Improve NYTP_gets() so that it will also work on compressed input streams. Add Devel::NYTProf::FileHandle::start_deflate. In nytprofmerge, enable deflation on output if the input files are deflated. Better test for RT#54600 Add casts and consts to get NYTProf to build (and pass tests) under g++. Convert char *s to const char *s to eliminate g++ deprecation warnings. Add cast to remove g++ warning about mixing enums and non-enums in a conditional. In load_profile_data_from_stream(), avoid calling sprintf() if we don't need Fix a bug in the regexp of r1048 - we weren't actually matching the comment. In load_profile_data_from_stream, in the time_line and time_block handler, load_profile_data_from_stream() was failing to free buffer. Count system cpu time as well as user time in the loop in t/61-cputime.t. Pass the input file as an argument to read_int(), read_nv() and read_str(). Abstract writing comments into NYTP_write_comment(). Add a wrapper for NYTP_write_comment and use it from nytprofmerge. Abstract writing string attribute values into NYTP_write_attribute_string(). Add a wrapper for NYTP_write_attribute_string and use it from nytprofmerge. Abstract writing signed attribute values into NYTP_write_attribute_signed(). Abstract writing unsigned attribute values into NYTP_write_attribute_unsigned(). Convert output_tag_int, output_nv and output_str to return the written count. Abstract writing process start into NYTP_write_process_start(). Add a wrapper for NYTP_write_process_start and use it from nytprofmerge. Abstract writing process end into NYTP_write_process_end(). Abstract writing a new file ID into NYTP_write_new_fid(). Add a wrapper for NYTP_write_new_fid and use it from nytprofmerge. Abstract writing profile times into NYTP_write_time_block() and Add wrappers for NYTP_write_time_block and NYTP_write_time_line, and use them Abstract writing sub info into NYTP_write_sub_info(), wrap it and use it Convert output_uv_from_av() and output_nv_from_av() to uv_from_av() and Avoid returning 0 from output_str() when successfully writing an empty string. Abstract writing sub caller info into NYTP_write_sub_callers(). Add a wrapper for NYTP_write_sub_callers and use it from nytprofmerge. Abstract writing source lines info into NYTP_write_src_line(), wrap it and use Move output_tag_int(), output_nv() and output_str() to FileHandle.xs from Abstract writing a discount marker into NYTP_write_discount(), add a wrapper, Abstract writing the file header into NYTP_write_header(), add a wrapper and Add NYTP_start_deflate_write_tag_comment(), which abstracts writing out the Remove the XS wrappers for output_int(), output_nv() and output_str(). Start to convert load_profile_data_from_stream() to callbacks, by creating Move source line handling to a new function load_src_line_callback(). Move sub info handling to a new function load_sub_info_callback(). Move pid start handling into a new function load_pid_start_callback(). Move pid end handling into a new function load_pid_end_callback(). Move attribute handling into a new function load_attribute_callback(). Move sub callers handling into a new function load_sub_callers_callback(). Move new fid handling into a new function load_new_fid_callback(). Move time line and time block handling into a new function load_time_callback(). Start to break Perl callback handling out, by moving new fid callback Generalise the callback framework, and use it to also implement src line Move sub info processing into load_perl_callback(). Move sub callers processing into load_perl_callback(). Move pid start processing into load_perl_callback(). Move pid end processing into load_perl_callback(). Move attribute processing into load_perl_callback(). Move comment processing into load_perl_callback(). Move discount and start deflate processing into load_perl_callback(). Move time block and time line processing into load_perl_callback(). Move file version processing into the load_perl_callback(). It isn't actually Move cb_args into the (unified) state structure. Build strings for all tags Convert load_time_callback() to take an enum tag, rather than a raw char. Convert all the loader callback functions to take an enum for the tag Move input_chunk_seqn into the loader state. As it is the only thing that the Convert all loader tag processing to table driven callbacks. Move input_chunk_seqn_sv into Loader_state_merged; Split apart profile loading into load_profile_to_hv() and Pass the input file handle from load_profile_data_from_file() down into If a callback is passed, move the validity check on the type of reference from Move callback type checking into load_profile_to_callback(). Convert nytprofmerge to using Devel::NYTProf::Data->new() directly, instead Allow the callback to load_profile_data_from_file() to also be a hash No need to set $. to 0 in load_profile_to_callback(), as it's always set in NYTP_start_deflate_write_tag_comment() needs to be wrapped with #ifdef HAS_ZLIB In the BOOT: section, replace the long run of calls to newCONSTSUB() that set Replace if (FILE_STATE(ifile) != NYTP_FILE_STDIO) with CROAK_IF_NOT_STDIO(...) Add a pointer cast to restore building with a C++ compiler. Fix grammar error. Push the call to finish_profile() onto the END of PL_endav at END time, rather Run finish_profile() from CHECK, not END when perl is invoked with -c. Update Devel::NYTProf::ReadStream to describe only version 4.0 of the file Remove two "spare" NVs from the sub_callers entries in the profile file. Remove the "extra items" count the sub_info entries in the profile file. Remove $eval_fid and $eval_line from the callbacks for time_block and time_line. Fix typos in the Changes file. Peter (Stig) Edwards (21): Added missing t/test22-strevala.t to the MANIFEST. I aslo wanted my first commit to be a small and simple one. Renamed t/\d\d.test.t files to t/\d\d_test.t for greater Renamed more files for greater portability (removing periods/dots for VMS) Renamed .js and .css files for greater portability (removing periods/dots for VMS) Added t/92-file_port.t as a developer-only and NYTProf.xs's open_output_file use mode 'wb' and not 'wbx' Skipping tests this way because of the way Test::Portability::Files::import getcwd() on VMS returns VMS paths, these looks like u:[username], sticking a slash results in u:[username]/test.t and this is not a valid VMS filename, not inserting a slash results in only 4 out of 31 tests and 21 out of 491 sub tests failing. Getting there. Fixing previous VMS specific patch, compiler complains about invalid statement if VMS is defined, braces are required. Allow nytprof.out file to have 0 size on VMS as buffers have not flushed. Skip all fork() tests if on VMS This isn't pretty but it ensures the paths used are valid on VMS, previously they were an invalid mix of *nix and VMS. Filenames can have chars that are special regexp chars, escaping some I ran into on VMS. This is .js not .pl, the trailing comma caused a warning in MS IE Use quotemeta() to backslash non-'word' chars. On VMS fflush() does not fsync() to disk, have to skip this to avoid infinite loop. I didn't mean to add META.yml to the MANIFEST in my last change. Swap dot/period for underscore in outdir and new files to ensure is valid on VMS, skip test 14 and 60 as the expected profile data does not have VMS paths and will not match. Now all tests pass on VMS. TIMTOWTDI and I agree \Q quote non-word characters till \E is neater. Yet Another VMS Fix, ODS-2 files are limited to 39.39 chars Trailing comma in .js causes warning in MS IE Steve Peters (23): Cleanup from a few warnings from stricter C compilers. Core Perl change #4309 disabled OP_SETSTATE. Change #33072 removed the last Quiet MANIFEST warnings from "make distclean". Notes regarding AutoLoader. CXt_LOOP was removed from bleadperl and replaced with four new defines. Skip the AutoLoad tests on Perl 5.10 for now until I have a fix Update the MANIFEST for the recently added files. Skip failing test on Cygwin. I'm guessing its due to not having an Quiet the MANIFEST warnings. Standardize to HAS_CLOCK_GETTIME. First pass at using clock_gettime() for profiling. Now Tim can refactor First steps in getting NYTProf to compile on Win32. Not there yet, but These changes get Devel::NYTProf to compile on Win32 with Visual C++. I Silence a couple of warnings in the XS. Add the noreturn attribute to compressed_io_croak(). Quiet unused variable warning. Add some additional const'ing. Clean up some function prototypes. Quiet a warning from the current bleadperl. Clean up the MANIFEST to silence missing file warnings for files Silence some compiler warnings generated when compiling with Perl's Have git ignore a few additional files created while building and Format the installation steps in the README.md Tim Bunce (1135): Fix MakeMaker LICENSE for old versions of MakeMaker. Simplify handling of option defaults. Fix 'Unable to access output directory' test to refer to $opt{out} not $opt{file} Factor out 'profiler' dir name, and create dir if needed. Make debug/trace output a runtime option. Add comment with $^P bit meanings. Make hash functions work for binary data. Also makes them faster Major update, including file format and data structure changes. Add context stack crawling to find line number of enclosing block and sub. Polish up context crawling code. Fix some edge cases Temp hack for Reader to enable access to fid_block_time and fid_sub_time data sets. Add TODO notes to HACKING. Fix PL_curcop for perl5.8.6 Fix to fix getFileStats/get_file_stats and add -lib option. Patch from Chetan Sarva. Revert r91 (applied to wrong branch) Added some svn:ignore to ./t directory. Added gcc developer options to Makefile.PL (taken from the code I use in the DBI) Fixed a bunch of compiler warnings (seen now due to extra compiler flags). Added file size and mtime data (currently just zero). Implement normlization of eval sequence numbers. Add .rdt result files for fork test Replace all remaining .v tests with .rdt tests (as they're much easier to work with) Enable reporting code to be run under the debugger (perl -d) by only installing Change fid_filename array to always contain array refs, not just when the fid is an eval. Rename fid_filename to fid_fileinfo to reflect its ture nature. In "$sub called:\n" show total count of calls: "$sub called $count times:" Add prereq modules. Enable recording of block & sub level profiling data by default. Refactor env var handling in test.pl Refactor to enable full sets of tests to be run multiple times with different option configurations. Fix sub/block profiling for perl < 5.8.8 (mostly, still some issues) Pass --out directory option to csv and html generation. Yeah. block&sub level profiling now working for perl < 5.8.8 Add alternative callback mechanism for geberating report lines. Reduce html report size by ~20% Generate -line, -block, and -sub reports. Fix links in and between html reports broken by previous commit. More random ideas dumped into HACKING for now. Reorg Makefile.PL to move the subs out of the initial code. Refactored header searching code to make it easier to extend and maintain. Recommend the more standard -Mblib approach over PERL5LIB=blib/lib:blib/arch. Put output from each test in a separate directory Record if called sub is XS. Start of great new feature: *inclusive* subroutine times. More work towards sub call inclusive timing. Refactor the elapsed time code into a common set of macros, Use CSS to create attractive header, avoiding need for static image. Added $0 to data file. Added "Per-line/block/sub", application name and date/time it was run into header, Rename sub_fid_lines to sub_subinfo to match fid_fileinfo and reflect its role as a home for per-sub data. Update demo script to run from top directory Assorted fixes and polish following on from previous changes. Accumulate sub call counts into subinfo data for direct access to totals. Factor out normalization of float values into sub in ::Util. Added call count and incl_time to sub table, removed line range. Added total inclusive time spent in each sub to prologue block for that sub. Added incl_time to returned sub_caller data. Added more inclusive time data to html report. Remove margin from header, which makes it look much smarter. Remove stray $DB::single=1; Put both header dates on right and right aligned them. Added mechanism for reporter to fire callback per-level. Moved calculate_median_absolute_deviation into ::Utils. Simplified code using calculate_median_absolute_deviation. Add severity colors to subroutine table. Yeah! Simplfy level of detail button formatting and use it to replace the "per-$level" text. Abstracted the interface to shift->{profile_modes} Addded level switching buttons to the index page Removed old .v test related code. More notes for HACKING... More cool ideas dumped into HACKING. Moved time spent and call count ahead of sub name to make them easier to read, Order list of calls made by a statement by incl_time spent first then subname. More notes for HACKING... one idea and one problem. Major update to Devel::NYTProf docs. More ideas for HACKING More notes for HACKING Added warning if any of PERL5DB PERL5OPT PERL_UNICODE PERLIO env vars are set Change XS test from using inet_aton to pack_sockaddr_un Bless fid_fileinfo and sub_subinfo refs into classes. Added mechanism to delete profile data for the internals of library files. Bumped version to 1.90 - will make developers release as 1.90_1 soon Updated t/test90-stress.p and related notes. Added dist config to Makefile.PL so "make dist" does clean+distcheck+disttest+tardist Added start of opcode hooks to handle 'leave' type ops. Major new feature to address two significant problems: Normalize eval sequence numbers in sub names. Test change omitted from previous change. Fix test count Switch back toa single index.html but with links to line + block + sub views of each file. Added a footer (in grey with links) to html report pages. Shorten file paths on index page by removing @INC prefixes. Ensure sub_subinfo & sub_callers always present in profile, even if empty. Switched over to using objects for sub_info. Updated docs for subs_defined_in_file(). Enabled subs_defined_in_file to return subs defined in all files. Added generation of an index-subs.html page listing all subs. Removed image files and related css. Expanded object model further. Fix up some edge cases in the data methods. Add const char * typemap to keep perl 5.6 happy Having hundreds of sub names like "PPI::Node::__ANON__[(eval 286)[PPI/Node.pm:642]:4]" Merged sub_caller (sub-called-from-where) data when collapsing anon subs created within evals. The 'Jump to file' pulldown got broken somewhere along the line, Removed source_line_func as it was never used. Fixed html escaping typo from earlier commit. Added start of constants Major update to Devel::NYTProf docs. Just a jiffy... Workaround for perl 5.6 (probably could do better) Fixed fid redefinition warning to say something useful After a fork the new (child) data file doesn't have any knowledge of what the Bump version to 2.00. Yeah! More pod tweaks. Unified version numbers and added tests for them. Add docs about effect of recursion on sub inclusive time. Update test16.rdt for 0 ticks Add CLOCKS_PER_TICK define for the Time::HiRes case. Use NV instead of double to be consistent and allow for perl's configured with NV as long double. Added note about how to support compression. Convert Changes file to pod and add some details. Measure cumulative statement timing overhead. Thanks Steve in the Changes file for clock_gettime Added another sub calling test case. Added test for goto &$sub (which don't do the right thing at the moment). Fixed overhead statement overhead adjustment for inclusive subroutine time. Store sub exclusive times in profiler data structure. Fixed calculate_median_absolute_deviation to use the *median* of the distance Added subroutine *exclusive* timing. Yeah! Added demo/exclusive-sub-time.pl Improved readability of subroutine caller lists by getting the caller counts to line up, which will typically make the timings line up as well. Added note about 'Calls made via operator overloading' to LIMITATIONS Replaced use of fpurge() with a more portable approach Added more references for clock_gettime() Fixed sub name resolution to work in more, perhaps all, unusual cases. Added some thoughts on xsubs to HACKING Added options to test.pl to control/limit testing of option combinations. Added recording of xsub filenames (i.e. DBI.c) Fix up problems from earlier xs subname changes. Fixed calculate_median_absolute_deviation detection of no data. Tidied up file not found warnings. Add number of distinct places and fistinct files subs are called from. Refactor towards adding 'relevant files' table to the top of individual file reports Update VERSIONs Update test16 results (for perl5.10) Prep 2.02 release Added support for .pmc files (for Larry's work on perl6 compiler) Fix for threaded perls Improved formating of stats for subs called by a statement; Run perltidy on the perl source code. Add .indent.pro file (though I'vw not applied indent to the .xs file as it has problems) Update HACKING file to remove done items and clarify others. Use fwrite in preference to fputc loop, thanks to Nicholas Clark. Minor updates to the docs Only show "For more information ... full list of %d subroutines" if not all shown. Fixed (long-standing) bug in Reader where it wasn't accounting for time Various improvements to tracing. Tidy the NYTProf.xs file (4 space indent with expandtab) Added NYTP_TAG_* macros for items in the data file. Implement read_nv via fread thanks to Nicholas Clark. Tweak comments. Added use of newline-safe string i/o (is also null-safe but the reader code isn't) Warn about #line directives Polish up #line changes. Added initial support for utf8 strings in data file, Added fid flags to indicate if fid first seen via sub or stmt profiler. Fixed some compiler warnings. Replace begin=1 option with start=begin|init|end|no. Added SELECTIVE PROFILING section to docs. Perl 5.8.1 is now the oldest perl version supported. More ideas for HACKING. Added early detection of possibly corrupt filenames. Added all_subinfos method to ::Data class. Only warn about #line directives once per process. Added addpid=1 option to NYTPROF env var to append pid to data file name. Added created_via value to 'strange characters' warning. Make start=begin the default. (Also makes programs using Moose profile sanely.) Update HACKING to reflect progress. Bumped version to 2.03 Avoid divide-by-zero error in reporting code reported in Give more detailed message for errors when reading a file Add universal error checking for NYTP_read and NYTP_write. Add dTHX for previous commit Make timing tests more generous for slow systems perltidy test.pl Added xsfile=0 option as workaround for perl5.8.8 CvFILE bug. Fixed indentation in Changes file and adjusted vim settings. Change default compression level to 6. Added test for $! (not) being changed by NYTProf. Fix Devel/NYTProf/Apache.pm to handle NYTPROF=no and NYTPROF=end Fix reading of zero-length string (probably, no test case). Avoid false warnings about #line directives that perl would ignore itself. RT#39411 Improve the comments in test13.p Clarify comments in t/test13.p (missing from previous commit) Clarify control flow in NYTP_read_unchecked slightly. No longer warn about '/loader/0x800d8c/...' synthetic file When normalizing, strip prefix from start of string and also when embeded e.g., "(eval 42)[/foo/bar/...]" Save the source code of string evals! (The reader just ignores them for now.) Added extra table of all subs sorted by inclusive time. Add copy of jQuery and jQuery tablesorter to output report. Silence assorted compiler warnings reported by Richard Foley. One more compiler warning silenced thanks to Richard Foley. Use an empty string as the filename for xsubs Remove the xsfile option as it's no longer needed. Prep version 2.04 release. Prep for 2.04 release. Fixed alteration of $! during profiling thanks to Slaven Rezic. Tweak reader to store fid src lines in profile data structure Added some docs to Devel::NYTProf::Apache more notes on profiling httpd Fix title of Changes pod, so hopefully search.cpan.org will present it better Initial stab at supporting multiple clocks and falling back to CLOCK_REALTIME if the selected clock doesn't work. Add docs for new clock=N option. Add clock_id to attributes in data file. Add more detail into trace when reading subroutine timings. Fixed error when application ended after DB::disable_profile. Doc tweaks Prep for 2.05 release Update a test for the clock_id change (only run for perl5.10) Changed subroutine inclusive time to not count time spent recursed into the same subroutine. Removed use of vfscanf() to improve portability, thanks to Jan Dubois. Remove sanity check for OutCopFILE/CvFILE corruption as it's no longer needed. XS subs are now automatically associated with a source file that defines Remove stray line that got left in earlier commit. Add a couple of values to the sub_info dump in preparation for adding recirsion depth and recursion inclusive time. Defined macros for sub call array indices, and cleaned up related code. Add reci_time and rec_depth to sub_caller info. Patch from Jan Dubois to port to windows. Yeah! When normalizing, replace abs path prefix with /.../ so we can tell Make errno test independent of external modules (which might have changed $!) Update t/test16.rdt results missed from earlier commit. Assorted changes from code review by Jan. Fix "No file line range data for sub 'package::__ANON__[:703]'" warnings No longer ignore files that don't have any perl statements profiled Callers and timing information for xsubs are now shown at the Take more care to avoid changing errno by saving and restoring it Only apply margin-top: 5px to the calls in to a sub, not calls out. Include source code from -e '...' command line option (not used, yet) Move error check from NYTP_printf to NYTP_close. Record source from stdin (perl -) as well as perl -e '...' Remove vestiges of perl 5.6 support, thanks to Jan Dubois. Use 3-arg open. Point out the perils of profiling on virtual machines. Simplify the fork test code. Use "wbx" mode for the file, except on windows. Adjust trace levels slightly, mainly moving new fids and subs up to level 2. Exclusive and Inclusive time column positions have been switched Add migration of sub_caller data from eval fids. (big missing feature) Tidy up and expand Changes. Move sub_caller migration to new _migrate_sub_callers_from_eval_fids() method. Fixed *significant* error in time reported as spent in a subroutine, Add stmts=0 option to disable the statement profiler Make tag type consistently unsigned char. Major improvement to handling of string evals... Add ::Data method to read source, which gives preference to source embedded in the data. Move t/test90-stress.p to xt/test90-stress.p Regenerate MANIFEST via 'make svnmanifest' Tweaks to ReadStream docs. Add missing arg to 'invalid clock_id' croak message. Add test to demonstrate wrong line numbers given to subs called in while(condition). Update MANIFEST for new file in previous commit. Give slightly more feedback during report generation. Thank Gisle in the Changes file. Major update to docs about clock sources, SMP, processor affinity etc. Document stmts=0 option. Bump version to 2.07 (because PAUSE indexed the 2.06_RC1 release I made for cpantesters) Fix srclines_array() to drop the undef 0th line of source code. Unlink destination (.js) file before copying new one so it won't fail for readonly files. Docs my thoughts re savesrc option into HACKING Improved html conformance thanks to Leland Johnson. Add perftest.pl script for profiling NYTProf::Data and nytprofhtml Further optimizations. Removed column handling from Devel::NYTProf::Reader module, Format negative time values as seconds, not nanoseconds. Improve presentation of links to subroutine tables. Move ::ProfFile class out to new ::FileInfo class. Refactor part of strip_prefix_from_paths into new make_path_strip_editor function. Set NYTP_FIDi_EVAL_FI element as weakref to eval fileinfo in XS code for speed. Add array of refs from a fileinfo to the fileinfo's of all the string evals it executed. Hovering over times in subroutine or file summary tables Add trace for statement discounts. Add summary sentance to index page given overall time and other stats. Some initial exploratory work towards extending nytprofcsv to include Add ::Constants module (missed from earlier commits) Add Exporter, even though it worked just fine without it. Populate $fi->subs data direct into fileinfo in XS. Add NYTP_FIDi_SUBS_CALLED attribute to fileinfo containing a hash Added optimize=0 option to disable the perl optimizer Document effect of not being able to profile sub calls made due to overloading. Add total_sub_calls attribute to data model and html report summary line. Don't normalize to zero total_sub_calls in test results. Fixed searching @INC for source files for reports. Rework handling of filename, specifically don't call make_filenames_relative() to edit them to be relative. Add new test for nested string evals. Currently fails because we don't yet Add t/test21-streval3.x missing from previous commit Make delete_subs_called_info() adjust total_sub_calls attribute For $fi->abs_filename returning the still-relative filename is better than returning an undef. Prepare for 5.8.9+ & 5.10.1+ by ignoring calls to our own DB::_INIT sub which Add script to exercise calls made by overload Added savesrc=1 option to copy source code into the profile Add package-level summary idea to HACKING. Summary tables can be sorted by clicking on header columns. Woot! Fix $subinfo->package to work for multi::level::packages Add 's' unit to '0' value returned by fmt_time() Merge the separate pkg and sub name columns in the sub table Leave the table rows in their original order to start with Fix up test for fmt_time returning "0s". Call footer callback when footer used - this fixes @on_ready_js Time spent on statements in a string eval that was nested in another string eval Added $subinfo->clone method. Added $profile->package_subinfo_map method to return info on all the subs in a Add package summary tables to index page. Make $subinfo->is_xsub more strict. Reorg the demo code. Run the while(<>) example and update Report merged subs properly. Replace my_snprintf with plain sprintf because my_snprintf from pport.h is Add assorted thoughts to HACKING Major update and reorg of HACKING. Minor tweaks to HACKING Add NYTP_SIi_* constants for sub info Remote hard tabs that have crept into NYTProf.xs Add NYTP_SIi_CALLED_BY element to sub info ({ fid => { line => [...] } }) Move sub info and sub caller time mormalizatio for tests into new normalize_for_test method. Detect version mismatch between bin/nytprofhtml and the core lib. Cosmetic tweaks to Devel/NYTProf/Util.pm Shift the normalization (for testing) of some data from input to output, to avoid throwing data away. Remove sub_callers element from profile data. Move data about callers to a sub Fix version number in bin/nytprofhtml. Reworked dumping of fileinfo data to include subs defined and subs called. Start work on normalizing eval sequence numbers in file and sub names. Avoid core dumps in the sub profiler if the cv isn't setup correctly FileInfo dump() now takes option to not dump internal details. Include details of string evals in FileInfo dump() Normalize total_sub_calls attribute to 0 for tests (due to use of Autoload from perl lib). Make savesrc option set PERLDBf_SAVESRC | PERLDBf_SAVESRC_NOSUBS. Avoid undef warnings from $si->merge_in(...) Add details of string evals to file table on index page. Colorize the package roll-up summaries on the index page. The sub profiler now calls reinit_if_forked() if the statement profiler (which Implemented normalize_eval_seqn, but left it disabled. Fix for http://www.nntp.perl.org/group/perl.cpan.testers/2009/01/msg2985535.html Initial work on swiching output to different profile files. Show 'Running tests with options ...' during 'make test' Implement DB::enable_profile($new_filename). Clarify a trace message. Be more generous with time limits when running automated tests Replace old $ENV{NYTPROF_EXIT_AFTER_LOAD} hack with shiny new $ENV{NYTPROF_ONLOAD} hack. make clean be more thorough Rewrite all "(eval \d+)" to "(eval 0)" while reading the profile data. Fix core dump at trace level >= 4. This one was wierd! It seems that the statement Make -v option to t/20.runtests.t slightly more useful. Using a sub with side effects isn't enough to avoid the weirdness. Save some headaches for windows users trying to profile mod_perl apps. Use NYTP_SIi_* constants. Save/restore errno in incr_sub_inclusive_time() and more finely in pp_entersub_profiler(). Fixup t/test16.t for perl < 5.10 Bump version to 2.08 for release, finally. Added note to HACKING about reporting when method cache is invalidated. Make html_safe_filename remove colons (and some other chars) from filenames Added Changes not for previous commit. Remove embedded dots from filename for html report generation. Fix tests to work with previous html_safe_filename change. Refactor (reorg) if/else logic in get_file_id() to make it easier to add better autosplit handling. Initial structural changes to support smarter autosplit handling. Give credit where it's due Fix up t/92-file_port.t to fail more gracefully when not runnable or enabled. Fix extra %s in log warn format. Add special case for NTP_write with length 0 as fwrite with len==0 is Add savesrc, compress, and abort (on first error) options to tests. Fix savesrc by writing source at end of profile run Revert to earlier t/92-file_port.t and do require Test::Portability::Files instead of use Don't set PL_perldb when processing options (from NYTPROF env var) Neaten the warning by removing the " (@INC contains..." Show NYTPROF and stdout of subprocess if it fails. Enable more detail on this test failure Add NYTP_DEFAULT_COMPRESSION constant to application can tell if zlib was compiled in. Add NYTP_FIDf_IS_ALIAS flag distinct from NYTP_FIDf_IS_AUTOSPLIT Add docs for "Unable to open '... (autosplit into ...)'" warning. update HACKING note re string evals in autosplit files Prep for release Prep for release - bump version Prep for release Last minute little fix for 'make clean' Tweak Makefile clean target to match VMS changes Initial work-in-progress using jquery treemap plugin. Quite rough at the moment. Fixed call count for XSubs that was one too high. Rough, but working, interactive package treemap using the JavaScript Information Visualization Toolkit (JIT) Add comment outlining a possible implementation of recording sub caller sub names. Yet another take on treemaps. This time using js-treemap. Avoid undef warnings where subs have no known line numbers (eg Moose) Fixed enable_profile() after fork thanks to delamonpansie Changed enable_profile() to discard the time spent since profile was disabled. Made NYTPROF_TEST=trace=N work for 'extra tests'. Removed unneeded (and problematic) mg_get thanks to delamonpansie Added detection of file names like "(eval 1)" that don't have the expected Fixed to use correct scripts during test and so avoid permissions Give a hint to users when they get no source code for -e (and some other cases). Only generate fake hint src line for -e & - cases. Switched to using raw (non-minimized) src code of js-treemap. Avoid core dump if eval fid refers to an invoking fid that we've not seen yet (should never happen). Add a summary report identifying which settings influenced failures, e.g.: Added test for "(eval N)" style filenames, i.e., missing the invoking filename. Improve treemap look and behaviour. Allow undef entries in fid_fileinfo_av Update a problem description in HACKING Fixed suprious "Unable to determine line number" warnings Use PL_retstack_ix <= 2 as additional check for is_preamble. Use PL_scopestack_ix instead of PL_retstack_ix because PL_retstack_ix is gone in 5.10 Added license, homepage, bugtracker, repository and MailingList Tweaked warning message. Prep for release. Deleted files relating to old treemap code Deleted more old treemap files Updated MANIFEST Another move in the 'how slow are cpan testers' game... This one's a little harder to explain, but I'm happy enough to assume that it's Added test diag warning for people running on xen, due to it being a regular factor in test failures: Added treemap view of package and subroutine times, with drill-down. Changed left-click zoom from 'zoom all the way to the leaf' to 'zoom one level Added sysops=1 option which enables profiling of perl opcodes Record builtins, like sleep(), as having names begining with "CORE:" Assorted refactorings getting us closer to having a treemap on each file page. Don't include subs with 0 time in the treemap. Fix to minimize jagged gaps (submitted to JIT author) Updates to HACKING Don't create treemap boxes if they're too small to be useful. Add details to treemap tooltip and tweak style. Give the user a clue, or three, about the treemaps. Added columns to the main source code reports to show Merge pp_sysop_profiler into pp_entersub_profiler. Fixed recursion depth measurement. Fixed (rare) overflow bug for 32bit perls. Renamed sub_call_start_t to subr_entry_t and added a pointer to the previous Refactor pp_subcall_profiler to allocate the struct using SSNEWa directly, Store fid and lin in subr_entry_st as ints instead of formatted string. Use separate data file name for each test, so tests can be run concurrently. Switched to using context stack offsets instead of pointers to track current Added sysops=2 option to control how builtins are aggregated. Added note about standard deviation Added (undocumented) NYTPROF_FMT_TIME env var for experimentation. Refactored NYTProfTest to enable more flexible usage. Added recording of calling sub to subroutine profiler. Fix occasional failures when running 'make prove' Added the calling sub name to the sub call data structure Added .gdbinit http://cpansearch.perl.org/src/GOZER/mod_perl-1.31/.gdbinit Finally got robust calling subroutine name working in a way that doesn't Clarify the impact of the perl api call_*() functions not being profiled Updated tests to match modified xs file in earlier commit. Sub calls made outside of subs are now deemed to have been called from <Package>::BEGIN. Renamed MAIN to main::BEGIN to match the name derived elsewhere. Added t/nytprof*.out.* to Makefile clean target. Detect error writing to pipe to demo script Significant reworking of the subroutine profiler. Keep separate entries in subr_entry for called pkg name and called subnam (eithout pkg) Tweaks to Changes and HACKING Renamed NYTP_TAG_SUB_LINE_RANGE to NYTP_TAG_SUB_INFO and future-proofed Changed from using the hackish and limited subname_at_file_line() method, to Implemented a basic interactive Radial Graph view of the subroutine call tree. Renamed sysops option to slowops and added match and subst (s/// & m//) opcodes. Added --one option to tests as shorthand for --leave=1 --use_db_sub=0 --savesrc=1 --compress=1 Added test for goto. (Its time to bite that bulleat as it's distoring the call graph, e.g, when Exporter delegates to Exporter::Heavy) Fix __attribute__format__ and the compiler warnings revealed by it. Sync test16 results. Change subr_entry caller_* name elements to use pv for package and sv for name, Added reuse of called_sub* details from outer subr_entr if they're available. Now the fun can begin... add generation of very basic Graphviz dot file. Just a little polish. Started work refactoring to (finally) profile goto &sub sanely. Major rewrite of subroutine profiling to include goto &sub calls in the call tree. Use "main::RUNTIME" as the name of "caller" of subs called by main:: code. Fix goto'd subs to not be treated as xsubs in perl 5.10 Added fcntl to slowops and reenabled print as a slowop Added bin/nytprofcg to Makefile.PL EXE_FILES Removed inclusive time treemap as it's not actually useful. Add clusters (to groups subs by packages) to the graphviz dot file. Resync tests to include print and unlink slowops. Still fiddling with graphviz output... Sync test16 result for perl 5.10+ Enabled slowops=2 by default, at least for now. Add gotobug directory containing a test case for a significant problem affecting perl <5.8.8. Fixed caller() problem with perl <5.8.7, many thanks to Bram! Tweak Test::More dependency. Finally got GraphViz file generation working in a reasonable way. Synced test61-submerge.rdt Made JSON::Any optional. Be more hintful in the 'inflate failed end of input file' error message. Clarify impact not being able to profile calls made by call_*() in older perls. Fix test results for tests that don't call subs from "main::RUNTIME". Added endatexit option (for internal use, e.g., by possible Devel::NYTProf::PgPlperl module) Added Devel::NYTProf::PgPLPerl module with docs. Rename subr_entry.completed to already_counted and use ++ instead of =1. subr_entry_setup() now always pushes a destructor onto the stack as a fallback Added sigexit option to enable a useable profile when the process exits due Updates to the LIMITATIONS section This test is sensitive to the perl version (calls appear from fid 3 or fid 4) Generate list of slowops via the Opcode module. Update to JIT 1.1.3 (which includes my earlier patches) Switch to a rectangular style gradient effect Fixed zeroing of subr_entry! Added PRIVLIB_EXP and ARCHLIB_EXP attributes to profile data file. Replaced old stdlib detection code with $fi->is_perl_std_lib calls. Added t/test62-subcaller1 Bumped more VERSIONs (though I should have bumpled to 3.00, d'oh) Fix t/22-readstream.t to (try to) use the same perl in the subprocess Don't profile DB::_INIT and DB::finish_profile (only) because they Skip test60-subname for older perls because the call from example_xsub to will_die, Polish up change not re sigexit option Added forkdepth option, plus tests and docs. Sync'd the test60-subname.rdt and test62-subcaller1.rdt test results I'd Provide a little more detail if deflate() fails Added emulation of gv_fetchfile_flags that null-terminates the string. Added note re Scope::Upper unwind() in LIMITATIONS section Enable ARCHLIB_EXP to be undefined Tweak ARCHLIB_EXP comment and slowops Change note Tried to make t/30-util.t less prone to floating point issues Moved some $^P () settings into init_profiler. Add perldb=N option to force certain PL_perldb values Fixed handling of slowops that exit via an exceptions. Documented how goto &destination is profiled. Polish up the docs Disabled profiling of require slowop. Resynced test62-subcaller1 results Tried again to avoid (presumed) floating point issues like Fixed problems with profiling forks. Fix compiler warnings, mainly for perls built with -Duselongdouble (RT#51431) Update slowops list generation to match current state and document some issues Removed rand & srand from slowops because it turnsout it's very hard to configure perl Added tests for calls from sort() and s//sub()/e Fixed link to tablesorter css file Updated ops for 5.10 (will need to add #ifdefs for earlier versions ) Fix OP_SUBSTCONT. Yeah! Add #ifdef for OP_SAY Added Devel::NYTProf::Run module with profile_this(src_code=>"...") function. Fixup handling of profile data file naming broken in previous commit. Move already_completed test out of slowop block so it'll also work for Scope::Upper's unwind. Reordered logic to not push the extra destructor until the end of the function Limit the damage when a confused NYTProf stack is detected. Fixed tortuous "goto into own sub that's been deleted and replaced" use-case No longer export do_foreach_env_combination as it wasn't being used. Added workaround for RT#50851 "deflate failed, error -5 (buffer error)" Tweak NYTP_FILE_LARGE_BUFFER_SIZE for minor optimization of zipping. Tweaked slowops.h generation. Added MANIFEST.SKIP. Made trace first option in NYTPROF during tests, so other options get shown if trace is set. Fixed extra newlines in trace message showing saved source code. Fixed chomping of newline in fid source code trace. Replaced open my $fh, '|-', @perl with open my $fh, "| @perl" to fix No longer warn about each instance of a negative time for a sub call, just count and warn at the end. Offer some concrete help to user of xen with clock problems Be a little more prescriptive, and fix whitespace Fixed compiler warnings Added listing of relevant env vars to t/00-load.t output Adjust t/test60-subname to move the "exit xsub via exception" test into the middle. Fixed example_xsub that was missing a PUSHMARK (causing occasional failing tests mentioned in previous commit) Added tests for CORE::GLOBAL::foo plus assorted data model methods Skip a test if $] < 5.008009 or $] eq "5.010000" Added t/40-savesrc.t missed from r914. Thanks Nicholas. Fixed file_line_range_of_sub to handle known subs with unknown file details, like UNIVERSAL::VERSION Added test for implicit utf8 SWASHNEW calls from regex (currently coredumps) Fixed t/test81-swash.t. Fails for perl >= 5.11.1. Don't output a diff if it's the same as the previous env-variant of the same test. Fixed to build with later 5.9.x's, thanks to Nicholas Clark. Added warning when reading a file with a minor version higher than expected. Enable assertions. Disabled savesrc=1 tests for perl 5.11.2 due to perl bug RT#70804 Fixed dumb attempt to enable assertions. Added mention of quiet=>$bool argument to new() method. Added 'complete' attribute to indicate incomplete/truncated data Removed dofile from slowops for the same reasons as require. Protected some log messages from core dumps with corrupt data. Synced t/test12.rdt with removal of dofile from slowops in earlier commit. Added nameevals=0 and nameanonsubs=0 to make NYTProf less visible Fixed "Assertion failed: (isGV_with_GP(_gvstash))" from perl's t/op/caller.t and t/op/ref.t Better handling (ignoring) of threads/multiplicity, (at least good enough to pass perls own thread tests). Fixed for perl's t/op/caller.t Fixed typo in comment. Updated ppport.h Updated with recommendations from ppport.h. Added extra test that tickles an old perl bug. Currently fails. Added dot file for graph of "all inter-subroutine calls". Added some notes & comments re handling of xsubs and opcodes that call back into perl Give thanks where it's due! Added use of ppport.h to give compatibility to older perls Added $VERSION cross-check (I guess we really ought to use .PL files) Added crude testing of nytprofmerge. For every test with a .rdt file the .rdt file is Fix test count in t/test82-stress.t Added chunk of #ifdef-out code showing the sad state of the bug hunt Limitations docs: Two steps forward, one step back. Moved t/test82-stress.t into xt directory BEGIN's are now recorded as BEGIN@line to make them unique. Tweaked BEGIN@line test to cater for pre 5.8.9 and noted limitation in Changes. Noted in Limitations the lack of BEGIN/CHECK/INIT/END block calls for older perls. Added a DATA COLLECTION AND INTERPRETATION section to the docs. Added recommended perl version info to docs. Fixed "Total Time" in reports to be sanely formatted. Fixed avg/call time shown for subs called recursively. Don't build an unusable treemap if JSON::Any not install. Give reader a hint. Cop out of binding a key to move up a level in the treemap - just tell users to reload the page. There comes a time when you've just gott'a call it "Done!" Added documentation to nytprofcg. Minor updates to nytprofcsv documentation. Fixed version number in nytprofmerge. Fixed typos in docs thanks to Jonathan Yu. RT#53146 Removed use of vfscanf (which broke on windows) Removed some stray tabs from FileHandle.xs. Updated NYTProf docs, including noting major contributors, and referencing nytprofmerge. 3.01, as released Tweak t/42-global.t to shed light on http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6603296.html Include more %Config details in t/00-load.t output Added docs section on making NYTProf faster. Changed subroutine profiler to be slightly more efficient. Added high-resolution (100ns) timer for Mac OS X thanks to Markus Peter. Fixed minor typo. Tweaked whitespace. Fixed handling of usecputime=1 option. If src not available then pad with blank lines so at least the data will be shown. Removed (old, undocumented) zero option. Fix off-by-one in recent src-missing change Sub profiler doesn't consider usecputime so shoudn't use ticks_per_sec. Added a test for RT#54600 Avoid tripping over $! bug http://rt.perl.org/rt3/Ticket/Display.html?id=72850 Don't profile goto \&sub if subr_entry_ix==0. Fixes RT#54600 Added cputime test Updated cputime time test to better identify when cputime is really measuring realtime Ensure subprocess perl has same libs as us (e.g., if we were run with perl -Mblib) Minor tweaks to test harness. Rip out separate user & system cputime attributes as we're moving to a Implemented usecputime=1 support for subroutine profiler. Removed $fi->is_perl_std_lib and addressed the underlying need another way. Fixes RT#54204. Fixed up log errors and compiler warnings from r1069. Sort the sortable tables on-load so the sorted column gets a sort arrow. RT#47924 Show "<- Index" backlink on all pages except the main index page. Updated Changes. Only show excl_time in treemap mouseover box if different to incl_time. Prep for 3.02 (actually 3.01_90) release Restore file format compatibility with previous release.. Avoided repeat reads from DATA in t/42-global.t Use PL_clocktick instead of CLK_TCK Make t/61-cputime more verbose, especially on freebsd More refinements to shed light on freebsd test failures like Fix Changes title (RT#54912) and tweak release details. Note that lvalue subroutines aren't profiled when using use_db_sub=1 Whitespace tweaks in NYTProf.xs. Show d_sysconf in t/00-load. Show ticks_per_sec in t/61-cputime. Fix so $cpu1 on entry to foo() is accurate. (Test was failing on OS X Update for _96 dev release - hopefully the last! Don't generate index-subs-incl.html as it's not needed or referenced. RT#54895 Added some notes re stub DB::sub sub. Added Makefile.PL options to control use of zlib/clock_gettime/machtime. Removed Devel::NYTProf::PgPLPerl module. That's now a separate PostgreSQL::PLPerl::NYTProf distribution. Made 'No file line range data for sub' warning less scary Make trace log for fids more informative Tweaked Changes for 3.02 release. Prep for dev release. Bumped version. Added Changes. Credit where it's due. Thanks Jan. Reverted r1158. More general approach to follow. Added skip_sitecustomize option to profile_this() and used it in tests. Added test t/70-subname using Sub::Name. Tweaked t/61-cputime to be less verbose. Added mechanism to help test if NYTProf.xs saves/restores errno (re t/50-errno.t) Tweak log levels of some messages Added Devel::NYTProf::Test::set_errno and used as probe in t/50-errno.t. Using SQLite for reporting on profile data might be a good direction... Tweak Changes for another dev release Updated HACKING file in various directions. Enabled savesrc=1 by default. Made 'read string' log less noisy. Tweaked some code indentation. Tweaked some trace levels Added evals=N option as part of ongoing work on string evals. Significant changes to support profile reporting on string evals. Corrected typos in nytprofhtml docs thanks to chocol...@cpan.org Some more nails in the coffin of ::Reader. Skip sequences of blank lines. (It turns out that perl doesn't save chunks of POD More major work on string eval support. This is now working well in the ideal Make incomplete profile message more consistent and add more details to the docs. Added docs about POSIX::_exit Assorted work towards string eval support plus collateral tweaks. Fix ::Reader handling of subdef_info and cleanup the code. Added collapsing of 'uninteresting' sibling string evals. Delete /tmp/ report dir contents before writing new one from .t --open More work on merging of string evals, including editing of sub called-by data Make eval dump info more descrptive. Sync golden test results Refine collapsing of evals to be more useful more often. Delete some old code. Disable some debugging. Added automatic detection of calls to POSIX::_exit() by the sub profiler Prep for an alpha dev release Make t/10-run.t less likely to fail due to low resolution clocks. Assorted refactorings and cleanup. More string eval related polishing. Added docs and tests for string eval collapsing. Fix warning: comparison is always false due to limited range of data type Avoid dying when merging evals if any have no line_time_data. Write compression details comment on one line at end of file. Made it easy to disable run-time MULTIPLICITY sanity check if needed. Ignore 0's in calculate_median_absolute_deviation of file table on index page. Restore sorting of jump-to-filename drop-down. Added parent filename to collapsing-sibling-evals trace message. Finally worked out the secret to profiling mod_perl2 vhosts that use +Parent or +Clone. No longer normalise eval sequence numbers to 0 on loading a profile. Update docs for savesrc option and string eval processing. Only use perl -f when it's valid. Factor out handling of $this_perl and usesitecustomize -f into new perl_command_words sub. I'd missed another place where eval sequence numbers were normalized. Added CXt_LOOP to cx_block_type and the ability to show the int value for unknown types. Changed test24-strevalc.p so it's not sensitive to the leave option. #ifdef'd CXt_LOOP and added a comment. Removed a stray debug warn. Tweak to be more likely to get a diff from test errors on windows Don't bother checking for >0 time for t/10-run.t as it's not reliable. Avoid compiler warning Oops, forgot to static the buffer in cx_block_type() Fixed rec_depth in callbacks to be unsigned int not UV (which broke sub_caller Another thought for HACKING Allow heuristic that handles assignment of xsubs to source files Tweak trace level. Don't give 'already associated with package' message Add way to disable 'extra tests'. Hack test to make stable across different option settings. Multiple BEGINs (e.g., use) on the same line get distinct names Tweaked 'sibling evals' trace message. Uh. Still battling mod_perl2 PerlOptions +Parent issues. Avoid segv with mod_perl2. Not sure of root cause but removing the needless END Include app name in title of index page. Set endatexit and addpid options in Apache.pm. Update Changes and add item to Troubleshooting section. Added explicit NYTP_FIDf_IS_EVAL flag. Moved subs_defined_in_file(subs_defined_in_file=1) logic into new subs_defined_in_file_by_line method. Add note about DBI's xsub call optimization Fix filename_is_eval to allow "(eval N)" and not require the trailing "[...]" Add more detail of NYTPROF setting combinations when tests fail. Tweaked index page html title and Changes file. Drop unneeded trace message Shuffle order that NYTPROF option combinations are tested. Dodge option sensitivity in t/test51-enable by avoiding string evals. Better handling of profile data for line 0 (ie data that we couldn't associate with a line). Assorted trace tweaks. Fix and simplify padding of source lines Optimize fmt_fid_flags. More thoughts for HACKING Added NEED_my_strlcat Move subs that were called but have no filename (eg xsubs in packages that Prep for 4.00, finally! Disable some stray debug. Make the xen warnings stand out more. Note what still needs doing Restore use of normalize_eval_seqn for subs (ie anon) but not filenames (ie eval). Make subinfo dump (a little) easier to read Revert to disabling normalizing eval numbers - subs much be kept distinct and merged later. Allow collapse of sibling evals that have sub definitions (will only happen Bump NYTP_FILE_MAJOR_VERSION Fix the data format version check Revert to disabling normalizing eval numbers - subs much be kept distinct and merged later. Updated Changes, noted outstanding issues. Added item to HACKING. This now, finally, seems to do-the-right-thing for e.g. anon-subs that get merged Remove code for old 'merged subs have array of names' logic. Change some counters from int to UV. Add failing test showing problem with eval/anon merging. Extensions to other tests Limit impact on reports from outstanding eval/anon merge bug. Add Devel::NYTProf::Util::trace_level function. Replate $trace env var hack with new trace_level function. Fix test count. Finally escaped the eval/anon merging tar-pit by giving subinfo and fileinfo More notes re "Unable to determine line number" from 'preamble' in toke.c Bump the PL_scopestack_ix fudge for the "Unable to determine line number" warning. Add $fi->sibling_evals method and use to improve report output. Document collapsing of anon subs Fix case where eval has both merged and unmerged siblings. Use 'merge' in docs instead of 'collapse' to be consistent with the reports. Add note to subs that have been merged Doc updates, including link to updated example report. Only run mk_report_separator_line is there's something to follow. Added --minimal option to nytprofhtml to disable generation of Abort with more information when a cryptic death is forseen. Don't write a fake src line for "perl -e '...'" and "perl -" when src isn't available. Note some missing changes and credit Nicholas Clark Fix test to expect srclines_array to return undef when '-' file has no src. Fix links from block and sub level reports to evals to only use line level. Clarify perl version requirements for seeing eval source code. RT#58283 Don't require VERSION number sync on so many modules. Bump version to 4.01. Restore ordering of line-block-sub links on index page. Fix (silly) performance problem in $fi->evals_by_line Fix typo and tweak docs re performance. Remove old code to handle merged subs that had array refs as names. Add extra message to distinguish raw loading (Reading) with collapsing evals etc (Processing). Fix nytprofhtml --profself option. Tweak trace levels for reporting. More trace level tweaking Add cache to make_path_strip_editor() Added progress reporting to report generation Delete old script that's superceeded by nytprofheml --profself Use simpler scheme for progres indication (CR instead of BS). Bump version. For subs that recurse, show max depth and time in subroutine table. Move deletion of donor evals from parent to after the donors loop. Make percentage progress fixed width Update Changes Bump version to 4.03 Flush trace log messages immediately Pre-extend PL_endav to reduce risk of crashes in apps that don't handle PL_endav carefully, like mod_perl. Start distilling various bits of info on memory profiling into a handy reference for the future. Updates to MemoryProfiling.pod, including links to email threads. Add $& to a couple of test files so we can test detection of PL_sawampersand Profile records presence of the slow regex match vars ($& $' $`). Flag the file on the index page in which we first saw the slow match variables. Add flag to fileinfo_of to avoid warning on undef arg. In collapse_sibling evals, update sawampersand_fid if it's one of the now-dead donors Add clear NOTE to the report for the sawampersand_fid explaining the issue. The cumulative inclusive time measured for subs that are involved in Prep for release. Bump versions. Update Changes. Move some items to HACKING. add exta link to memory profiling doc Tweak Changes for release. Mention B::Lint module (Devel::FindAmpersand "doesn’t work with a threaded perl"). Be more liberal in assuming automated testing (and lax max timing). Tweak max allowed cputime. Fix some compiler warnings Add more items to HACKING and a comment in demo/demo-code.pl Added to HACKING: Bump noisy log output, when reading a profile, up to a higher trace levels. Protect against bad line numbers (eg -1 being treated as 4294967295) hanging report generation. Detect bad line numbers (-1 stored as unsigned) in sub caller data. Add $SIG{USR2} = \&Carp::cluck; as handy way to see what's happening Make 'file not found' messages related to Moose more self-explanatory. Prep for 4.05 release. fix t/10-run.t for bleadperl ac56e7d fix t/test08.t for bleadperl ac56e7d fix t/test09.t for bleadperl ac56e7d fix t/test23-strevall.t for bleadperl ac56e7d fix t/test20-streval.t and t/test50-disable.t for bleadperl ac56e7d Fix t/test61-submerge.t for bleadperl ac56e7d. The last one. Yeah! Prep for Devel-NYTProf-4.04_71 dev release Add Devel::NYTProf::Test::ticks_for_usleep($usec) to help test clocks Factor out clock initialization and ensure init'd from ticks_for_usleep. Preliminary reworking of statement time i/o Convert 'unsigned int's to U32's to be explicit. Move read_nv into FileHandle.xs Add workaround for some cpantesters failures. Prep for dev release Fix for sign issues on 64 bit systems. Add signed int i/o. Support signed tick counts for statements. Clarify the docs re clocks Added experimental BSD::Resource usage tracking clarify basic docs and add a link to a screencast to help initial users clarify error when unable to open profile file for writing Added note to the docs re profiling applications that use Coro Clarified usecputime=1 docs Add exit status to error message. No need for exclamation in "out of sync with source" warning add underscore to private function Updates tests for new functionality in Sub::Name 0.06 (assuming the relevant Sub::Name patch is applied) fix test count Improve trace messages related to associating packages with files Add preliminary (incomplete) test files for #line handling and Moose. remove unused import Improve handling of Class::MOP/Moose generated methods. Improve handling of embedded filenames, e.g., "(eval N)[$path]" Polish up handling of htmlopen option grumble about undef source lines reduce trace level for per-file messages related to src code Fix portability of pkg_name_len() to old perl versions Doc tweaks, mainly to the MAKING NYTPROF FASTER section. Tone down and update Testing details and add note about treating require as a slowop Added notes in HACKING re a start=begin option and a way to ignore CORE:accept time Make html option use the perl that's in the path Make t/68-hashline.t a developer only test for now Make stmt and leave trace messages more informative. Minor tweaks to t/71-moose.t Added "If Statement and Subroutine Timings Don't Match" and Note goto &sub (and thus AUTOLOAD and Memoize) as a cause of sub timing discrepancies Added --no-mergeevals option Minor tweak to ordering of fmt_time logic Fix skip_collapse_evals Update tests to be less sensitive to upcoming bleadperl changes Avoid undef warnings for lines with no time/call stats Some tweaks to HACKING Avoid nytprofhtml failure due to over-long filenames RT#62319 Added NYTP_write_attribute_nv() Added special handling for the perl built-in accept() Sync tests. Document the special behaviour of accept() prep for release Silence compiler warnings Document removal of empty statements in 5.13.7+ Disable the new initial CxMULTICALL support, and fix probable cause of segv on OpenBSD Prep for release minor edge case debug tweak for confusing CVs Added and clarified some notes in the troubleshooting docs Fixed html generation to be valid RT70207 (H.Merijn Brand). add some links to MemoryProfiling.pod Enable file=/dev/null to work as fix for RT74565 add basic check for Apache2::SizeLimit and update docs RT#75912 add note re using hide_subr_call_time to hide things like FCGI::Accept nytprofmerge no longer dies on some errors, RT#75918 nytprofmerge de-tab sum cumulative_overhead_ticks in nytprofmerge RT#75909 nytprofmerge now gets in man page installed, RT#75911 Note Devel::NYTProf::Data is undocumented and why, RT#75914 Added some TROUBLESHOOTING info Add --debug, add --open docs, use Browser::Open if available, rework related logic. Added section on "subroutine calls had negative time" to TROUBLESHOOTING docs Clarified docs re fork generating multiple files, RT#78873 add ptest target to Makefile as alias for prove fix unused result compiler warnings add release date to Changes Fixed version numbers in nytprofhtml and nytprofmerge add note about flame graphs to HACKING file Bleadperl v5.17.3-252-gd3b9753 fix from David Mitchell. Prep for 4.09 release. Bumped VERSION Corrected spelling thanks to Alessandro Ghedini @debian RT80370 Fixed to work with perl v5.17+, specifically string eval changes and hash randomization. fix unused var warning Fixed so tests ignore sitecustomize.pl, RT#79784 clarify my (lack of) relationship to the NYT Fixed to sort tables with microsecond values in non-utf8 encodings, RT#77843 Deprecate the usecputime=1 option prep for 4.11 release more prep for 4.11 release add .gitignore Fixed some doc typos thanks to Jesse Sheidlower. update MANIFEST.SKIP and MANIFEST add t/72-autodie.t add devstuff/ dir that has random stuff that is not part of the distro, yet add a few more demo/* scripts that were not previously checked in tweak .gitignore Removed usecputime=1 option. (Use clock=N instead if possible.) Update MANIFEST for previous t/61-cputime.t move add blib/ to .gitignore Fix stray non-ascii char in MemoryProfiling.pod Add =encoding to bin/nytprofhtml pod Fix the perl v5.17+ fix to do-the-right-thing for 5.17.4. remove now-unused struct tms start_ctime, end_ctime Fix stray non-ascii char in MemoryProfiling.pod Add =encoding to bin/nytprofhtml pod Fix the perl v5.17+ fix to do-the-right-thing for 5.17.4. Bump version to 4.12 and add Changes Merge branch 'nytprof-4.12' Rename CLOCKS_PER_TICK to TICKS_PER_SEC Use ticks_per_sec instead of TICKS_PER_SEC Replace cumulative_subr_secs with cumulative_subr_ticks. (First step of several) Convert initial_subr_secs to initial_subr_ticks. Convert called_sub_secs to called_sub_ticks. Convert incl_subr_sec to incl_subr_ticks. Convert excl_subr_sec to excl_subr_ticks Completed switch from accumulating secs to ticks in the subroutine profiler. Improved nytprofmerge behaviour with inconsistent attributes. Prep for 4.23 minor tweaks to a few developer tests #if 0 a couple of unused funcs to silence warnings Updated Makefile.PL to refer to github add .travis.yml for CI testing via github and travis-ci.org Update the README Fixed tests to work with perl 5.17.7+ (PL_sawampersand gone) Further boost sub-profiler precision for POSIX and OSX clocks. Add travis-ci build status icon and link to README Note extra precision for POSIX and OSX systems with sub-microsecond clocks. Loosen timing constraints (for slow cpantester VMs) Clarify sigexit option docs Initial work adding sub entry and return events to the event stream Add some initial docs about the new call=1 option Add output and input handlers for sub entry and return data. Add call=1 to testing variants. Make env_influence report smarter. add note to t/test51-enable.x about need for more tests Use calls=2 to get entry events. Add depth to return events. Fix u2time clock (ie Time::HiRes, used by Windows). fixup MANIFEST update .gitignore merge Changes from v4 branch initial working nytprofcalls Squashed 'FlameGraph/' content from commit d9407a8 Merge commit '8a0ed6170c6eae8f97b363d8b2a2fb6794b1bb41' as 'FlameGraph' Add FlameGraph/... to MANIFEST Cleanups for nytprofcalls working but somewhat inefficient/bloated on big files first step towards reusing the hashtable code another step towards reusing the hashtable code another step towards reusing the hashtable code work in progress on nytprofcalls Move next_fid into the hash struct as next_id. Make fidhash a struct again. Use entry_struct_size for allocation Pass Hash_entry to hash_op() as a pointer Fix setting of prior_inserted on insert branch of hash_op add subname->id mapping to same some memory rewrite nytprofcalls to use sane efficient tree structure add an optimization and some stats Adde tests for nytprofcalls add nytprofcalls to Makefile.PL normalize string eval seqn in nytprofcalls tweak docs, comments, Changes Rework option handling slightly. Add option values to data file. Complete work on adding options to data file and nytprofmerge Initial flamegraph support for overall program. Add caching to optimize url_for_file update to latest flamegraph.pl Use new flamegraph.pl features, including clickable functions. No longer warn about $& etc being slow if $] >= 5.017008. Set calls=1 and blocks=0 by default scale nytprofcalls output to (floating point) microseconds Fix nytprofmerge syntax error. Add SUB_ENTRY/SUB_RETURN. Added visualization of the time spent outside of any subs. quiet a test update flamegraph.pl rm FlameGraph remove old FlameGraph repo from MANIFEST Add Test::Differences to deps. Remove t/test14.calls Fixed test for perl 5.17+ hash randomization. Tweak wording on index page. Use actual micro character (latin1). ensure exit with 0 status sync test with recent micro change Add sanity check to nytprofcalls and disable broken optimization. bug fix for flamegraph.pl tweak the tracing for sub call/return Update Changes and HACKING sync tests for nytprofcalls fix Merge branch 'v5' update bin/flamegraph.pl use bin/flamegraph.pl --factor instead of floating microseconds improve open/close logging and clarity profiler_duration calculation update bin/flamegraph.pl include ticks_per_sec in init_profiler log msg Use profiler_active not profiler_duration for flamegraph total refector hash structs to be reusable Minor tidy up of hash structs. Added hash_stats() function and strhash table. Pass key & len to hash_op instead of &entry. Add get_str_id. Implement string ids to reduce output volume. Currently just for calls stream. mark bin/nytprofcsv as deprecated Tweak Devel::NYTProf docs. Don't index SVG package in bin/flamegraph.pl Dump assorted notes into HACKING add --no-flame option to nytprofhtml Merge remote-tracking branch 'origin/master' Merge branch 'pr/2' Update Changes. Merge remote-tracking branch 'remotes/origin/pr/1' bump version to 5.00 update flamegraph to fix percentages Update MANIFEST update flamegraph with text improvements Fix memory leak reading sub call return events Do proper tree merging in nytprofcalls for sane memory use. Apply a little polish Prep Changes for 5.00 release. Merge pull request #3 from gisle/master Merge pull request #4 from gisle/gcc-error Update Changes Fix Windows build RT#84738. prep for 5.01 release Fix Windows build, properly RT#84738. Prep for 5.02 release. Merge remote-tracking branch 'origin/pr/5' Add meta robots noindex to html pages [Tokuhiro Matsuno] Avoid uninit warning bump VERSION for release Merge pull request #7 from doherty/nytprofhtml-pod-minimal Add "Other Tools" section to SEE ALSO with link to DTrace talk Merge branch 'master' of github.com:timbunce/devel-nytprof Add libcexit=1 option thanks to Zefram RT#75912 Add documentation for endatexit and libcexit options. Mention nytprofhtml --minimal RT#86039 in Changes Allow negative times in tests, thanks to Gisle Aas, RT#85556. Prep for 5.04 release Fixed crash on "Can't use string as a subroutine ref" error, RT#86638 Merge pull request #8 from dsteinbrunner/patch-2 Merge pull request #9 from dsteinbrunner/patch-1 Merge pull request #10 from moritz/master Fixed crash with libcexit=1, thanks to Zefram. RT#86548 Bump VERSION to 5.05 Update test90-strsubref.t for 5.18.x style error message Update Changes. Tweak PR#10 doc change Merge pull request #12 from dsteinbrunner/patch-1 Update Changes for PR#12 Fixed for perl 5.19.4. RT#88288 thanks to sprout. Fixed to no longer open a file when start=no. RT#87404. Fixed compiler warnings. RT#86728 thanks to Alexander Bluhm. Removed old benchmark.pl files. RT#86704. Bump version to 5.06 Merge pull request #17 from zentooo/add_timestamp Polished up addtimestamp option and interaction with addpid option. Merge pull request #11 from holger-s/master Tweak plat_form support merge and add Changes file note. Wrap $SIG{USR2} assignment in an eval for Windows Avoid NV to IV cast for NYTP_OPTf_ADDTIMESTAMP Put quotes around env var values reported by t/lib/NYTProfTest.pm Fix t/test02.pf to not require unix-style file paths Fixed an '#if PERL_IMPLICIT_CONTEXT'.. Added link to explanatory comment. Added Changes. Add pf (platform) files to MANIFEST, plus .travis.yml Fix to write platforms test files to the temporary test output directory Add perl 5.8, 5.18 and 5.19 to .travis.yml Refactor some nytprofcalls internals. No functional changes. Refactor Time::HiRes support so it can be enabled independently Simplify diff_files() in t/lib/NYTProfTest.pm Better diagnostics for fileinfo_of('(eval 1)[-:1]') failure Only run t/70-subname.t if Sub::Name 0.11 or later is installed. Fixed link to screencast, thanks to Herwin. #19 Workaround travis cpanm issues eg https://travis-ci.org/timbunce/devel-nytprof/jobs/35285944 Improve .travis.yml Further tweaks to .travis.yml Added hint to use --no-flame for big reports. #28. Added t/test02.pf.csv Further tweaks to .travis.yml Fixed use of nytprofcalls and flamegraph scripts to not require PATH #21 Fixed nytprofhtml --open for KDE4 thanks to HMBRAND RT#99080 Fixed printf NV conversion compiler warnings thanks to zefram RT#91986 Disabled optimize test25-strevalb.t if perl >= 5.20, perl RT#70211, #38 Fix syntax of perl_rt70211 check in t/test25-strevalb.t Merge pull request #41 from wollmers/patch-1 Merge pull request #40 from mohawk2/testfix Allow sub name buffer size to be set at build time Update Changes. Put sort block on one line due line numbering change in perl 5.21 Move tie tests into perl version specific variants Commit the missing skip_all left off previous commit Install optional modules for better test coverage Don't fail due to failure to install optional prereqs Preload some Moose prereqs to avoid travis-ci 60 sec timeout Use travis_wait to workaround 'cpanm Moose' timeout Give up testing with Moose due to timeouts Add docs re FCGI::Engine and open('-|') #20 Bump version to 5.07 Clarification of the RUN-TIME CONTROL OF PROFILING docs Clarify reason for loading Devel::NYTProf as early as possible. Merge pull request #61 from calid/perlbrew-locallib Make t/50-errno.t write .out file in t/ like other tests Update MANIFEST.SKIP Update MANIFEST via "make manifest" and sort Use "Devel::NYTProf::Changes" as NAME in Changes Add File::Which to prereqs and update Changes for #61 Merge pull request #63 from dbooth-boston/master Merge pull request #64 from wollmers/patch-2 Merge pull request #67 from bulk88/PMC Merge pull request #69 from bulk88/setvbuf Clarified the docs re DB:: functions, #63 and updated Changes Add QueryPerformanceCounter clock for Windows Fix unused variable warnings RT#103107 Bump version to 6.01 (in honor of Windows enhancement from bulk88). Changes. Merge pull request #73 from karenetheridge/topic/json_any_deprecated Replace all search.cpan.org urls with metacpan.org urls Merge pull request #74 from karenetheridge/topic/metacpan_urls Merge pull request #75 from jandubois/context-fixes Updated to latest flamegraph.pl plus PR#62. Fix JSON::MaybeXS usage. Use --hash on flamegraph (experimental). Update Changes. Bump version to 6.02 Uwe Voelker (5): Rewrite test system: Each test now has its own .t file (using t/lib/NYTProfTest.pm). Next steps: Remove 20.runtests.t and update HACKING to reflect the new test system. Fixup t/test30-fork.0.t for Windows Remove no_plan from tests, allow additional tests (see example in t/test01.t) Removed t/20.runtests.t, fixed MANIFEST fixed test 30.util (wrong test count; issue 13) bulk88 (6): update gitignore for Windows build products use PERL_NO_GET_CONTEXT everywhere reduce errno calls PERL_DISABLE_PMC might be anywhere, not in CCFLAGS Add QueryPerformanceCounter clock for Windows use setvbuf to increase buffer size gregor herrmann (1): Imported Upstream version 6.02+dfsg holger (2): - removed Data::Dump dependency removed Data::Dump dependency zentooo (1): I'd like to add timestamp suffix to for file purge in production environment ----------------------------------------------------------------------- No new revisions were added by this update. -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libdevel-nytprof-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits