Releases: jkool702/timep
timep v1.10.1
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
The timep v1.10 release is a smaller "quality of life" release that incorporates the following changes:
/dev/shmis 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/shmis preffered, but if unavailable$TMPDIR,/tmp, and$PWDwill be tried with decreasing prefferance)- 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.
- The way
timepaggregates 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
- Next/main 2 by @jkool702 in #85
- Update timep.so and refresh base64 block in timep.bash by @github-actions[bot] in #87
- timep v1.10 by @jkool702 in #88
- Testing/main new by @jkool702 in #90
Full Changelog: v1.9.4...v1.10
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9
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
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
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
timep v1.7: This version contains 4 major changes/improvements, in addition to various minor changes and bugfixes:
- 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.
- 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.
- 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.
- 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