Releases: osyoyu/pf2
Releases · osyoyu/pf2
v0.14.0
Added
Pf2.profilecan now directly write a Firefox Profiler-compatible profile into a file or an IO-ish object. Check outPf2.profile'sout:andformat:option.- An experimental pprof-compatible recorder has been added. Profiles generated by this reporter can be passed to tools such as
go tool pprof, or services such as Grafana Pyroscope or Google Cloud's Cloud Profiler.
Changed
Pf2::Reporter::FirefoxProfilerSer2now emits a JSON string, not a Hash. Parse the JSON to obtain the original representaion.
Fixed
- Fixed a crash when a delayed SIGPROF is received after
Pf2.stopis called.
v0.13.0
v0.12.0
Added
Pf2.profilenow accepts the same options asPf2.start.- The resulting profile now has
collected_sample_countanddropped_sample_countfields.
Fixed
- Samples captured after the collector thread was stopped now get included in the profile.
- This shouldn't matter in practice (this all happens after
Pf2.stopis called).
- This shouldn't matter in practice (this all happens after
Changed
- Accepted max stack depth is expanded to 1024 for Ruby (was 200) and 512 for native (was 300).
- This is not configurable, but should be sufficient for most use cases. Please open an issue if you need higher limits.
- Pf2.profile now accepts the same parameters as Pf2.start.
- Internal changes
- Updated libbacktrace to the latest version as of 2026/1/8.
- Tests are now much more stabilized.
v0.11.3
This version is for testing the new release process through Trusted Publishing. All code is identical to 0.11.2.
v0.11.2
v0.11.0
Added
- RDoc documentation is now online - https://osyoyu.github.io/pf2/
- Native stack consolidation now supports LTO-ed binaries (@hanazuki)
Changed
Pf2cmodule is now completely removed.Pf2c::Sessionhas been merged asPf2::Session.
Fixed
- Fixed an bug where the program crashes when a
Pf2::Sessionis GC'd before profiling starts. - Fixed an bug where the program crashes when the native stack was more than 200 frames deep.
v0.10.0
Note: This release was originally planned as v1.0.0. Plans have changed, and v1.0.0 will be another release.
Added
This version contains a complete rewrite of the profiler!
- The default sample collection backend has been switched to the new C-based backend.
- The previous Rust-based backed has been removed. Use v0.9.0 if you need it.
- macOS / non-Linux platform support!
- On platforms which lack
timer_create(3)such as macOS, Pf2 now fall backs tosetitimer(3)based sampling. This mode does not support per-thread CPU time sampling.
- On platforms which lack
Changed
loggeris now declared as a dependency (Ruby 4.0 compat).
0.9.0
v0.8.0
Added
- The new serializer (Ser2) is now available in
Pf2::Session#startthrough theuse_experimental_serializeroption.- This serializer is more efficient and has a smaller memory footprint than the default serializer.
- Ser2 still lacks some features, such as weaving of native stacks.
v0.7.0
Changed
- Prepended
frozen_string_literal: trueto all Ruby files. - Internals
- Updated rb-sys to 0.9.105.
- Synced libbacktrace with upstream as of 2024-08-06.
- Experimental
- The new serialization format (Ser2) can be emitted via
use_experimental_serializer: true. Development is still in its very early stage, and the old format will be the default in this release.
- The new serialization format (Ser2) can be emitted via