- Update vendored async-profiler libraries to 1.8.6.
- Add prepackaged binaries for Linux x86 and Linux AArch64.
- Add early access prepackaged binary for MacOS AArch64 (M1). Note that this is not an experimental version.
- Update vendored async-profiler libraries to 1.8.2.
- Add ability to customize the frame buffer size with
- Add ability to set default profiling/rendering options.
- Update vendored async-profiler libraries to 1.6.
- Fix the bug with Clojure special characters not being properly demunged in stackframes.
- Add support for differential profiles.
- Refine browser UI.
- Allow to pass profiler run IDs instead of full filenames to
- Change the format of generated filenames. They now include a run ID and event type.
- #10: Add
support for SVG's
- #9: Fix out-of-bounds string access when demunging stackframes.
- Add custom color scheme for generated flamegraphs.
- Automatically demunge Java and Clojure frames in the output.
:transform <fn>capability to specify a custom transform function to post-process the collected stacks.
:threads trueoption to generate stacks for each thread separately.
- BREAKING: remove arities that take an explicit PID argument. If you want to
profile another process, pass
:pid <PID>argument to any profiling function.
- Update vendored async-profiler libraries to
Big features of the new async-profiler:
- Native stack traces on macOS.
- Wall-clock profiler: pass
:event :wallto the profiling command.
- Ship prebuilt library for Linux ARM platform.
profilegenerating flamegraph twice.
- Avoid illegal access warning on JDK9+.
- #1: Don't create flamegraph file if profiler was not running.
0.2.1 - botched release
- Update vendored async-profiler libraries to 1.4. From now on, clj-async-profiler ships binaries prebuilt by async-profiler maintainers themselves, no longer building them manually.
- Deprecate arities in user-facing functions that take explicit
pidargument. Instead, they now retrieve
:pidvalue from the option map. If the value is not present, use the current process as profiler target.
- Add default arity without
optionsmap for each user-facing function.
profilemacro which runs the profiler exactly for the duration of
- Make it possible to use clj-async-profiler outside of REPL environment (see clojure-goes-fast/clj-memory-meter#2 for context).
- Make the profiled event configurable through options.
profile-forno longer returns a future, instead it blocks the current thread for the specified duration. You can still wrap this call in
(future ...)manually if needed.
- #1: Fix problems with starting the profiler with Leiningen on Linux.
- #3: Add a more informative message in case of missing agent dependencies.
New options for
:min-width- a number in pixels to limit the minimal width of a stackframe. Use this if the resulting flamegraph is too big and hangs your browser. Recommended value is from 1 to 5.
:reverse?- if true, generate the reverse flamegraph which grows from callees up to callers.
:icicle?- if true, invert the flamegraph upside down.
The initial release of clj-async-profiler. Includes the ability to start and stop the profiler manually, profile for a period of time, and generate flamegraphs from the profiled data.