v0.7.0
Pre-release
Pre-release
Async profiling arrives. Piano now instruments async functions and tracks self-time accurately across thread migrations, so tokio::spawn, select!, and work-stealing runtimes produce correct results.
Added
- Async self-time tracking: migration-safe Guard tracks self-time correctly when async tasks migrate across threads (#94)
- Guard checks injected after
.awaitat any nesting depth (if, match, loop), not just top-level statements (#142) - Function names preserved for migrated async guards -- no more
<migrated>bucket in reports (#116) - Phantom stack entry cleanup on intermediate threads during multi-hop migration (#141)
- Instrument
fnitems insidemacro_rules!definitions when profiling all functions (#143)
Changed
- Guard check injection uses recursive visitor instead of flat top-level iteration, catching
.awaitinside nested expressions