github doronz88/pymobiledevice3 v11.31.0

4 hours ago

Highlights

🐛 core-profile-session parse-live is live

parse-live printed events seconds late, in bursts, and with --bsc it missed most of what happened: the device flushed its trace buffer only when it filled, and every event was also sampled for a callstack, which flooded the stream with scheduler and kperf events (about 90% of the traffic) and made the device drop most of the requested ones. The tap now asks the device to flush every 100 ms, and live/parse-live no longer request callstack sampling. On an iPhone 11 (iOS 27.2) with --bsc, traces now print ~0.3 s after they happen instead of 3.5-4 s, the device sends 11x less data, and file opens actually show up (960 open events in 15 s instead of 2).

pymobiledevice3 developer dvt core-profile-session parse-live --bsc

✨ Unfiltered parse-live skips ahead instead of falling behind

Without class filters the device emits ~550k events/s, more than can be parsed, so the output used to drift further and further behind (17 s after 40 s). parse-live now skips events that fall more than 2 s behind and logs how many it skipped; the output stays ~2 s behind. Use --bsc/--class-filters/--subclass-filters to filter on the device and see every event, or --no-skip-behind to keep every event regardless of lag. Library users get the same through CoreProfileSessionTap.get_kdbuf_stream(max_lag=...) and CoreProfileSessionTap(sample_callstacks=False).

🐛 core-profile-session callstacks-live no longer crashes on start

Every run without --count died with "Stop argument for islice() must be None or an integer".

What's Changed

Full Changelog: v11.30.0...v11.31.0

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.