Skip to content

Releases: jkool702/timep

timep v1.10.1

23 Nov 19:39
8746c85

Choose a tag to compare

timep v1.10.1: added a guard for BASH_ENV and a new stress test

What's Changed

Full Changelog: v1.10...v1.10.1

v1.10

12 Nov 20:24
cacb4ba

Choose a tag to compare

The timep v1.10 release is a smaller "quality of life" release that incorporates the following changes:

  1. /dev/shm is no longer a hard dependency. The loadable builtin timep.so file and the flamegraph generation perl script now follow he same logic that choosing the timep tmpdir uses (/dev/shm is preffered, but if unavailable $TMPDIR, /tmp, and $PWD will be tried with decreasing prefferance)
  2. The flamegraph generation workflow has been pareallelized. After the parallel primary log processing finishes, flamegraph generation runs in parallel with final output profile generation (resulting in a much shorted time until the output profile is printed to the screen). Additionally, when the dual-stack and quad-stack flamegraphs are created the 4x dual stack ones are made in parallel and the 2x quad-stack ones also are made in parallel.
  3. The way timep aggregates the compined time totals (shown at the bottom of the profiles) has been overhauled, making them more accurately describe the actual runtime (without instrumentation overhead). Three times are now shown:
  • "SELF RUN TIME": the "wall-clock" time that it actually took the command to run (this is new)
  • "TOTAL RUN TIME": the "wall-clock time" from all parallel branches of the code summed together
  • "TOTAL CPU TIME": the "CPU time" from all parallel branches of the code summed together

What's Changed

Full Changelog: v1.9.4...v1.10

v1.9.4

04 Nov 03:46

Choose a tag to compare

timep v1.9.4: hotfix for issue where timep did not properly bootstrap itself into called scripts and new bash instances

What's Changed

Full Changelog: v1.9.3...v1.9.4

v1.9.3

02 Nov 06:51

Choose a tag to compare

v1.9.3: hotfix for issue where code that was sourced (via source <...> or . <...>) caused the function nesting level to become out of sync

What's Changed

Full Changelog: v1.9.2...v1.9.3

v1.9.2

31 Oct 19:42

Choose a tag to compare

v1.9.2: hotfix for single-command substitutions having farr too high a runtime shown

What's Changed

Full Changelog: v1.9.1...v1.9.2

v1.9.1

31 Oct 02:25
17cc7df

Choose a tag to compare

hotfix for an issue where an extra empty line was being added to the profile, skewing CPU times upward.

What's Changed

Full Changelog: v1.9...v1.9.1

v1.9

30 Oct 02:34
d7bca54

Choose a tag to compare

timep v1.9: In this release, the instrumented DEBUG trap has been further refactored. In particular, accuracy is improved in:

  • a few pathological cases involving nested subshells and background forks where bash lies about the BASHPID have been fixed
  • async (background forked) function calls now are properly handled
  • much of the core instrumentation has been reworked (particularly related to when new subshells spawn), resulting in overall more structurally accurate profiles.
  • trap handlers are now shown correctly in the vast majority of cases
  • new AI-generated profiler stress tests have been added. timep is now producing accurate profiles of all of the stress tests

What's Changed

Full Changelog: v1.8.1...v1.9

v1.8.1

07 Oct 01:54
16b15e0

Choose a tag to compare

timep v1.8.1: In this release, the instrumented DEBUG trap has been refactored to improve accuracy and to avoid missing commands:

timep now knows how to properly handle backgrounded function calls (e.g., func &)
timep no longer silently drops commands from the profile in a handful of edge cases
timep, in general, produces more accurate profiles
timep now suvcesssfully profiles every single "explicitly-designed-to-break-profilers" stress test (under the TESTS dir). A few new stress tests were added as well
any orphaned logs are now automatically merged up (instead of silently dropped).
v1.8.1: various minor bugfix

What's Changed

Full Changelog: v1.8...v1.8.1

v1.8

05 Oct 15:59
f3bdf7c

Choose a tag to compare

In this release, the instrumented DEBUG trap has been refactored to improve accuracy and to avoid missing commands:

  • timep now knows how to properly handle backgrounded function calls (e.g., func &)
  • timep no longer silently drops commands from the profile in a handful of edge cases
  • timep, in general, produces more accurate profiles
  • timep now suvcesssfully profiles every single "explicitly-designed-to-break-profilers" stress test (under the TESTS dir). A few new stress tests were added as well
  • any orphaned logs are now automatically merged up (instead of silently dropped).

v1.7

23 Sep 18:24
cfb3e97

Choose a tag to compare

timep v1.7: This version contains 4 major changes/improvements, in addition to various minor changes and bugfixes:

  1. The log files that timep creates as it profiles are now named using the hash of their "nexec" value (a unique identifier that describes their position in the call stack) instead of the raw nexec value. This change allows for timep to handle arbitrarily deep nesting without exceeding filesystem limits on maximum file name length.
  2. timep now sets up its instrumented traps using BASH_ENV. this allows the instrumentation to automatically bootstrap itself into any scripts / new bash processes run by the profiled code. In other words, if the code being profiled calls a script, that script now gets automatically profiled too.
  3. The way that times were calculated from recorded tim,estamps and merged up has been reworked, making it more robust and making the timing information shown by timep's profile more accurate.
  4. The main output profile's structure has been channged. It no longer includes a 2nd copy of the execution tree diagram at the start. This change allows the profile to stay aligned in deeply nested sequences, making it much easier to read as well as easier to parse by machine.

What's Changed

  • add new loadables that support binding output to array variabless. Make github workflow tests on loadables more robust. by @jkool702 in #67
  • update timep to v1.7 by @jkool702 in #68

Full Changelog: v1.6.1...v1.7