• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Unreleased:
2  Tracing service and probes:
3    *
4  SQL Standard library:
5    *
6  Trace Processor:
7    *
8  UI:
9    *
10  SDK:
11    *
12
13
14v46.0 - 2024-06-13:
15  SQL Standard library:
16    * Added megacycles support to CPU package. Added tables:
17      `cpu_cycles_per_process`, `cpu_cycles_per_thread` and
18      `cpu_cycles_per_cpu`.
19    * Improved `memory` package. Added `memory.linux.process`,
20      `memory.linux.high_watermark` and `memory.android.gpu` modules.
21    * Created `gpu` package with `gpu.frequency` module.
22    * Migrated `sched.utilization` package to `cpu.utilization`.
23  Trace Processor:
24    * Added "time to initial display" and "time to full display" metrics to
25      the Android startup metric.
26  UI:
27    * Added plugin for synchronizing two instances of the UI - search for
28      'Enable timeline sync with other Perfetto UI tabs' in the command palette.
29    * Add builtin prompt functionality to the plugin API:
30      I.e. `await PluginContextTrace.prompt('...')`
31    * Fixed various bits of tech debt.
32  SDK:
33    * The TRACE_COUNTER macro and CounterTrack constructor no longer accept
34      `const char *` track names. In case your code fails to compile,
35      https://perfetto.dev/docs/instrumentation/track-events#dynamic-event-names
36      explains how to fix the problem.
37
38
39v45.0 - 2024-05-09:
40  Trace Processor:
41    * Optimised single column `DISTINCT` queries.
42    * Optimised `LIMIT` and `OFFSET` queries.
43  SQL Standard library:
44    * Improved support for querying startups on Android 9 (API level 28) and
45      below. Available in `android.startup.startups` module.
46    * Added tables for querying "Time To Initial Display" and "Time To Full
47      Display" metrics for app startups. Available in new module
48      `android.startup.time_to_display`.
49    * Added table for querying hardware power rail counters in new
50      `android.power_rails` module.
51  UI:
52    * Add tracks to the list of searchable items.
53    * Use mipmaps to improve track query performance on large traces.
54    * Fix slow scrolling bug in ftrace explorer tab on low DPI machines.
55    * Overhaul track decider queries to improve trace load times.
56    * Add track
57    * Tidy up command names & remove some example ones.
58    * Remove arg auto-completion in pivot table.
59    * Show dominator tree views by default.
60    * Fix counter event selection off-by-one error.
61    * Add viewport control to the plugin API.
62    * Sticky track titles to improve track button accessibility in tall tracks.
63    * A handful of small bugfixes.
64  SDK:
65    * The TRACE_EVENT macro used to reject `const char *` event names: either
66      `StaticString` or `DynamicString` needed to be specified. In the last year
67      (since https://r.android.com/2494614), TRACE_EVENT mistakenly accepted
68      `const char *` as an event name. This has been fixed now. In case your
69      code fails to compile,
70      https://perfetto.dev/docs/instrumentation/track-events#dynamic-event-names
71      explains how to fix the problem.
72
73
74v44.0 - 2024-04-10:
75  Trace Processor:
76    * New modules added to standard library: `frames.timeline`,
77      `frame.per_frame_metrics`, `sched.time_in_state`.
78  UI:
79    * Per-cpu scheduling tracks now distinguish real-time priority threads with
80      a hatched pattern and name prefix. Based on priority during switch-in.
81    * Added ftrace event cropping for traces recorded by perfetto v44+.
82      Events are ignored if they precede the earliest timestamp covered by all
83      per-cpu data streams. This should significantly improve the presentation
84      of RING_BUFFER traces, removing artifacts such as never-ending slices
85      starting at the beginning of the trace.
86    * Significantly improved trace load times.
87    * Improved counter track view modes, including log scale, expanded view, and
88      the ability for plugin authors to link scales of several counter tracks
89      together.
90    * Add dominated size and objects to Java heap graph view.
91      Added hotkey Q to open and close bottom drawer.
92    * Fixed bug where timeline header and tracks could become horizontally
93      misaligned when using browser zoom.
94    * Fixed crash when hot-reloading Sass during development.
95    * Fixed bug where crashed debug tracks could not be closed.
96    * Fixed missing flame graph details for area selections.
97    * Consistent reporting of durations for incomplete slices.
98    * Switch to using prettier for formatting TS & Sass instead of ESLint.
99  SDK:
100    * "track_event" categories are disabled by default in the C API, if they
101      don't match anything in the data source config. This behavior differs from
102      the C++ API. Configs should include either `enabled_categories: "*"` or
103      `disable_categories: "*"` to explicitly specify the desired behavior that
104      work both for C and C++.
105
106
107v43.2 - 2024-03-07:
108  UI:
109    * Added redirection to pinned UI version when using
110      `trace_processor_shell --httpd` and pinned version is available.
111
112
113v43.1 - 2024-03-05:
114  Tracing service and probes:
115    * Cherry-pick of https://r.android.com/2988674, which fixes the android x86
116      standalone build.
117
118
119v43.0 - 2024-03-05:
120  Tracing service and probes:
121    * Buffers marked as `transfer_on_clone` will be flushed independently when
122      cloning.
123    * ftrace: added drain_buffer_percent option to read kernel ring buffer
124      based on occupancy in addition to existing periodic reads. Requires Linux
125      kernel v6.1+.
126    * ftrace: changed default kernel per-cpu ring buffer sizes if a config
127      doesn't request an explicit size via buffer_size_kb. Added
128      buffer_size_lower_bound option that lets the service choose a bigger ring
129      buffer size than requested.
130    * "linux.process_stats" data source: added options to record: process age,
131      time spent running in userspace, and time spent running in kernel mode,
132      using /proc/pid/stat. See "record_process_age" and
133      "record_process_runtime" options.
134  Trace Processor:
135    * Added `decompress_packets` mode to the traceconv tool.
136    * Support memory mapped file access on Windows.
137    * Deprecated `common` standard library module, it will be removed by v45.
138      Some of the functionality have been migrated to other parts of standard
139      library.
140  UI:
141    * Added a "defaultPlugins" list to allow control over which plugins are
142      enabled by default.
143    * Added a feature to allow enabling/disabling plugins permanently from the
144      plugins page.
145    * Added plugin load times to the plugin page.
146    * Added scrolling to the pinned track area.
147    * Added commands for expanding and closing all tracks.
148    * Added {expand,collapse}GroupsByPredicate to plugin API.
149    * Added SimpleSliceTrack & SimpleCounterTrack which have the same
150      functionality of debug tracks but may be added on trace load from within
151      plugins.
152    * Added naive track crash containment, which means tracks that crash should
153      not crash the entire UI.
154    * Don't render "idle" kernel thread slices in thread state tracks.
155    * Fixed crash when using autofill in text inputs in chrome.
156    * Fixed bug where "incomplete" slices were sometimes not rendered.
157    * Fixed crash when calls to CacheStorage fail via promise rejection.
158    * Fixed bug causing slices to occasionally disappear in tracks v2.
159    * Fixes crash in tracksV2 when visible window is negative.
160    * Fix bug when toggling the sidebar without a trace loaded would either
161      crash the UI or simply not work.
162    * Various TabsV2 QoL improvements.
163    * Various AndroidLongBatteryTracing plugin improvements.
164
165
166v42.0 - 2024-02-02:
167  Tracing service and probes:
168    * Linux/Android: kernel scheduling data (sched_switch and sched_waking
169      ftrace events) is now serialised in a more compact format by default
170      (previously required setting ftrace_config.compact_sched.enabled).
171  UI:
172    * Added "Realtime (Trace TZ)" timestamp formatting option to see timestamps
173      in the local time of the traced device. It requires recent versions of the
174      tracing service which set the system_info.timezone_off_mins field.
175    * Added tab support to the plugin API.
176    * Added a plugin to improve visualization of Android power traces containing
177      ODPM (on-device power rail monitor) data.
178    * Added support to attach the UI via ?rpc_port=1234 to multiple instances of
179      trace_processor --httpd --http-port=1234 (see UI docs).
180    * Fixed OOM detection message on in-memory tables.
181    * Fixed rendering of events at the every beginning and end of the trace.
182    * Fixed rendering of low density slices.
183    * Fixed bug in filterVisibleSlices (Thanks to Liangliang Sui).
184  SDK:
185    * Fixed a bug that would cause DataSource::OnStop to be called twice upon
186      service disconnection with HandleStopAsynchronously().
187    * Fixed a long standing bug that caused the last TracePacket for every
188      sequence to be lost during scraping, for data sources that do not support
189      flushing. The fix works with old versions of the tracing service.
190
191
192v41.0 - 2024-01-11:
193  Tracing service and probes:
194    * Added support for ADB_SERVER_SOCKET in the websocket bridge.
195    * Added support for reading Pressure Stall Information (PSI) from the kernel.
196  Trace Processor:
197    * Added capability to control trace processor using stdin/stdout when using
198      shell binary. This acts as a simpler alternative to the existing HTTP
199      control API.
200    * Fixed multiple edge-case issues in RestoreInitialTables.
201  SDK:
202    * Fixed a long standing bug that caused the last TrackEvent event for each
203      thread to be lost during scraping. The fix works with old versions of the
204      tracing service.
205
206
207v40.0 - 2023-12-04:
208  Tracing service and probes:
209    * Added support for collecting battery voltage from the Android Power HAL.
210    * Added support for emitting machine id from producers on remote hosts.
211  Trace Processor:
212    * Added of flow id from trace as a column in the flow table.
213    * Fixed computation of trace_bounds table when using UI native acceleration.
214  UI:
215    * Switched to use "v2" querying and rendering system for tracks by default.
216
217
218v39.0 - 2023-11-15:
219  Tracing service and probes:
220    * Added reporting of TZ offset under system_info.timezone_off_mins .
221    * Added no_flush option to DataSourceDescriptor to avoid unnecessary IPC
222      roundtrips to flush data sources like track_event that rely uniquely on
223      server-side scraping.
224    * Added support for running on Linux & Android systems configured with 16K
225      pagetables.
226  Trace Processor:
227    * Added android_boot metric.
228    * Added new PerfettoSQL syntax (CREATE PERFETTO VIEW) for adding schemas to views.
229    * Added support for the perf.data import format.
230    * Added dvfs and cpu_idle to stdlib.
231  UI:
232    * Added a new type of debug tracks: counter.
233    * Improved visualization of timestamps for durations.
234
235
236v38.0 - 2023-10-10:
237  Tracing service and probes:
238    * Added capability to transfer and clear buffers on CLONE_SNAPSHOT.
239    * Added new service for relaying IPC messages from local producers to a
240      remote tracing instance.
241  Trace Processor:
242    * Added new PerfettoSQL syntax (INCLUDE PERFETTO MODULE) for including
243      tables/views/functions defined in SQL modules.
244    * Added new PerfettoSQL syntax (CREATE PERFETTO TABLE) for defining analytic
245      tables in SQL.
246    * Added new PerfettoSQL syntax (CREATE PERFETTO MACRO) for defining macros
247      in SQL.
248    * Added TO_REALTIME function to convert timestamps to the realtime clock.
249    * Added support for parsing binder_command and binder_return events.
250  UI:
251    * Added support for zooming when using deep-links.
252    * Added track for displaying screenshots in traces.
253    * Added support for displaying UTC timestamps.
254    * Added capability to list, search and debug plugin tracks.
255    * Added plugins with commands for pinning tracks for latency and large
256      screen debugging in Android.
257
258
259v37.0 - 2023-08-10:
260  Tracing service and probes:
261    * Fixed a bug which would cause sessions cloned with CLONE_SNAPSHOT to not
262      inherit the trace filtering config.
263    * Fixed a bug that would cause flushes to be acked prematurely in
264      traced_probes if the android.package_list data source is present.
265  SDK:
266    * Fix build with MSVC.
267  UI:
268    * Added command palette (CTRL/Meta+Shift+P).
269    * Added grouping of global tracks into groups to reduce visual pollution.
270    * Added ability to toggle timestamps between trace / boot / wall time.
271    * Added recording UI for callstack sampler.
272    * Added "Viz" page to run chart query results with Vega-Lite.
273    * Highlight debuggable apps, which might have worse performance
274      characteristics, with a chip on the corresponding tracks.
275  Misc:
276    * master -> main branch migration. HEAD is now main, master is for now a
277      mirror and will become a stale frozen snapshot.
278
279
280v36.1 - 2023-07-06:
281  Trace Processor:
282    * Fix compile on Windows.
283
284
285v36.0 - 2023-07-05:
286  Tracing service and probes:
287    * Fixed unnecessary reads of thread files /proc when scraping process names.
288  Trace Processor:
289    * Rewrote filtering engine to be significantly faster on a wide range of
290      common queries.
291    * Significantly improved quality of PerfettoSQL error messages.
292    * Added API to retrieve last executed statement from iterator.
293    * Added support for filtering rows by a regex.
294  UI:
295    * Fixed flow events working for async tracks.
296    * Added table viewer for slice-like tables.
297  SDK:
298    * Reduce binary size impact of macro and template expansions.
299
300
301v35.0 - 2023-06-07:
302  Tracing service and probes:
303    * Compression has been moved from perfetto_cmd to traced. Now compression is
304      supported even with write_into_file. The `compress_from_cli` config option
305      can be used to restore the old behavior.
306    * Changed the android.statsd datasource to batch multiple atoms into
307      a single trace packet. This improves performance and information
308      density.
309  Trace Processor:
310    * Fixed protozero parsing code to support field ids larger than
311      2^16 - 1. protozero now supports field ids up to 1,000,000
312      See https://github.com/google/perfetto/issues/510.
313  UI:
314    * Add support for deep links into the UI via query parameters.
315    * Fixed multiple issues around the display of track event log
316      messages See https://github.com/google/perfetto/issues/507.
317
318
319v34.0 - 2023-05-02:
320  Tracing service and probes:
321    * --continuous-dump in tools/java_heap_dump now keeps recording until it
322      receives CTRL+C.
323    * Add CLONE_SNAPSHOT triggers for non-destructive snapshots of the trace
324      buffer without tracing interruption.
325  UI:
326    * Add support for parsing large integers from Trace Processor into
327      bigint. This is the default behaviour for unknown fields and can
328      be enabled specifically via the LONG and LONG_NULL column types.
329  SDK:
330    * Changed the type of the static constexpr metadata on protozero
331      generated bindings from a function returning the metadata to
332      metadata itself. For a field 'foo' the variable kFoo previously
333      defined as:
334      `static constexpr FieldMetadata_Foo kFoo() = { return {}; };`
335      it is now defined as:
336      `static constexpr FieldMetadata_Foo kFoo;`
337      This is a breaking change for users who directly access field
338      metadata.
339    * The new DataSourceBase::OnFlush() method allows users to properly handle
340      Flush requests.
341
342
343v33.1 - 2023-03-03:
344  Identical to v33.0. Version was bumped to work around prebuilt infra failures.
345
346
347v33.0 - 2023-03-02:
348  All:
349    * Switched to a C++17-only project by removing C++11 opt-out. This completes
350      the migration started in v31.0.
351  SDK:
352    * Tracing::Initialize() can be called more than once to initialize different
353      backends separately.
354    * Reduce binary size impact of autogenerated code.
355
356
357v32.2 - 2023-02-16:
358  SDK:
359    * Fix MSVC warnings.
360
361
362v32.1 - 2023-02-01:
363  Trace Processor:
364    * Fix build on windows.
365
366
367v32.0 - 2023-02-01:
368  Tracing service and probes:
369    * Added an explicit TraceUuid packet. The tracing service now always
370      generates a UUID, even if TraceConfig.trace_uuid_msb/lsb is empty.
371  Trace Processor:
372    *
373  UI:
374    *
375  SDK:
376    * Add perfetto::Tracing::ActivateTriggers() function.
377    * Made it possible to declare track event categories in a C++ namespace
378      with PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE, allowing multiple category
379      sets to be used in one same translation unit. Correspondingly, the
380      PERFETTO_COMPONENT_EXPORT and PERFETTO_TRACK_EVENT_NAMESPACE macros have
381      been deprecated in favor of this new functionality.
382    * Deprecated the PERFETTO_COMPONENT_EXPORT macro in favor of
383      PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE_WITH_ATTRS.
384    * Added TracingInitArgs::enable_system_consumer configuration option, that
385      allows the linker to discard the consumer IPC, if not required.
386
387
388v31.0 - 2022-11-10:
389  Tracing service and probes:
390    * Added support for collecting Android Trusty ftrace events.
391    * Fixed resetting syscall filter when recording selected syscalls.
392  Trace Processor:
393    * Improved error messages on SQL syntax errors.
394    * Improved performance of queries containing GLOB. Handling of GLOB
395      constraints now happens inside trace processor instead of SQLite.
396    * Added support for parsing Android Trusty ftrace events.
397  UI:
398    * Added support for metatracing UI code and integrate with trace processor
399      metatracing.
400    * Added support for scrolling to a time region using the postMessage API.
401    * Enabled Pivot table functionality by default.
402    * Fixed downloading of Java heap profiles.
403  SDK:
404    * Switched to require C++17 by default. A time-limited opt-out exists but
405      is planned to be removed in v34. Please contact us at
406      perfetto-dev@googlegroups.com if you have thoughts or concerns on this
407      move.
408
409
410v30.0 - 2022-10-06:
411  Trace Processor:
412    * Fixed parsing of "R+" (preempted) and "I" (idle kernel thread) end states
413      of sched_switch events, collected on Linux kernels v4.14 and above.
414      Previously, preemption was not recognised, and idle was reported as
415      "x" (task dead). See commit c60a630cfe0.
416    * Add support for parsing sys_write syscalls.
417    * Remove the thread_slice table: all columns have moved to the slice table
418      and thread_slice exists as a view for backwards compatibility. This view
419      will also be removed in the future
420    * Add Base64 encode SQL function.
421    * Add support for importing function graph ftrace events.
422    * Add support for importing V4L2 ftrace events.
423    * Add support for importing virtio-video ftrace events.
424  UI:
425    * Fix downloading profiles from flamegraphs.
426    * Enable Pivot table support by default.
427  SDK:
428    * Add support for disallowing concurrent tracing sessions.
429
430
431v29.0 - 2022-09-06:
432  Tracing service and probes:
433    * Add support for only tracing selected syscalls. By selecting only syscalls
434      of interest, usage of the trace buffer and performance impact on device
435      is reduced.
436    * Add support for parsing DSI ftrace events.
437  Trace Processor:
438    * Make calling NotifyEndOfFile more than once an error: this was deprecated
439      in v28. Flush should be used instead for all by the final call.
440    * Add parsing and ingestion for V4L2 events.
441    * Upgraded SQLite to 3.39.2.
442  UI:
443    * Add support for searching Android log events.
444    * Group kernel wakelock tracks into a single track group.
445  SDK:
446    * Added support for startup tracing. Tracing can be started in an app
447      before it connects to the tracing service.
448      The data sources which are started for startup tracing, will
449      be automatically adopted to normal tracing session once we start
450      normal tracing session.
451    * Added the |first_packet_on_sequence| boolean which is set the first packet
452      emitted on each TraceWriter.
453
454
455v28.0 - 2022-08-02:
456  Tracing service and probes:
457    * Add android.statsd datasource.
458    * Removed log spam about sys.trace.traced_started in standalone builds.
459    * Changed kallsyms parsing in traced_probes (ftrace) to be always
460      synchronous (when starting the trace, rather than on the first batch).
461    * Added ksyms_mem_policy = KSYMS_RETAIN_FOREVER config to avoid destroying
462      and re-parsing kallsysm repeatedly in benchmark runs.
463    * Improve heap profiling shutdown: now the shared memory buffer where
464      alloc/free records are stored is properly flushed when stopping the data
465      source.
466    * Fixed race condition in the daemonization path of perfetto --background.
467      It would cause daemonization failures if the TTY is destroyed immediately.
468  Trace Processor:
469    * Deprecate calling NotifyEndOfFile more than once: Flush should instead be
470      used for all but the final call.
471    * Added ingestion and visualization of I2C transactions.
472  UI:
473    * Changed callstack sampling selection: selecting one sample now only shows
474      one stacktrace, selecting multiple samples shows the aggregation.
475  SDK:
476    * Fixed a bug (b/239725760) that would cause abstract sockets using the
477      "@name" syntax in PERFETTO_CONSUMER_SOCK_NAME/PERFETTO_PRODUCER_SOCK_NAME
478      to have a trailing \0 in the socket name. This breaks interoperability
479      with adb forwarding. This is a tracing protocol breaking change. Nobody
480      seems to be relying on @abstract syntax across different versions of
481      client vs service.
482    * Changed the mangling scheme for protozero enums nested in another message:
483      instead of OuterClass_Enum_VALUE, the enum values will be just named
484      VALUE with the enum itself wrapped in a perfetto_pbzero_enum_OuterClass
485      namespace to prevent naming collisions. This will allow the users
486      to alias the enum directly and use throughout their code.
487      The exact name mangling scheme is a carry-over from libprotobuf and
488      an internal implementation detail, so nobody should be relying on that.
489    * Added protozero::EnumToString() to convert enum keys to string literals.
490
491
492v27.1 - 2022-07-11:
493  SDK:
494    * Added an API for shutting down Perfetto.
495
496
497v27.0 - 2022-07-01:
498  Tracing service and probes:
499    * Fix rare crash due to watchdog timeout being too short.
500  Trace Processor:
501    * Removed enable_perfetto_x64_cpu_opt by default for x64 MacOS
502      since it caused issues for CIs.
503    * Improved performance of filtering and sorting on most queries.
504  UI:
505    * Changed sorting of process groups to take slice count and presence of
506      perf profiles into account.
507  SDK:
508    *
509
510
511v26.1 - 2022-06-13:
512  Trace Processor:
513    * Fixed build failures on Windows.
514
515
516v26.0 - 2022-06-13:
517  Tracing service and probes:
518    * Added wildcard (*) support when targeting processes by their command line
519      in the Android perf profiler ("linux.perf" data source) and Java heap
520      snapshots ("android.java_hprof").
521    * Added support for kernel thread sampling, and kernel-only callstacks in
522      the Android perf profiler.
523    * Fixed rare crash when parsing zero-length ftrace __data_loc strings.
524    * Fixed rare crash on 4.19 kernel when encountering unexpected zero-padded
525      ftrace pages.
526    * Removed capturing of thread_time_in_state (per-UID, per-OOM-adj time).
527      The data was unused and subsumed by correlating sched data with power
528      rail monitors.
529  Trace Processor:
530    * Added CREATE_VIEW_FUNCTION operator to define a SQL function that can
531      return a temporary table and yield multiple rows and columns.
532    * Changed kernel threads to be represented as single-thread processes in
533      Linux system traces. The (incorrect) legacy behaviour was to treat them
534      as threads of the kthreadd process.
535    * Added ABS_TIME_STR function which converts a trace timestamp to
536      an ISO8601 string.
537    * Added ingestion for phase='R' events, used by performance.{now,mark}().
538    * Changed 'trace_to_text' to be named 'traceconv'. The source
539      location also moved from 'tools/trace_to_text' to 'src/traceconv'.
540    * Changed compiler flags, added -mavx2. The previous patch in v22.0 was
541      supposed to add AVX2 support but added only AVX.
542    * Changed the handling of the last per-cpu sched slices: rather than
543      extending the last event to the end of the trace, the last scheduling
544      event has a -1 duration. UIs are supposed to deal with visual extension.
545    * Removed android_thread_time_in_state metric. It was an experiment and was
546      unused.
547    * Removed `instant` table. All instant events are now 0-duration events in
548      the `slice` table.
549    * Removed the /raw_query REST endpoint from --httpd. This will break very
550      old clients that have not switched over the new streaming-based /query
551      endoint or even newer /websocket.
552  UI:
553    * Changed detail panel to separate slice args from generic slice properties.
554    * Automatically enabled sched_compact when generating trace configs for
555      Android S+ targets.
556  SDK:
557    * Added option for recording thread CPU times at the beginning and end of
558      each slice.
559    * Added perfetto::DynamicString() to use non-literal strings as event names
560      in the TRACE_EVENT API.
561    * Remove the pre-SDK consumer_api_deprecated interface. It was introduced
562      for iorapd, now deleted from the Android tree.
563
564
565v25.0 - 2022-04-01:
566  Tracing service and probes:
567    * Added prebuilts for mac-arm64.
568    * Removed merged trace and config protos from Bazel. Embedder should
569      instead depend on the non-merged proto targets.
570    * Added FtraceConfig.disable_generic_events. If set, the ftrace data source
571      will not emit events for which it doesn't have a compile-time proto
572      message.
573    * Added ingestion support for cros_ec (CrOS sensors) ftrace events.
574    * Added ingestion support for kvm trace events.
575    * Added reporting of atrace failures. Now they are bubbled up to the UI
576      rather than causing atrace data to be silently missing.
577  Trace Processor:
578    * Added prebuilts for mac-arm64.
579    * Changed LIKE comparisions to be case-insenstive. This reverts the change
580      introduced in v22. GLOB should be used where case senstive searches are
581      desired; built-in metrics continue to require the use of GLOB.
582    * Added an optional dependency from trace processor onto a subset of
583      sources from llvm-project for function name demangling. Bazel embedders
584      might need to update their PERFETTO_CONFIG in perfetto_cfg.bzl to opt in
585      or out of the new dependency. See
586      perfetto/bazel/standalone/perfetto_cfg.bzl for details.
587  UI:
588    * Added flow arrows between binder transaction pairs (request/reply
589      and async send/async recv).
590  SDK:
591    * Added support for writing typed proto messages inside DebugAnnotations.
592    * Added support for delta encoding of timestamps for TrackEvents.
593      To disable it, refer to `disable_incremental_timestamps` flag in
594      `track_event_config.proto`.
595  Tools:
596    * Added support of gzip-compressed traces to traceconv.
597    * Changed `traceconv text` to use an internal proto->pbtx converter rather
598      than relying on libprotobuf. It could cause some small divergencies in the
599      output format vs past releases.
600    * Added tools/cpu_profile helper script to capture traces with callstack
601      samples.
602
603
604v24.2 - 2022-02-10:
605  SDK:
606    * Revert of incremental timestamps, introduced in v24.0.
607      Some clients were depending on non-incremental timestamps.
608      Future releases will re-enable this but offer an opt-out.
609
610
611v24.1 - 2022-02-09:
612  Tracing service and probes:
613    * Fixed build failures on Windows.
614  Trace Processor:
615    * Fixed build failures on Windows.
616
617
618v24.0 - 2022-02-08:
619  Tracing service and probes:
620    * Added "cpufreq_period_ms" in data source "linux.sys_stats" to poll
621      /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq periodically.
622    * Added support for Trusty TEE workqueue events.
623    * Added support for more PMU events in traced_perf.
624    * Changed output format of perfetto --query. Made the output more compact
625      and added a summary of ongoing tracing sessions for the caller UID.
626    * Changed timeout for traced stall detection from 2s to 4s.
627    * Changed internal buffer management to split trace filtering in smaller
628      tasks and avoid too large memory allocation when filtering.
629    * Fixed a bug that could cause producers to see Flush() requests after an
630      OnStop() and mis-behave if the tracing session is extremely short.
631  Trace Processor:
632    * Added support for passing multiple SQL statements to ExecuteQuery(). All
633      queries will be executed fully, with the returned iterator yielding rows
634      for the final statement.
635    * Added support for multi-line SQL comments; previously only single line
636      comments were supported.
637  UI:
638    * Added support for parsing instant events from legacy systrace formats.
639    * Added ingestion and visualization for inet_sock_set_state and
640      tcp_retransmit_skb events, showing TCP connections on dedicated tracks.
641    * Changed HTTP+RPC to use the /websocket endpoint available in newer
642      versions of trace_processor --httpd.
643    * Changed text selection/copy: now allowed by default for DOM elements.
644    * Changed search to also lookup slices by ID when the term is a number.
645    * Changed postMessage() API, suppressed confirmation dialog when the opener
646      is in the same origin, for cases when the UI is self-hosted.
647  SDK:
648    * Changed timestamps emitted by the SDK to be incremental by default, using
649      ClockSnapshot + TracePacketDefaults.
650
651
652v23.0 - 2022-01-11:
653  Tracing service and probes:
654    * Added workaround for a kernel ftrace bug causing some "comm" fields to be
655      not null-terminated. https://github.com/torvalds/linux/commit/f0a5157803 .
656    * Added ability to talk to the newer AIDL-based health hal in traced_probes.
657      It still falls back on the older HIDL interface for older devices.
658  Trace Processor:
659    * Changed the argument for the trace path in constructor of TraceProcessor
660      in the Python API from |file_path| to |trace|.
661      |file_path| is deprecated and may be removed in the future.
662    * Changed the Python API constructor. Now it takes a TraceProcessorConfig
663      instead of passing parameters directly. This may break existing code
664      but migration should be trivial (all current options are still
665      supported).
666    * Fixed a HTTP keepalive bug in trace_processor --httpd. The bug, introduced
667      in v22.0, caused each RPC request to close the connection, effectively
668      defeating the 'Connection: Keep-Alive', after each query made by the UI.
669    * Added parsing of netif_receive_skb events from proto traces.
670    * Added android_netperf metric based on netif events.
671    * Fixed a bug that would cause fetch errors when loading traces > 32 MB when
672      using trace_processor --httpd.
673    * Added a workaround to tokenize properly /proc/pid/cmdline for chrome
674      processes on Linux/CrOS. Chrome rewrites its cmdline replacing \0 -> ' '.
675  UI:
676    *
677  SDK:
678    *
679
680
681v22.1 - 2021-12-07:
682  Tracing service and probes:
683    * Added workaround for a Linux kernel bug causing some ftrace strings to
684      be non-null-terminated (https://github.com/torvalds/linux/commit/f0a5157).
685  Trace Processor:
686    * Fixed build failures on Windows.
687
688
689v22.0 - 2021-12-03:
690  Tracing service and probes:
691    * Added Android SDK version to the SystemInfo trace packet.
692    * Changed compiler flags. Assume recent x64 CPUs (-msse4.2 -mavx -mpopcnt).
693      This behavior affects only standalone builds and can be changed by setting
694      enable_perfetto_x64_cpu_opt=false in the GN args.
695    * The java heap profiler now rescans all the processes every time for
696      continous_dump_config. The scan_pids_only_on_start can be used to restore
697      the old behavior.
698    * Added support for building on ARM Macs.
699    * Added support for the rss_stat_throttled event on Android via
700      FtraceConfig.throttle_rss_stat. In newer Android kernels the base rss_stat
701      event is now unthrottled. rss_stat used to be throttled by a downstream
702      kernel change, unnecessary after https://lkml.org/lkml/2021/10/25/1411 .
703      atrace.rc configures throttling from userspace at boot.
704    * Fixed a bug that caused IPCs to stall traced and hit the watchdog if in
705      the middle of a suspend/resume. Switched from SND_TIMEO to poll(POLLOUT).
706    * Added "linux.sysfs_power" data source to poll /sys/class/power_supply/
707      and report periodically battery charge and drain rate if supported.
708    * Add snapshotting for non-BOOTTIME ftrace clocks. This fixes handling of
709      ftrace events from old Linux kernel versions (i.e. 3.x) and adds
710      proper support for using the "global" clock rather than "boot".
711  Trace Processor:
712    * Speeded up proto trace ingestion by 2x (~20 MB/s -> ~40 MB/s).
713    * Changed LIKE comparisions to be case-senstive. This may break existing
714      queries but was a necessary from a performance perspective.
715      Going forward, GLOB must be used, instead of LIKE, for checked in metrics
716      to avoid unnecessary slowdowns.
717    * Changed compiler flags, assume recent x64 CPUs (see above).
718    * Changed how displayTimeUnit is handled in JSON traces to match catapult.
719    * Added websocket endpoint to RPC interface to reduce query latency.
720    * Added support for hot-reloading metrics (see //docs/analysis/metrics.md).
721    * Added ingestion support for non-BOOTTIME ftrace clocks.
722  UI:
723    * Added ability to save/restore record config. Remember last used config.
724    * Fixed bug causing the recording page to hold onto the USB interface making
725      adb unusable after a recording session.
726  SDK:
727    * Added UpdateDataSource() descriptor IPC endpoint to allow updates of the
728      data source capabilities (e.g., category list for track event).
729
730
731v21.0 - 2021-11-01:
732  Tracing service and probes:
733    * Added reporting of last 8 PERFETTO_LOG() entries and crash keys to
734      crash tombstones on Android.
735    * Changed kallsym parser to save 100ms for starting a tracing session with
736      enable_ksyms=true.
737    * Removed advertisement of the built-in data sources "android.heapprofd",
738      "android.java_hprof", "linux.perf" on Linux and other platforms. Built-in
739      data sources are only used to lazy-start daemons on Android OS.
740    * Changed ACL files on Android atrace.rc to support to up to 24 ftrace cpus.
741      No change on Linux which remains unlimited.
742  Trace Processor:
743    * Changed protobuf decoders to use less stack and fall back on heap sooner
744      (before: 16KB of stack per decoder, after: 1.6KB). It caused problems with
745      some embedders which use smaller per-thread stacks.
746    * Added support for SPAN OUTER JOIN on unpartitioned tables.
747    * Improved performance of as_pandas_dataframe() in the Python API by 16x.
748  UI:
749    * Added visualization of direct_reclaim ftrace events.
750  SDK:
751    * Added perfetto::{Flow,TerminatingFlow} to the track-event library.
752
753
754v20.1 - 2021-10-05:
755  Tracing service and probes:
756    * Fixed standalone Windows build. Updated the llvm-win toolchain.
757
758
759v20.0 - 2021-10-03:
760  Tracing service and probes:
761    * Removed DCHECK that would cause crashes when a debug build of the service
762      is used with a producer built with -DNDEBUG.
763    * Changed the service-side field-level filtering configuration protobuf
764      field number, because the feature had a bug. This is effectively
765      equivalent to deprecating the feature and reintroducing it under a
766      different name.
767    * Added support for boot tracing on Android. Early kernel tracing (prior to
768      the point when /data is mounted) is not yet supported. For instructions
769      see /docs/case-studies/android-boot-tracing.md .
770  Trace Processor:
771    * Added reqiurement of separating queries by semi-colon (;) followed by
772      new-line when specifying a query file with -q to trace processor shell.
773    * Added "ancestor_slice_by_stack" and "descendant_slice_by_stack" table
774      functions to walk up and down the slice stacks.
775    * Overhauled windowed sorting to be based on packet ordering and
776      lifecycle events inside the trace instead of time-based ordering.
777    * Removed |SortingMode::kForceFlushPeriodWindowedSort| due to changes to the
778      sorting algorithm, which is now based on Flush events rather than time.
779      Embedders should switch to |SortingMode::kDefaultHeuristics|. Other
780      SortingMode enum values are no-ops and will be removed in future versions.
781  UI:
782    * Added initial flamegraph support for traced_perf callstack samples.
783    * Added initial Pivot table for aggregation of userspace slices. The feature
784      is disabled by default for and requires manual enabling via
785      https://ui.perfetto.dev/#!/flags .
786  SDK:
787    * Changed DCHECK and DLOGs to be always disabled in SDK builds, regardless
788      of NDEBUG.
789
790
791v19.0 - 2021-09-02:
792  Tracing service and probes:
793    * Added ftrace clock reporting to the trace.
794  Trace Processor:
795    * Added support for longs/doubles to RUN_METRIC.
796    * Added power profile data for sunfish, redfin, and bramble.
797    * Added experimental Python library for computing slice breakdowns.
798    * Fixed parsing of JSON escape sequences.
799    * Fixed JSON trace detection.
800  UI:
801    * Added local cacheing of traces. Traces are reloaded in case of refresh or
802      tab being discarded by the browser.
803    * Added icon to distinguish metric-derived tracks.
804    * Added release channel selector to feature flags page.
805    * Fixed crash with null slice names.
806  SDK:
807    * Added some missing NESTABLE_ASYNC legacy trace macros.
808    * Fixed reporting of producer uid in --query.
809    * Fixed version numbering scheme for minor versions. Previously versions
810      were numbered as like v19.0.42 where 42 represented the number of commits
811      since the last major version release. This was ambiguous in the presence
812      of branches. Now versions are numbered like v19.0-ab12cd34 where ab12cd34
813      is the shortened Git commit-ish.
814
815
816v18.0 - 2021-08-02:
817  Tracing service and probes:
818    * Added cross-compiler toolchains for Linux-{arm,64} based on Debian Sid.
819      These will be used for generating monthly releases' prebuilts via LUCI.
820  Trace Processor:
821    * Added 'android_gpu' metric to report residency information for each GPU
822      frequency (via `trace_processor_shell --run-metrics android_gpu`).
823    * Removed the RawQuery RPC interface.
824  UI:
825    * Added a highlighted section to thread slices to visualize CPU time
826      (darker) verses wall time (lighter).
827    * Added global counter tracks for perf counters (e.g. "CPU 0 cycles", "CPU 0
828      instructions") when the 'linux.perf' data source (traced_perf) is used.
829    * Added a (feature) 'Flags' page to enable/disable individual metrics.
830    * Fixed races that could cause occasional crashes when loading a trace
831      from a permalink.
832  SDK:
833    * Fix undefined reference on ~TracingMuxerFake when building the SDK.
834
835
836v17.0 - 2021-07-02:
837  Tracing service and probes:
838    * Fixed a bug in ftrace parsing of absolute timestamps
839      (RINGBUF_TYPE_TIME_STAMP), encountered on Linux kernels 5.9+.
840    * Fixed a bug in --save-for-bugreport causing 0-length traces if the
841      selected trace declared one or more triggers in the config.
842    * Fixed a bug in tracebox causing the PERFETTO_PRODUCER_SOCK_NAME env
843      var to be ignored.
844  Trace Processor:
845    * Changed CORS headers of --httpd mode to allow only https://ui.perfetto.dev
846      and http://localhost:10000. This affects only CORS-aware browser clients.
847    * Added GPU frequency metrics.
848  UI:
849    * Fixed ADB connection issues ("unable to reset device") on Windows and Mac.
850    * Added caching of tracing in the cache storage so that the trace is
851      re-opened if a tab is killed (Chrome tab discarding or accidental CTRL+W).
852  SDK:
853    * Added support for writing track events using custom clock timestamps.
854
855
856v16.1 - 2021-06-08:
857  Tracing service and probes:
858    * Cherry-pick of r.android.com/1716718 which missed the v16 branch cut and
859      fixed MSVC 2019 builds.
860
861
862v16.0 - 2021-06-01:
863  Tracing service and probes:
864    * Added support for building most targets (including traced, SDK and
865      trace_processor_shell) from Windows using either clang-cl or MSVC 2019.
866    * Added tracebox, a monolithic binary to capture traces with one command
867      on Linux and older versions of Android (tested on Android Oreo).
868    * Added support for service-side field-level filtering of traces. The
869      consumer can pass a filter bytecode and ensure that non-allowed fields
870      are never emitted in output.
871    * Added reporting of service version and producer SDK version into the trace
872      and `perfetto --query`.
873    * Fixed compatibility with Android versions older than Pie (for sideloading)
874      which cause failures when trying to enable atrace categories.
875  Trace Processor:
876    * Added new RPC interface based on a bidirectional binary pipe. This allows
877      to simplify integration with out-of-process users. The existing --httpd
878      interface now exposes a single /rpc endpoint. Older endpoints are still
879      available for legacy clients.
880    * Added support for counters and instant events in JSON traces.
881    * Fixed support of displayTimeUnit in JSON traces.
882  UI:
883    * Added warning dialog when trying to use a trace_processor_shell --httpd
884      which is too old.
885    * Added warning dialog when trying to use a trace_processor_shell --httpd
886      RPC instance from more than one tab.
887    * Added links to convert the trace to JSON or systrace directly from the UI.
888    * Changed track sorting logic. Tracks are now sorted in groups (e.g.,
889      scheduling tracks, summary tracks, frame timeline tracks).
890    * Fixed crashes happening flakily when pushing traces via window.open().
891
892
893v15.0 - 2021-05-05:
894  Tracing service and probes:
895    * Added support for {host,target}=aarch64 standalone builds.
896    * Added --background cmdline switch to traced and traced_probes services.
897    * Changed trigger_perfetto to ignore unknown command line arguments to
898      preserve forward compatibility.
899    * Added -a / --app cmdline argument to tools/record_android_trace.
900  Trace Processor:
901    * Added sanitisation of keys in nested debug annotation dictionaries.
902    * Changed Android startup metric: count CPU time of JIT thread pool, report
903      timestamp of activities during startup.
904    * Changed android_surfaceflinger metric, added missed frame counters.
905    * Changed version of SQLite to 3.35.4.
906    * Fixed importing of JSON traces with decimal (sub-us) timestamp.
907    * Fixed prepending "debug." prefix to debug annotations with non-interned
908      names.
909  UI:
910    * Added support to visualize the lifetime of individual dmabuf allocations
911      as async slices (datasource: already existing ftrace dmabuf event).
912    * Fixed visualization of unfinished slices to extend to the end of the
913      viewport.
914  SDK:
915    * Added support for passing arbitrary number of debug annotations to
916      TRACE_EVENT and combining them with lambdas.
917    * Added support for writing typed TrackEvent arguments using TRACE_EVENT
918      inline without lambdas.
919    * Changed ConvertTimestampToTraceTimeNs to be a member of
920      TraceTimestampTraits<T> struct instead of a standalone function.
921    * Changed TracedValue to use nested DebugAnnotation proto instead of
922      DebugAnnotation::NestedValue.
923
924
925v14.0 - 2021-04-01:
926  Tracing service and probes:
927    * Added support for polling power rails on Android from the newer
928      IPowerStats AIDL interface (previously using only the HAL interface).
929    * Fixed native heap profiler crash when ABI of heapprofd and profiled
930      process mismatch.
931    * Changed encoding format of Anroid managed heap profiler to reduce heap
932      dump sizes by delta-encoding object IDs.
933  Trace Processor:
934    * Added activity create/resume, layout inflation and resource timings to
935      the Android startup metric.
936    * Added chrome metadata key/value pairs (e.g. chrome version) into the
937      `metadata` table with 'cr-' prefixed keys.
938    * Added dma-buf-based memory metrics reporting total/avg/min/max dmabuf
939      allocation per-dmabuf-heap and per-process.
940    * Removed |force_full_sort| flag from config. This has been replaced
941      by setting the sorting mode to force a full sort.
942  UI:
943    * Added tools/symbolize-ui-crash script to resolve crash reports via
944      TypeScript source maps.
945    * Fixed newlines when copying Android event log lines into the clipboard.
946    * Fixed crash when selecting "Did not finish" slices.
947    * Fixed OOM dialog to give actionable instructions when opening large traces
948      rather than suggesting to file a bug.
949  SDK:
950    * Added /meson.build for bundling /sdk/perfetto.{cc,h} in Meson builds.
951    * Added support for counter trace points with the TRACE_COUNTER macro.
952
953
954v13.0 - 2021-03-01:
955  Tracing service and probes:
956    * Added ability to sample callstacks using kernel tracepoints as timebase.
957    * Added abililty to record the perf timebase counter values into the trace,
958      both combined callstack+counter or counter-only.
959    * Added abillity to trigger traces based on VM pressure on Android. Requires
960      a dedicated tracing instance in $tracefs/instances/mm_events.
961  Trace Processor:
962    * Added sorting mode to trace processor config to specify how trace
963      processor should sort events. The |force_full_sort| flag has been
964      deprecated (with replacement) and will be removed in the next version.
965    * Added ingestion of frame timeline events into the
966      {expected,actual}_frame_timeline_slice tables.
967    * Added support for Mali's trace_marker_write ftrace event.
968    * Added memory metric based on newer android_fastrpc kernel events.
969  UI:
970    * Added flow events support for instant events and async tracks.
971    * Added support for Android frame timeline events. They allow inspecting
972      end-to-end expected vs actual app-to-surfaceflinger frame times.
973    * Added ability to switch between Canary and Stable channels in the UI.
974    * Added ability to drag&drop to open trace files.
975    * Changed UI serving infrastructure, old ui versions can be now retrieved by
976      directly opening https://ui.perfetto.dev/v12.1.269/ .
977    * Removed thread state track for threads that have no activity.
978  SDK:
979    * Use process start time hashed with the process id as a unique process
980      identifier, allowing multiple independent users of the SDK in the same
981      process to interleave their events on shared tracks.
982    * Record process and thread names into the trace.
983    * Add ring buffer tracing support, i.e., periodic clearing of incremental
984      state.
985  Misc:
986    * Convert python scripts to python3.
987
988
989v12.1 - 2021-02-01:
990  Misc:
991    * Fixed CHANGELOG which was missed in the 12.0 branch cut, causing
992      mis-labeling of the version code in the v12.x branch as v11.0..N
993
994
995v12.0 - 2021-02-01:
996  Tracing service and probes:
997    * Added more helpful error messages if the client library is used without
998      having been initialized.
999    * Added //tools/record_android_trace script to facilitate recording traces
1000      from Android devices, automating start + stop-via-ctrl+c + pull + open.
1001    * Added auto-attachment of traces to Android bugreports if dumpstate is
1002      invoked when a trace with bugreport_score > 0 is running.
1003  SDK:
1004    * Added ability to customize the timestamp of events via
1005      ConvertTimestampToTraceTimeNs().
1006    * Fixed support for category names that contain a space.
1007  Trace Processor:
1008    * Added ingestion and query support for Android end-to-end frame timing
1009      events through the {actual, expected}_frame_timeline_slice tables.
1010    * Added time-to-reportFullyDrawn (Android's API) to startup metrics.
1011    * Fixed excessive memory usage when decoding traces containing callstacks
1012      (https://github.com/google/perfetto/issues/83).
1013  UI:
1014    * Added ability to inspect the full trace config string from the
1015      'Info and stats' page.
1016    * Fixed 'TABLE/VIEW XXX already exists' in the Metrics page when running the
1017      same metric twice.
1018    * Fixed sorting of tracks using numeric sorting instead of lexicographic:
1019      Thread {1, 2, 10, 11, 20} rather than Thread {1, 10, 11, 2, 20}.
1020    * Fixed CSP-related bug that was preventing the UI to work on Firefox.
1021    * Changed max zoom resolution to allow to zoom to sub-us events.
1022
1023
1024v11.0 - 2021-01-01:
1025  Tracing service and probes:
1026    * Added trace packet interceptor API for rerouting trace data into
1027      non-Perfetto systems.
1028    * Added support for printing track events to the console.
1029    * Added a way to observe track event tracing sessions starting and
1030      stopping.
1031  Trace Processor:
1032    * Added "ancestor_slice" and "experimental_ancestor_stack_profile_callsite"
1033      table functions to look up ancestors of CPU stack samples in profiler
1034      tables.
1035    * Added power metric reporting suspend/resume time periods.
1036  UI:
1037    * Fixed CPU time calculation in example queries.
1038    * Added tracks to debug Android SystemUI jank.
1039
1040
1041v10.0 - 2020-12-01:
1042  Tracing service and probes:
1043    * Fixed crash of tracing service if a client is unresponsive on the IPC
1044      channel. Clients are disconnected if they don't respond to IPCs for 10s.
1045    * Added cmdline arguments for integration within ChromeOS system image
1046      (--{producer,consumer}-socket-{group,mode} for chmod-ing sockets).
1047    * Changed path lookup logic for traced socket. /run/perfetto/ is used if the
1048      directory exists, falling back on /tmp/ otherwise.
1049    * Added support for kernel frame symbolization to the traced_perf callstack
1050      sampler.
1051    * Added support for resolving ftrace event arguments that require
1052      symbolization against printk_format.
1053  Trace Processor:
1054    * Added .read command to inject a SQL query file, similar to the -q cmdline.
1055    * Added trace-based metrics to root cause jank in Android System UI.
1056    * Added symbolization support for ELF files on Windows for heap and
1057      callstack profilers.
1058    * Added support for symbolizing names of workqueue ftrace events.
1059    * Improved Android startup metric with activity restart time.
1060  UI:
1061    * Added support for navigating flows with Ctrl+[ / Ctr+].
1062    * Improved query result panel, moved to the bottom group allowing
1063      simultaneous query result and timeline views.
1064    * Fixed data corruption when recording traces via the WebUSB-based Record
1065      page in the UI.
1066
1067
1068v9.0 - 2020-11-01:
1069  Tracing service and probes:
1070    * Added support for recording traces from a system service through the
1071      client API.
1072    * The client library now reconnects producers automatically if the
1073      connection to the tracing service is lost. Also fixed crashes in ongoing
1074      tracing sessions when a disconnect occurs.
1075    * Added support for dpu and g2d ftrace events.
1076    * Enabled commit batching and producer side patching of chunks.
1077    * Add support for symbolizing kernel symbols for ftrace events.
1078  Trace Processor:
1079    * Fixed type affinity of string columns.
1080  UI:
1081    * Added initial support for running metrics from the UI.
1082    * Added support for displaying all flows when a slice or area is selected.
1083    * Highlight nodes that match the 'focus' string in the flamegraph.
1084    * Added search within slice args.
1085    * Fixed details panel height and moved query panel into details panel.
1086    * Enabled re-sharing of postMessage traces by echoing back the original URL.
1087    * Improved record page error messages.
1088
1089
1090v8.0 - 2020-10-01:
1091  Tracing service and probes:
1092    * Added API for querying registered data sources and their capabilities.
1093    * Added support for profiling heap allocations on Linux via LD_PRELOAD.
1094    * Fixed possible race when initializing the consumer library.
1095    * Fixed subtle bugs on systems with 16KB system pages.
1096  Trace Processor:
1097    * Added a table which lists available metrics.
1098    * Added Python bindings on PyPi in the 'perfetto' package.
1099    * Added support for running trace_processor_shell on Android.
1100    * Added per-process metrics for GPU memory usage.
1101    * Added support for exporting flow events to JSON.
1102    * Added dynamic tables for navigating between slices of flows.
1103  UI:
1104    * Changed time marking: horizontal selection doesn't gray out anymore,
1105      pressing 'm' marks the range.
1106    * Added initial support for displaying flow event arrows.
1107    * Improved ordering of all thread tracks under process grouping.
1108    * Fixed UI crashes due to metric errors
1109    * Fixed selection of thread state slices.
1110
1111
1112v7.0 - 2020-09-01:
1113  Tracing service and probes:
1114    * Added auto-reconnection to the SDK. Tracing::Initialize() now retries in
1115      the background, instead of failing, if the tracing service is unrechable.
1116    * Added support for recording cpuhp (CPU hotplug) ftrace events.
1117    * Fixed heap profiling unwinding on multi-ABI systems.
1118    * Fixed reporting of live objects in the native heap profiler when using
1119      --dump-at-max.
1120    * Fixed crash when writing trace events with field nesting level > 10.
1121  Trace Processor:
1122    * Added Python bindings, see
1123      https://perfetto.dev/docs/analysis/trace-processor#python-api .
1124    * Added ingestion for Chrome instant events and Chrome flow events.
1125    * Added ingestion for Android GPU memory events and sched_blocked_reason.
1126    * Added WebView power metric.
1127    * Added support for WSL1 where Async I/O is not available.
1128    * Improved detection of Android suspend/resume events.
1129  UI:
1130    * Added GPU memory recording controls and ingestion code. Requires a recent
1131      Android 12+ kernel.
1132    * Added details panel for flow events, showed when the user selects a slice
1133      involved in a flow (arrows in the UI are still being worked on).
1134    * Added instant events rendering.
1135    * Added Google Analytics.
1136    * Fixed I/O thread-states in 4.14 kernels to deal with the removal of
1137      wake-kill using sched_blocked_reason.
1138    * Fixed "Perfetto UI started debugging this browser" showing when opening
1139      the UI and the Chrome extension is installed.
1140  Misc:
1141    * Update language to comply with Android's inclusive language guidance.
1142
1143
1144v6.0 - 2020-08-01:
1145  Tracing service and probes:
1146    * Added ftrace thermal events.
1147    * Added support for custom allocators to the heap profiler. Allows
1148      developers to report memory allocations that are not done through malloc.
1149    * Added detailed timestamping of key tracing session events.
1150    * Added support for building tracing services on CrOS (system-wide tracing).
1151    * Fixed filtering out of stale ftrace data that predates the beginning of
1152      the tracing session.
1153  Trace Processor:
1154    * Improved profile symbolizer. PERFETTO_SYMBOLIZER_MODE=index discovers
1155      symbol files by build id rather than name.
1156    * Added screen-state Android metrics.
1157  UI:
1158    * Added 'Info and stats' page to debug data losses and trace stats.
1159    * Added full cmdline to process detail panel.
1160    * Improved performance of async tracks using quantized queries.
1161    * Improved performance of counter and slice tracks for long traces by
1162      pre-caching quantized track data.
1163    * Improved actionablility of crash dialog when the Wasm module OOMs.
1164
1165
1166v5.0 - 2020-07-01:
1167  Tracing service and probes:
1168    * Added gpu_mem_total ftrace event.
1169    * Added TrustZone (scm start/end) event.
1170    * Added protos for GPU memory tracking and updated render stages proto.
1171    * Added time_in_state probe for Android (CPU time broken down by frequency).
1172
1173
1174  Trace Processor:
1175    * Added ingestion of IRQ and SoftIRQ events.
1176    * Added ingestion of workqueue events. KAddr symbolization still missing.
1177    * Added ingestion of voltage regulators and board clock change events.
1178    * Added ingestion of new ION ion_buffer_create/destroy events.
1179    * Added ingestion of TrustZone (scm start/end) events.
1180    * Added SurfaceFlinger derived events (tracking of missed frames).
1181    * Changed parsing of scheduler task state on 4.14 kernels.
1182    * Changed importing of Java heap graphs: allow partial dumps.
1183    * Improved performance of the SQL query engine.
1184
1185
1186  UI:
1187    * Added dedicated query page for custom SQL queries.
1188    * Added navigation links for Binder slices.
1189    * Removed overview summary mode when zoomed out.
1190    * Fixed recording page when targeting Android P.
1191    * Improved slice pan/zoom performance by quantizing.
1192