# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.14.1] - 2025-07-23

### Fixed
- Use spin-rs to replace parking lot to avoid potential deadlock (#268)

## [0.14.0] - 2023-11-08

### Fixed
- Fix the alignment of the collector and validate function (#255)

### Changed
- Bump the MSRV to 1.66.0 (#255)

## [0.13.0] - 2023-09-27

### Changed
- Upgrade `prost`, `prost-derive`, `prost-build` to 0.12 (#223)

## [0.12.1] - 2023-07-25

### Fixed
- Handle potentially unaligned frame pointer (#217)
- Fix the register field name according to libc (#218)

## [0.12.0] - 2023-07-03

### Added
- Support building `pprof-rs` for `android` target (#202)
- Support building `pprof-rs` for `freebsd` target (#213)

### Changed
- Upgrade `criterion` to 0.5 (#212)
- Bump the MSRV to 1.64.0 (#204)

### Fixed
- Hide `perf_signal_handler` frames on macOS (#207)

## [0.11.1] - 2023-02-21

### Added
- Support RISC-V architecture (#169)
- Support LoongArch64 architecture (#174)

### Fixed
- Use a globally shared pipe to validate memory to avoid FD leak (#198)

## [0.11.0] - 2022-11-03

### Changed
- Upgrade prost 0.11 (#166)
- Upgrade criterion from 0.3 to 0.4 (#163)

### Fixed
- Restart syscalls interuppted by SIGPROF when possible (#167)
- Only do per-frame-blocklist-check when frame-pointer is enabled (#172)

## [0.10.1] - 2022-08-29

### Changed
- Update `MAX_DEPTH` to 128 (#159)

### Fixed
- Fixed clippy warnnings and ignore prost mod (#160)

## [0.10.0] - 2022-06-27

### Changed
- Remove `backtrace-rs` feature, as the default choice when not specified (#130)

### Added
- Add `sample_timestamp` to Frames and UnresolvedFrames in order to have more fine-grained info on when the samples are collected (#133)
- 
### Fixed
- Export `UnresolvedReport` type to allow developers to get the unresolved report (#132)

## [0.9.1] - 2022-05-19

### Fixed
- Protect the error number in signal handler (#128)

## [0.9.0] - 2022-05-09

### Added
- Add `frame-pointer` feature to unwind the stack with frame pointer (#116)

### Changed
- The user has to specify one unwind implementation (`backtrace-rs` or `frame-pointer`) in the features (#116)

## [0.8.0] - 2022-04-20

### Changed
- Update prost from 0.9 to 0.10 (#113, #114, #115)

### Fixed
- Fix pthread_getname_np not available on musl (#110)

## [0.7.0] - 2022-03-08

### Added
- Add rust-protobuf support by adding protobuf-codec features (#106)

### Changed
- protobuf feature is renamed to prost-codec to align all other tikv projects (#106)

## [0.6.2] - 2021-12-24
### Added
- implement `Clone` for `ProfilerGuardBuilder` [@yangkeao](https://github.com/YangKeao)
- Add thread names and timing information to protobuf reports [@free](https://github.com/free)

## [0.6.1] - 2021-11-01
### Added
- `blocklist` to skip sampling in selected shared library [@yangkeao](https://github.com/YangKeao)

### Fixed
- Fix memory leak in collector of samples [@yangkeao](https://github.com/YangKeao)

## [0.6.0] - 2021-10-21
### Changed
- Bump prost* to v0.9.0 [@PsiACE](https://github.com/PsiACE)

### Security
- Bump nix to v0.23 [@PsiACE](https://github.com/PsiACE)

## [0.5.0] - 2021-10-21
### Changed
- Bump version of prost* [@PsiACE](https://github.com/PsiACE)

## [0.4.4] - 2021-07-13
### Fixed
- Fix the lifetime mark is not used by criterion output [@yangkeao](https://github.com/YangKeao)

## [0.4.3] - 2021-03-18
### Changed
- Change the output paths for `criterion::PProfProfiler` to support benchmark groups [@yangkeao](https://github.com/YangKeao)

### Security
- Bump nix to v0.20 [@yangkeao](https://github.com/YangKeao)

## [0.4.2] - 2021-02-20
### Added
- Implement criterion profiler [@yangkeao](https://github.com/YangKeao)

### Fixed
- Fix compilation error on arm architecture [@yangkeao](https://github.com/YangKeao)

## [0.4.1] - 2021-02-10
### Added
- Allow passing custom flamegraph options [@yangkeao](https://github.com/YangKeao)

## [0.4.0] - 2020-12-30
### Fix
- Fix flamegraph inline functions [@yangkeao](https://github.com/YangKeao)

## [0.3.21] - 2020-12-28
### Changed
- Bump version of prost* [@xhebox](https://github.com/xhebox)

### Security
- Bump rand to v0.8 @dependabot
- Bump nix to v0.19 @dependabot

## [0.3.20] - 2020-12-11
### Changed
- Split `symbolic-demangle` into multiple features [@yangkeao](https://github.com/YangKeao)

## [0.3.19] - 2020-12-11
### Fix
- Ignore SIGPROF signal after stop, rather than reset to the default handler [@yangkeao](https://github.com/YangKeao)

## [0.3.18] - 2020-08-07
### Added
- Add `Report::build_unresolved` [@umanwizard](https://github.com/umanwizard)

### Changed
- Change from `&mut self` to `&self` in `RpoertBuilder::build` [@umanwizard](https://github.com/umanwizard)

## [0.3.16] - 2020-02-25
### Added
- Support cpp demangle [@yangkeao](https://github.com/YangKeao)

## [0.3.15] - 2020-02-05
### Added
- Filter out signal handler functions [@yangkeao](https://github.com/YangKeao)

### Fixed
- Fix protobuf unit [@yangkeao](https://github.com/YangKeao)

## [0.3.14] - 2020-02-05
### Fixed
- Don't get lock inside `backtrace::Backtrace` [@yangkeao](https://github.com/YangKeao)

## [0.3.13] - 2020-01-31
### Added
- Export `prost::Message` [@yangkeao](https://github.com/YangKeao)

### Fixed
- Only use thread name on linux and macos [@yangkeao](https://github.com/YangKeao)
- Disable `#![feature(test)]` outside of tests [@kennytm](https://github.com/kennytm)

## [0.3.12] - 2019-11-27
### Fixed
- Stop timer before profiler stops [@yangkeao](https://github.com/YangKeao)

## [0.3.9] - 2019-11-08
### Added
- Support profobuf output [@lonng](https://github.com/lonng)

## [0.3.5] - 2019-11-04
### Changed
- Change crate name from `rsperftools` to `pprof-rs` [@yangkeao](https://github.com/YangKeao)

## [0.3.4] - 2019-11-04
### Changed
- Use less stack space [@yangkeao](https://github.com/YangKeao)

## [0.3.2] - 2019-11-01
### Fixed
- Seek to the start before reading file in `TempFdArray`[@yangkeao](https://github.com/YangKeao)

## [0.3.1] - 2019-11-01
### Added
- Support customized post processor for frames [@yangkeao](https://github.com/YangKeao)

### Fixed
- Fix deadlock inside the `std::thread::current().name()` [@yangkeao](https://github.com/YangKeao)

## [0.2.3] - 2019-10-31
### Fixed
- Avoid calling `malloc` inside the signal handler [@yangkeao](https://github.com/YangKeao)

## [0.1.4] - 2019-10-25
### Changed
- Implement `Send` for `Symbol` [@yangkeao](https://github.com/YangKeao)

## [0.1.3] - 2019-10-24
### Added
- Add log [@yangkeao](https://github.com/YangKeao)

### Fixed
- Stop signal handler after processing started [@yangkeao](https://github.com/YangKeao)

## [0.1.1] - 2019-10-22
### Added
- Check whether profiler is running when starting the profiler [@yangkeao](https://github.com/YangKeao)

## [0.1.0] - 2019-10-22
### Added
- Support profiling with signal handler [@yangkeao](https://github.com/YangKeao)
- Support generating flamegraph [@yangkeao](https://github.com/YangKeao)
