Changes
🚀 Features
- Python 3.15 support @benfred (#878)
- Add Windows ARM64 wheels @ndabas (#867)
- Format function names with qualname for Python 3.11+ @jake-kramer (#825)
- Classify 3.12+ frames by owner and mask stackref tag bits @korniltsev-grafanista (#884)
- Use _Py_DebugOffsets to get imports modules address @benfred (#877)
- Skip thread-name lookup for outputs that do not use names @jonashaag (#862)
- Gate CLI dependencies behind optional
clifeature flag @korniltsev-grafanista (#848) - Add thread name lookup tests, lookup again after 1 second if not matched at first @krassowski (#880)
🐛 Bug Fixes
- Fix getting thread names and copying PyLongObject on 32-bit arm @benfred (#888)
- Minor fixes for python 3.15 @benfred (#886)
- Fix line number at compact line table entry boundaries @korniltsev-grafanista (#883)
- Fix excessive thread name lookups @tdryer (#790)
- fix stack trace fetching on 32-bit cpython 3.14 @HiFiPhile (#856)
- fix: don't read target-process bytes as
bool@benfred (#876) - Fix image base calculation for PyInstaller MacOS bundles @trisiak (#858)
- fix: bound thread and frame walk iterations, not pushed results @korniltsev-grafanista (#874)
- fix: decode UCS-4 strings without char transmute UB @r3wretrhy (#875)
- fix: avoid colons in default recording filenames @ryanchou1994 (#869)
- fix: ignore ECHILD from Child::try_wait() when child was already reaped @sendaoYan (#871)
- fix: get_mach_cpu_type do not mutate imutable variable with raw pointers @korniltsev-grafanista (#849)
🧰 Maintenance
- Update GHA to use python 3.14 by default @benfred (#901)
- Drop unused pull-requests: write from build workflow @korniltsev-grafanista (#893)
- Update remoteprocess dependency to 0.5.5 @benfred (#895)
- Reduce GHA ci matrix size @benfred (#889)
- update remoteprocess/proc-maps dependencies @benfred (#887)
- Bump the github-actions group across 1 directory with 2 updates @dependabot[bot] (#864)