Skip to content

0.13.1 - 2025-02-01

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 01 Feb 07:26

Release Notes

This release adds Windows support. It uses ETW via xperf to record the system activity to an ETL file. Then samply converts the ETL file.

Samply asks for Adminstrator privileges during profiling. This is necessary for ETW to work.

Thanks to @jrmuizel for getting this off the ground. Most of the Windows implementation was initially written by him. ETW is rather lightly documented, so this required a lot of research.

Also thanks to @vvuk, who integrated Jeff's code into samply and contributed hugely to getting this ready for production!

And thanks to the authors of the https://github.com/n4r1b/ferrisetw crate; samply uses etw-reader which started out as a fork of ferrisetw.

Known issues:

  • By default, you won't get Windows symbols, but you can use samply record --windows-symbol-server https://msdl.microsoft.com/download/symbols to fix this - this will download symbols for Windows system libraries and kernel stacks from Microsoft's server. I'm planning to add a config file for samply so that symbol servers can be configured more permanently, but it doesn't exist yet.
  • Missing symbols for precompiled .NET code: This is getsentry/pdb#153, which has a potential patch in getsentry/pdb#154.
  • CoreCLR support could be better - some of it isn't working correctly any more (see #483)

Breaking changes

  • The minimum supported Rust version is now 1.77.

Features

  • Windows: Initial support.
  • macOS: Support attaching to running processes and their subprocesses (#190, by @vvuk, and #425, by @tmm1)
  • macOS: Add samply setup to code-sign samply so that attaching to running processes can work (#217 + #353, by @vvuk)
  • All platforms: samply import has much better support for Android simpleperf now
  • All platforms: Add --main-thread-only flag
  • All platforms: Add --include-args argument
  • Windows, Linux: Add --per-cpu-threads flag
  • All platforms: Add --symbol-dir, --windows-symbol-server, --windows-symbol-cache, --breakpad-symbol-server, --breakpad-symbol-dir, --breakpad-symbol-cache, and --simpleperf-binary-cache arguments (various PRs, including some by @ishitatsuyuki)
  • All platforms: Add --address option to specify the IP address at which the local server is listening (#234, by @Rjected)
  • All platforms: Add --unstable-presymbolicate flag (#202, by @vvuk)

Fixes

  • Fix build errors related to zerocopy and zerocopy_derive (#356, by @mox692)
  • macOS: Fix library enumeration on macOS 15 Sequoia (#403, by @Maaarcocr)

Install samply 0.13.1

Install prebuilt binaries via shell script

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

Install prebuilt binaries via powershell script

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

Download samply 0.13.1

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-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
samply-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
samply-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum