Skip to content

0.12.0 - 2024-04-16

Compare
Choose a tag to compare
@github-actions github-actions released this 16 Apr 00:36
· 683 commits to main since this release

Release Notes

Breaking changes

  • The minimum supported Rust version is now 1.74.
  • samply load perf.data is now called samply import perf.data.
  • The --port alias has changed from -p to -P.

Features

  • Linux: Allow attaching to running processes with samply record -p [pid] (#18, by @ishitatsuyuki)
  • Linux, macOS: Support Jitdump in samply record.
  • Linux: Support Jitdump in samply import perf.data without perf inject --jit.
  • Linux, macOS: Support /tmp/perf-[pid].map(#34 + #36, by @bnjbvr)
  • Linux, macOS: Support specifying environment variables after samply record.
  • Linux, macOS: Add --iteration-count and--reuse-threads flags to samply record.
  • Linux: Support symbolication with .dwo and .dwp files.
  • Linux: Support unwinding and symbolicating VDSO frames.
  • Linux, macOS: Support overwriting the launched browser with $BROWSER (#50, by @ishitatsuyuki)
  • Linux, macOS: Add --profile-name argument to samply record and samply import to allow overriding the profile name (#68, by @rukai)
  • Linux, macOS: Support Scala Native demangling (#109, by @keynmol)
  • macOS: Support --main-thread-only in samply record, for lower-overhead sampling
  • macOS, Linux: Unstable support for adding markers from marker-[pid].txt files which are opened (and, on Linux, mmap'ed) during profiling.
  • Linux: Support kernel symbols when importing perf.data files with kernel stacks, if /proc/sys/kernel/kptr_restrict is 0.
  • Android: Support importing perf.data files recorded with simpleperf's --trace-offcpu flag.

In progress

  • Linux: Groundwork to support profiling Wine apps (by @ishitatsuyuki)

Fixes

  • Linux, macOS: Don't discard information from processes with reused process IDs (e.g. due to exec).
  • Linux: Support recording on more types of machines, by falling back to software perf events in more cases. (#70, by @rkd-msw)
  • Linux: Fix out-of-order samples. (#30 + #62, by @ishitatsuyuki)
  • Linux: Fix unwinding and symbolicating in processes which have forked without exec.
  • Linux: Capture startup work of launched processes more reliably.
  • Linux: Fix debuglink symbolication in certain cases. (#38, by @zecakeh)
  • Linux: Fix stackwalking if unwinding information is stored in compressed .debug_frame sections. (#10, by @bobrik)
  • macOS: Fix symbolication of system libraries on x86_64 macOS 13+.
  • Android: Allow building samply for Android. (#76, by @flxo)
  • macOS: Fix Jitdump symbolication for functions which were JITted just before the sample was taken (#128, by @vvuk)
  • macOS, Linux: More reliable handling of Ctrl+C during profiling.
  • macOS: Support recording workloads with deep recursion by eliding the middle of long stacks and not running out of memory.
  • x86_64: Improve disassembly of relative jumps by displaying the absolute target address (#54, by @jrmuizel)
  • macOS: Use yellow instead of blue, for consistency with Linux which uses yellow for user stacks and orange for kernel stacks.

Other

  • Improve build times by using the separate serde-derive crate (#65, by @CryZe)

Install samply 0.12.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mstange/samply/releases/download/samply-v0.12.0/samply-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -c "irm https://github.com/mstange/samply/releases/download/samply-v0.12.0/samply-installer.ps1 | iex"

Download samply 0.12.0

File Platform Checksum
samply-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
samply-x86_64-apple-darwin.tar.xz Intel macOS checksum
samply-x86_64-pc-windows-msvc.zip x64 Windows checksum
samply-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
samply-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum