11Unreleased:
2+ SDK:
3+ * Introduced an initial Rust SDK (`perfetto-sdk` on crates.io). This is the
4+ first project to be hosted in the new `contrib/` directory as a
5+ community-maintained effort.
6+ * Java SDK: Allow users to provide custom identifiers for named tracks.
27 Tracing service and probes:
3- * "linux.ftrace": FtraceConfig.denser_generic_event_encoding is now enabled
4- by default (set it explicitly to false to revert to previous encoding,
5- which is now deprecated). This reduces trace size when recording events
6- that aren't know by perfetto at compile time.
8+ * Added initial support for building and running Perfetto on FreeBSD,
9+ enabling both the tracing service and SDK. This includes
10+ platform-specific implementations for threading, time, and memory
11+ management, as well as toolchain adjustments.
12+ * "linux.ftrace": Enabled `FtraceConfig.denser_generic_event_encoding` by
13+ default. This reduces trace size for events unknown at compile time.
714 * SharedMemoryArbiter: Reduced CPU usage when tracing high-throughput
815 workloads by preventing duplicate immediate flush tasks when the shared
916 memory buffer is more than half full.
10- * traced_probes: now requests a 2MB shared memory buffer instead of 1MB
17+ * traced_probes: Increased shared memory buffer request to 2MB (was 1MB)
1118 when connecting to the tracing service (traced).
19+ * traced_perf: Added support for user-space, kernel, and hypervisor
20+ counting event modifiers.
21+ * Updated gpu_scheduler trace events for Linux 6.17.
22+ * perfetto cmd: Added `--notify-fd` flag. This allows waiting for all data
23+ sources to be started without running in background mode, which is useful
24+ for capturing command output or ensuring termination with the calling
25+ process.
26+ * Android: Switched to RtFutex to fix deadlock when `Tracing::Initialize` is
27+ called from a static initializer.
28+ * Enabled LockFreeTaskRunner on non-Android platforms to reduce lock
29+ contention.
1230 SQL Standard library:
13- *
31+ * android_anrs: Added ANR timer event data and default durations.
32+ * Improved thread creation spam analysis with new per-process and renamed
33+ per-thread functions.
1434 Trace Processor:
35+ * Added support for importing pprof profiles.
36+ * Added support for ingesting simpleperf's protobuf format.
1537 * Added support for parsing process_sort_index and thread_sort_index
1638 metadata from JSON traces. These are stored as process_sort_index_hint
1739 and thread_sort_index_hint in the args table for processes and threads.
@@ -20,17 +42,64 @@ Unreleased:
2042 may fail with "ambiguous column name: arg_set_id". Qualify the column
2143 with the table name (e.g. `slice.arg_set_id` or `counter.arg_set_id`) to
2244 resolve this.
45+ * Added support for dynamically loading custom protobuf descriptors at
46+ runtime.
47+ * Added support for FILE_IO events and thread wait reasons in CSwitch
48+ events for more detailed ETW traces.
49+ * Added `unhex` SQL function to convert hexadecimal strings to signed
50+ 64-bit integers.
51+ * Added support for Python trace_processor to expose trace metadata.
52+ * Improved error handling and logging for clock synchronization and track
53+ events.
2354 UI:
24- * Perf sample callstack tracks: if a trace contains multiple callstack data
25- sources, the thread and process level callstack tracks can now be
26- expanded to see which samples came from which sampling timebase/leader
27- counter .
55+ * Perf sample callstack tracks: Added capability to expand thread and
56+ process level callstack tracks to distinguish samples from different
57+ timebases or leader counters when multiple callstack data sources are
58+ present .
2859 * Added support for sorting processes and threads using sort_index hints
2960 from JSON traces. Processes and threads with lower sort index values
3061 will appear first in the UI.
31- SDK:
32- * Reduced CPU usage when tracing high-throughput workloads by preventing
33- duplicate immediate flush tasks in the shared memory arbiter.
62+ * Added support for attaching callstacks to TrackEvents, including both
63+ slices and instant events. When an event with a callstack is selected, the
64+ callstack is displayed in the details panel. Additionally, an area
65+ selection will aggregate all callstacks of events in that area into a
66+ flamegraph.
67+ * Added a new plugin for displaying pprof profiles, which introduces a
68+ dedicated page in the UI for visualizing and analyzing pprof data.
69+ * Overhauled the "Info and Stats" page, renaming it to "Overview" and
70+ transforming it into a modern, tabbed dashboard. This new page provides a
71+ high-level summary of the trace and exposes the new `trace_import_logs`
72+ table from the Trace Processor, making it easier to debug trace import
73+ issues.
74+ * Added resize handle to pinned tracks area. Drag to set fixed height;
75+ double-click to restore default auto-sizing.
76+ * Debug tracks: Added support for custom slice coloring via SQL column
77+ values.
78+ * Recording page: Added 'Network' section for WiFi debugging.
79+ * Added path-based filtering to all `*ByRegex` commands (`Pin`, `Expand`,
80+ `Collapse`, `CopyTracksToWorkspace`,
81+ `CopyTracksToWorkspaceWithAncestors`). This allows for more precise track
82+ selection by filtering on the full track path (e.g., `process_name >
83+ thread_name`) in addition to just the track name.
84+ * Android Logcat: Improved column ordering, case-insensitive search, and UI
85+ clarity.
86+ * Grouped settings on the settings page by the plugin that added them, with
87+ core settings placed in a "core" section, to improve organization.
88+ * Increased wasm stack size to 2MB to reduce stack overflows.
89+ * Added ability to pin and copy tracks using SQL queries.
90+ * SQL table viewer: Added "Analyze" submenu for data analysis
91+ and transformation, including column casting and various string
92+ manipulations.
93+ * Added support for visually marking inlined functions within flamegraphs.
94+ These markers appear as a visual indicator on a frame and in its tooltip,
95+ making it easier to identify compiler optimizations like inlining in CPU
96+ profiles.
97+ Misc:
98+ * Introduced a `contrib/` directory for community-maintained code, allowing
99+ external contributors to own and maintain projects that are technically
100+ decoupled from official Perfetto distributions. These projects have
101+ relaxed review requirements and are not officially supported by the core
102+ Perfetto team. (https://github.com/google/perfetto/discussions/3404)
34103
35104v52.0 - 2025-09-16:
36105 Tracing service and probes:
0 commit comments