Breaking changes:
- (agent, cli) pprof profiles emitted by Perforator now list inline chain frames in the spec-compliant innermost-first order
- (cli)
perforator pgonow requires explicit--start/--end - (cli) The legacy
htmloutput format (v1, server-rendered page) is removed.htmlnow always produces the interactive flamegraph viewer (formerly known ashtml-v2).
Deprecations:
- (cli) Render format aliases
html-v2,flamegraph,flame,fgandvisare deprecated in favor ofhtml - (proto)
RenderFormat.Flamegraphis deprecated, clients requesting it receive the new HTML viewer output
Behavior changes:
- (cli)
perforator fetch,perforator diffandperforator listnow default to the last 24 hours instead of the whole history - (storage) Profile merge now strips garbage root frames and sanitizes thread names by default (
strip_garbage_root_frames,sanitize_thread_names) - (proxy)
DiffProfilesresponses now default to an HTML flamegraph instead of JSON when no render format is specified.
Features:
- (agent) Python 3.14 is now supported
- (agent) Line number collection is now available for python, controlled by
feature_flags.enable_python_line_info - (cli, web) Python stack prettification can be requested in
perforator record,perforator fetchand the web UI - (ui) Flamegraph viewer received multiple UX enhancements
- (cli)
perforator profile flamegraphgained--line-numbersand--file-namesoptions - (cli)
perforator pgoaccepts an arbitrary--selector - (proxy) Proxy now exposes debuginfod-compatible HTTP API at
/api/debuginfod/buildid/...that serves binaries by GNU build-id to standard debuginfod clients - (proxy, cli) Microscopes can now be explicitly deleted (using API or
perforator microscope delete) - (storage) Agents can compress uploaded binaries (zstd) via the
binary_compressionagent config option - (storage) Profile creation tasks accept free-form
Annotationmetadata echoed back in task info; binary uploads can carry custom string attributes - (cli) Separate debug info is now located via
/usr/lib/debug/.build-idbefore falling back to debuginfod - (agent) Perforator now respets SFrame (
.sframe) unwind info when available (enabled byfeature_flags.enable_sframe) - (agent) New
--exclude-selfagent flag disables profiling the agent itself - (storage, proxy, agent) All services support a
samplinglogging config to reduce log volume - (cli)
perforator migrategained--pass-fileflag to read database passwords from a file
Fixes:
- (agent) Fixed that DWARF stack unwinding on ARM64 could produce truncated stacks or fail
- (agent) Fixed wrong symbolization when an inode number is reused by a different binary
- (agent) Fixed that profile labels could be missing for freshly created processes
- (agent) Fixed the configured storage/proxy port being ignored when the agent connects by hostname
- (agent) Fixed the agent log level flag being ignored.
- (agent) Fixed corrupted or incomplete binary uploads when the gRPC stream fails mid-transfer
- (agent) Multiple uprobes attached to the same binary location no longer overwrite each other
- (agent) Fixed a crash when analyzing binaries with too many TLS variables
- (offline-processing) GSYM builder better preserves full function names
- (offline-processing) Fixed a deadlock when binary loading fails
- (proxy) Fixed torn downloads of large binaries
- (storage) Profiles pushed with a zero timestamp no longer get lost
- (cli) profiles recorded with non-default events are no longer mislabeled as
cpu.cycleson upload; the--sample-typeflamegraph option is now respected - (proxy) PGO profile generation now converts addresses correctly for binaries with multiple executable mappings or skewed addresses (e.g. BOLT-optimized binaries) and propagates errors
- (proxy) DiffProfile tasks now propagate merge options into merge subtasks
- (ui) Fixed multiple flamegraph UX issues
- (web) Web serves favicon files
- (helm) Migration jobs respect the configured
imagePullPolicy - (migrate) ClickHouse migrations no longer crash when custom TLS CA is configured
Improvements:
- (symbolizer) C++ function-name shortening better handles return types, ABI tags and templates
- (cli) HTML flamegraph reports are now gzip-compressed
- (agent) Profile start time and duration are recorded in profile metadata
- (docs) Added UI guides
- (agent)
process_discovery.ignore_unrelated_processesconfig option is now effective when cgroup profiling targets are configured - (cli) The
--experimental-prettify-python-stacksoption changed from a boolean to a level:off,mixedorpython-only
Internal changes:
- Perforator now uses Go 1.26