All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.13.0 - 2024-10-11
- Fix and cover tests for target x86_64-unknown-linux-musl (#140)
- renaming
- remove protobuf crate
- check if ptr is valid in validate
- rename crate in examples
- use T aligned pointer in TempFdArray
- handle potentially unaligned frame pointer (#217)
- fix memory leak in collector (#84)
- fix clippy error (#52)
- fix incorrect inline functions (#50)
- fix test
- fix example import (#25)
- fix bugs caused by link test all the time
- fix bugs in TempFdArray
- fix bug: buffer in TempFdArray should be sliced when iter around it
- fix bug: malloc shouldn't be used in signal handler
- fix cargo warning
- Update release-plz.yaml
- Update rust.yml
- Update rust.yml
- move cpu logs to debug
- update prost file
- fix benches
- fix lints
- update CI minimum to 1.81.0
- Create release-plz.yaml
- update dependencies
- Rename to pprof2, update MSRV
- Bump version to v0.13.0 (#226)
- Update
prost
,prost-derive
andprost-build
to0.12
(#223) - Fix clippy errors (#224)
- Fix CI for 1.64.0 (#225)
- Bump version to v0.12.1 (#220)
- Change sc_pc to __pc for loongarch64 (#218)
- Bump version to v0.12.0 (#215)
- Support freebsd (#213)
- update to criterion 0.5 (#212)
- hide
perf_signal_handler
frames on macOS (#207) - Splitting profile_proto example (#208)
- Bump the symbolic-demangle to 12.1 (#205)
- Correct required-features for profile_proto example (#206)
- Fix build for aarch64-linux-android (#202)
- Bump the MSRV to 1.64.0 (#204)
- bump version to 0.11.1 (#199)
- use globally shared pipe to validate memory (#198)
- update the prost generated file and remove malloc_free (#188)
- Update nix requirement from 0.24 to 0.26 (#179)
- Add loongarch64 support (#174)
- add riscv arch (#169)
- Improve prost file format (#175)
- Bump version to v0.11.0 (#173)
- Update symbolic-demangle requirement from 9.0 to 10.1 (#170)
- Only do per-frame-blocklist-check when frame-pointer is enabled (#172)
- Restart syscalls interrupted by SIGPROF when possible (#167)
- update prost 0.11 (#166)
- Update criterion requirement from 0.3 to 0.4 (#163)
- Bump version to v0.10.1 (#162)
- Bump version to v0.10.1 (#161)
- Increase the max supported stack depth to 128 (#159)
- ignore prost mod and fix clippy warning (#160)
- Bump version to v0.10.0 (#146)
- Make clippy happy in all targets (#144)
- Update symbolic-demangle requirement from 8.0 to 9.0 (#137)
- Adds timing info to each sample (#133)
- Export UnresolvedReport (#132)
- Optimize mutually exclusive features (#130)
- Bump version to 0.9.1 (#129)
- Protect errno (#128)
- bump version to v0.9.0 (#124)
- add fs feature (#125)
- Update nix to 0.24, limit features (#121)
- Unwind through frame pointer (#116)
- Bump version to 0.8 (#118)
- Update prost requirement from 0.9 to 0.10 (#115)
- Update prost-build requirement from 0.9 to 0.10 (#114)
- Update prost-derive requirement from 0.9 to 0.10 (#113)
- Update Readme to fix the pprof version (#117)
- add vdso to the blocklist in README.md (#111)
- Fix pthread_getname_np not available on musl (#110)
- Bump version to 0.7.0 (#109)
- add rust 1.56.0 to the ci matrix (#108)
- Update inferno requirement from 0.10 to 0.11 (#107)
- add msrv to the README.md (#101)
- Bump actions/checkout from 2 to 3 (#105)
- support rust-protobuf (#106)
- change to once_cell from lazy_static (#103)
- Update parking_lot requirement from 0.11 to 0.12 (#99)
- bump version to v0.6.2 (#96)
- add CHANGELOG (#97)
- (derive) add Clone directive to ProfilerGuardBuilder (#95)
- Add thread names and timing information to protobuf reports (#90)
- Fine tune the usage of
MaybeUninited
(#89) - add allow(clippy::large_enum_variant) to Output (#93)
- migrate to rust 2021 (#91)
- bump version to v0.6.1 (#87)
- avoid deadlock by skipping sampling in libc, libgcc and pthread (#85)
- bump version to v0.6.0 (#83)
- bump deps and make clippy happy (#82)
- bump version to v0.5.0
- Bump prost* (#73)
- Bump actions-rs/cargo from 1 to 1.0.3 (#63)
- Bump actions-rs/toolchain from 1 to 1.0.7 (#64)
- bump version to v0.4.4
- add phantom data for criterion output (#68)
- modify document according to the current API (#62)
- bump version to v0.4.3
- Adjust the output paths
criterion::PProfProfiler
uses to support benchmark groups (#59) - Update nix requirement from 0.19 to 0.20 (#56)
- bump version to v0.4.2
- Fix compilation error on arm architecture (#55)
- implement criterion Profiler (#53)
- bump version to v0.4.1
- allow passing custom flamegraph options (#51)
- bump version to v0.4.0
- bump version to v0.3.21
- give a reasonable hint for musl-libc based host (#47)
- Update rand requirement from 0.7.2 to 0.8.0 (#46)
- Update nix requirement from 0.17 to 0.19 (#43)
- Add dependabot to keep dependencies up to date (#42)
- bump version to v0.3.20
- split symbolic-demangle into multiple features
- bump version to 0.3.19
- ignore SIGPROF rather than default signal handler
- refactor frame.rs and parts of others (#37)
- Add license scan report and status (#39)
- bump to version 0.3.18
- Add Report::build_unresolved API (#35)
- Fix erroneous comment (#34)
- Remove extraneous
mut
(#33) - bump to version 0.3.17
- Use criterion for benchmarking (#30)
- Replace spin with parking_lot (#29)
- Update README.md
- bump to version 0.3.16
- use symbolic_demangle
- bump to version 0.3.15
- filter out signal handler function
- filter out signal handler function
- bump to version 0.3.14
- get backtrace after getting lock
- remove lock in backtrace::backtrace
- bump version to 0.3.13
- only use thread name on linux and macos
- reset dependency version
- Miscellaneous tidying up
- bump version to v0.3.12
- stop timer before profiler stops
- Merge remote-tracking branch 'origin/master'
- turn collector into sum counter
- move collector data from stack to heap
- add benchmark
- Fix typo & add benchmark
- Add a image of pprof output
- update protobuf README.md and example
- upgrade version
- support protobuf
- merge with lonng's proto support
- update README.md and documentation
- update readme and documents
- insert badges into README.md
- update README.md
- add document of pprof
- add introduction to frame_post_processor in README.md
- update version
- smaller buffer length
- update README.md
- remove test on malloc
- update version
- update crate name
- update version
- add test for malloc
- use less stack space
- update README.md
- update version
- update version
- use pthread functions to get thread id and thread name
- make clippy happy!
- support frames post processor
- add thread_id and thread_name message in sampler and report
- update version
- update guard related codes
- update version
- modify README.md to use RwLock
- impl Send for Symbol
- resolve frame at report time
- update version
- unregister signal when start processing
- add some logs
- add guard support
- remove uneeded println!
- clear data after stop
- check for whether profiler is running
- remove uneeded use
- add repository in Cargo.toml
- add README.md and description
- ignore first two layers of profiler
- add flamegraph feature
- use symbol to seperate functions
- simple profiler
- Initial commit
- Upgrade
prost
,prost-derive
,prost-build
to 0.12 (#223)
- Handle potentially unaligned frame pointer (#217)
- Fix the register field name according to libc (#218)
- Support building
pprof-rs
forandroid
target (#202) - Support building
pprof-rs
forfreebsd
target (#213)
- Upgrade
criterion
to 0.5 (#212) - Bump the MSRV to 1.64.0 (#204)
- Hide
perf_signal_handler
frames on macOS (#207)
- Support RISC-V architecture (#169)
- Support LoongArch64 architecture (#174)
- Use a globally shared pipe to validate memory to avoid FD leak (#198)
- Upgrade prost 0.11 (#166)
- Upgrade criterion from 0.3 to 0.4 (#163)
- Restart syscalls interuppted by SIGPROF when possible (#167)
- Only do per-frame-blocklist-check when frame-pointer is enabled (#172)
- Update
MAX_DEPTH
to 128 (#159)
- Fixed clippy warnnings and ignore prost mod (#160)
- Remove
backtrace-rs
feature, as the default choice when not specified (#130)
- Add
sample_timestamp
to Frames and UnresolvedFrames in order to have more fine-grained info on when the samples are collected (#133)
- Export
UnresolvedReport
type to allow developers to get the unresolved report (#132)
- Protect the error number in signal handler (#128)
- Add
frame-pointer
feature to unwind the stack with frame pointer (#116)
- The user has to specify one unwind implementation (
backtrace-rs
orframe-pointer
) in the features (#116)
- Update prost from 0.9 to 0.10 (#113, #114, #115)
- Fix pthread_getname_np not available on musl (#110)
- Add rust-protobuf support by adding protobuf-codec features (#106)
- protobuf feature is renamed to prost-codec to align all other tikv projects (#106)
- implement
Clone
forProfilerGuardBuilder
@yangkeao - Add thread names and timing information to protobuf reports @free
blocklist
to skip sampling in selected shared library @yangkeao
- Fix memory leak in collector of samples @yangkeao
- Bump prost* to v0.9.0 @PsiACE
- Bump nix to v0.23 @PsiACE
- Bump version of prost* @PsiACE
- Fix the lifetime mark is not used by criterion output @yangkeao
- Change the output paths for
criterion::PProfProfiler
to support benchmark groups @yangkeao
- Bump nix to v0.20 @yangkeao
- Implement criterion profiler @yangkeao
- Fix compilation error on arm architecture @yangkeao
- Allow passing custom flamegraph options @yangkeao
- Fix flamegraph inline functions @yangkeao
- Bump version of prost* @xhebox
- Bump rand to v0.8 @dependabot
- Bump nix to v0.19 @dependabot
- Split
symbolic-demangle
into multiple features @yangkeao
- Ignore SIGPROF signal after stop, rather than reset to the default handler @yangkeao
- Add
Report::build_unresolved
@umanwizard
- Change from
&mut self
to&self
inRpoertBuilder::build
@umanwizard
- Support cpp demangle @yangkeao
- Filter out signal handler functions @yangkeao
- Fix protobuf unit @yangkeao
- Don't get lock inside
backtrace::Backtrace
@yangkeao
- Export
prost::Message
@yangkeao
- Only use thread name on linux and macos @yangkeao
- Disable
#![feature(test)]
outside of tests @kennytm
- Stop timer before profiler stops @yangkeao
- Support profobuf output @lonng
- Change crate name from
rsperftools
topprof-rs
@yangkeao
- Use less stack space @yangkeao
- Seek to the start before reading file in
TempFdArray
@yangkeao
- Support customized post processor for frames @yangkeao
- Fix deadlock inside the
std::thread::current().name()
@yangkeao
- Avoid calling
malloc
inside the signal handler @yangkeao
- Implement
Send
forSymbol
@yangkeao
- Add log @yangkeao
- Stop signal handler after processing started @yangkeao
- Check whether profiler is running when starting the profiler @yangkeao