build 11421629 (Feb 8, 2024)
inject command:
  Support converting LBR profiles to AutoFDO format
list command:
  Use event_table.json to config raw events supported on different cpu models, and read
  /proc/cpuinfo to know cpu models on device. As a result, we can precisely report raw
  events supported on different cpu cores.
record/stat command:
  Support monitoring different events on different cores using --cpu
  Use thousand groups when reporting sample counts
record command:
  Add --delay to delay recording samples
  Add --record-timestamp and --record-cycles to record timestamps and cpu-cycles with ETM data
  Add --cycle-threshold for ETM cycle count packets
  Support reading symbols from DEX files in memory
  Support starting simpleperf at early-init when boot profiling, as in android_platform_profiling.md
stat command:
  Add --tp-filter and --kprobe to improve tracepoint event counting
app_profiler.py:
  Add app versioncode in record file
  Add --launch to start an app with its package name
report scripts:
  Add --cpu to filter samples based on CPUs
  Add ipc.py to capture instructions per cycle of the system
  Support profiles generated by the report-sample command
  Add sample_filter.py to split large record files
gecko_profile_generator.py:
  Add --percpu-samples to show samples grouped by CPUs
report_html.py:
  Support parsing kernel disassembly in scripts
  Speed up generating disassembly
  Sort functions by names in flamegraph


build 10661963 (Aug 16, 2023)
report-sample command: Remove small stack gaps to get a smoother view in Stack Chart.
Use prebult libsimpleperf_readelf (provided by Android clang prebuilts) for reading ELF files.
report_html.py: Speed up disassembling many functions in a binary.


build 10306210 (Jun 12, 2023)
record cmd: Add --decode-etm to decode ETM data while recording.
            It saves the space storing raw ETM data.
            Store lost/cut record info in recording file.
            Report lost samples in kernel space and user space.
inject cmd: Accept missing aux data.
            Add build id in AutoFDO output.
gecko_profile_generatory.py: color off-cpu frames blue and jit app cache frames green.


build 9796343 (March 22, 2023)
Fix dozens of security bugs detected by fuzzer.
record cmd:
  Increase the default user buffer size from 64M to 256M for devices having >= 4G memory. This is
  to reduce lost samples and incomplete callchains.
  Add --user-buffer-size to adjust the user buffer size.
record/stat cmd:
  Support using process name regex to select processes via the -p option.
  Raise file desciptors limit to better support "stat --per-thread -a".
report:
  Support demangling rust symbols.
  Suppress read symbol warnings for not-ELF files.
  Improve deobfuscating Java symbols (ndk issue 1836).
  In report scripts, add --aggregate-threads to merge samples for selected threads.
  In binary_cache_builder.py, support searching for binaries having different names from those
  recorded in perf.data. Also fix a bug supporting native libs embedded in apk.
  In gecko_profile_generator.py, remove small stack gaps to get a smoother view in Stack Chart.
doc:
  Update doc on the broken DWARF call graph issue.
  Add doc for trying the latest simpleperf builds and scripts.


build 9042912 (Sep 8, 2022)
Fix adhoc codesign for darwin binaries.
Release protobuf files in proto directory.
stat cmd: Update to work with CPU cores having different numbers of PMU counters.
doc: Update collect_etm_data_for_autofdo.md.


build 8355685 (March 25, 2022)
1. Add doc for getting boot-time profile, add doc view_the_profile.md.
2. Share report lib options between scripts.


build 8121221 (Jan 26, 2022)
1. On Android >= 13, allow an app profiling itself even after device reboot.
   The permission expiration time can be set by --days in api_profiler.py.
2. Improve --trace-offcpu in record cmd to support multiple report modes: pure on cpu samples,
   pure on-cpu samples, or both on-cpu and off-cpu samples.
3. Add --add-counter in record cmd to add additional event counts in samples.
4. Add --filter-file in report cmds and scripts to filter samples based on timestamps.
5. On Android >= 13, add boot-record cmd to record boot-time profiles on userdebug/eng devices.
6. For AutoFDO/ETM support, support multiple input files in inject cmd to speed up processing and
   combine output.


build 7848450
record cmd:
    Add support for new perf ETE files.
report cmd:
    Extend --percent-limit to report entries.
scripts:
    Add gecko_profile_generator.py, which generates reports for firefox profiler.
    Add stackcollapse.py, which generates reports to Folded Stacks.
    Improve support of proguard mapping file.
    Improve logging.
    pprof_proto_generator.py:
        Add thread, threadpool, pid, tid labels.
        Set units of common events.
        Add comments.
    app_profiler.py: Kill app process for current user.
    report_sample.py: add --header and --comm options.
doc:
    Add introduction slide.
    Use auto-generated tables of contents.
test: Fix flaky tests.


build 7649958
Build arm simpleperf for armv7-neon instead of armv8.
Support JIT method name with signature.
Doc improvement.


build 7549687
Use multithreading to speed up line annotation.
Add doc/debug_dwarf_unwinding.md.
Add doc/collect_etm_data_for_autofdo.md.
Move to file2 feature section.


build 7414587
Drop python2 support, scripts are tested on python3.8 and python3.9.
Refactor debug unwinding:
  1. Add --keep-failed-unwinding-result and --keep-failed-unwinding-stack options
     in record cmd, to generate additional records for failed unwinding cases.
  2. Refactor debug-unwind cmd and debug_unwind_reporter.py to report failed
     unwinding cases.
Support recording and converting kernel ETM data in record cmd and inject cmd.
Support using proguard mapping file for reporting.
Support vmlinux file when building binary_cache.
Support showing disassembly of vmlinux file in report_html.py. Use multithreading
to speedup disassembling.
Add app_type, android_sdk_version and android_build_type in meta_info of recording file.


ndk r23
build 7173446
Add visualization tool purgatorio.
Switch to llvm-objdump and llvm-readelf.

build 7119240
Reduce prepare recording time.
Add --kprobe option in record cmd.
Add --cpu option in report cmd.
Add -i option in dump cmd.
Add --exclude-perf option in inject cmd.
Add merge cmd to merge recording files recorded in the same environment using
the same event types.
Add monitor cmd to record and report events in real time.
Fix a few bugs about symbolization of kernel and kernel modules.
Support parsing kernel etm data in inject cmd.
Add --show-execution-type option in report-sample cmd.
Don't hide art jni methods in report_lib and report-sample cmd.


build 6859468
Add --csv option in report cmd.
Add --sort option in stat cmd.
Add --tp-filter option to filter tracepoint events in record cmd.
Add --addr-filter to filter etm recording in record cmd.
Fix finding symbols from kernel modules.
Better ART JIT support (dump jit symfiles to a single file instead of multiple
temporary files).
Support generic JIT symbols from symbol map file. See doc/jit_symbols.md.


ndk r22
build 6401870
Support multiple record files in pprof_proto_generator.py.
In stat cmd, add --per-thread and --per-core options to report per thread and per core.
In record cmd, add --exclude-perf option to exclude simpleperf samples in system wide
recording.
In inject cmd, support decoding coresight etm data to branch list data in protobuf format.
Fix and add doc for app_api, which can control simpleperf recording in app code.
Support pmu event types:
  list supported pmu events via `simpleperf list pmu`.
  record/stat pmu events via options like -e armv8_pmuv3/cpu_cycles/.
Switch to llvm-objdump.
Add doc for line and disassembly annotation in README.md.
Add doc for profiling profileable release app on Android >= Q.
Remove dependency on libncurses.

ndk r21
In record cmd, support recording coresight etm data (via -e cs-etm option).
Add inject cmd to decode coresight etm data.
Add doc for downloading unstripped libraries on device.
Fix scripts for using unstripped libraries without build ids for reporting.
Switch to llvm-symbolizer.
Add app_api and api_profiler.py, which can control simpleperf recording in app code.
Fix pprof_proto_generator.py to support line and disassembly annotation via pprof.

ndk r20
Skipped.

ndk r19
Fix report-sample command on Windows.

ndk r18
Improve support of profiling JITed/interpreted Java code on Android >= P:
  1) Support JITed/interpreted Java code in system wide recording.
  2) Support dex files extracted to memory.
  3) Fix some bugs and improve inefficient code.
Improve record command:
  1) Add a user space buffer and a high priority record reading thread to reduce sampe lost rate.
  2) Record full process name instead of only the last 16 bytes.
Improve report_html.py:
  1) Generate flamegraphs in Javascript code instead of using inferno, thus
	   reducing the time used to generate and load report.
  2) Use bootstrap 4 to format UI.
  3) Use progressbar to show progress of loading contents.
  4) Add --binary_filter option to only annotate selected binaries.
Export tracing data in simpleperf_report_lib.py.
Test python scripts with both python2 and python3.
Add document for using simpleperf in Android platform profiling.

ndk r17
(release)
Use new Android unwinder, which can unwind for archs different from build.
Support profiling interpreted and JITed java code on Android >= P.
Refactor app_profiler.py: improve option interface, simplify profiling from launch,
and improve native lib downloading.
Fix ndk issues 638, 644, 499, 493.
Add debug-unwind cmd and script to debug unwinding.
Update document, including the way using wrap.sh to profile released apk.

(beta 1)
Add report_html.py, reporting profiling result in html interface.
Improve inferno.
Refactor document.
Provide more complete dwarf based call graphs.

ndk r16

Add inferno, a flamegraph generator.
Add --trace-offcpu option in simpleperf record command and app_profiler.py to trace offcpu time.
Add --app option in simpleperf record command to remove need of using run-as.
Add --profile_from_launch option in app_profiler.py to start recording from Activity launch time.
Configure scripts from command lines, remove config files.
Wrap simpleperf report command with report.py, in which GUI mode is enabled with --gui option.
Add release tests for scripts.


ndk r15

Add three Android Studio project examples, show how to build optimized native libs containing
debug info, show how to fully compile app on Android O.
Add symbol info in perf.data by default, no need to add --dump-symbols in simpleperf record command.
Report brief call-graph in simpleperf report command.
Support raw cpu pmu events.


ndk r14

Add app_profiler.py to help recording profiling data.
Add annotate.py to annotate source code.
Add simpleperf_report_lib.py interface to support extracting samples from perf.data.
Release simpleperf binaries on host to support reporting on host.


ndk r13

Release simpleperf binaries on device.
Support recording and reporting stack frame based callgraphs and dwarf based callgraphs.
Add simpleperf_report.py to show callgraphs in GUI.
