Releases: plasma-umass/scalene
Releases · plasma-umass/scalene
Bug fix to prevent hangs in Scalene
What's Changed
Full Changelog: v1.4.1...v1.4.2
Maintenance release: fixes small memory accounting issue, re-enables running in Jupyter notebooks, adds `--allocation-sampling-window`
What's Changed
- Update README.md by @barseghyanartur in #324
- Fixed double-counting newlines by @sternj in #328
- Added
--allocation-sampling-window
; fixed reporting of peak function summary by @emeryberger in #329 - Added in shim for get_context by @sternj in #320
Full Changelog: v1.4.0...v1.4.1
More Profiling Control, Leak Detector, Enhancements and Bug Fixes
New features:
- adds
--profile-exclude
flag to exclude from profiles any filenames containing the given strings (comma-separated) - adds experimental memory leak detection (
--memory-leak-detector
)
Enhancements:
- provides more accurate memory accounting for small objects
- higher resolution tracking of system vs. user time, per line, on Linux and Mac
- new sampling approach, using “intervals” and per-line triggers, to ensure consistent accounting of per-line peak and average memory consumption
Bug fixes:
- fixes build on Windows
- adds
-arm64e
target to enable building on Apple Silicon (M1) - fixed exit signal propagation for failed scripts
- ensures correct build on old Xcode + Mac OS combinations
- distribution includes wheels for Windows
Python 3.10, bug fixes and cleanups
- Added wheels for Python 3.10;
- Improved granularity of memory recording;
- Fixed "unable to find Python allocator functions" issue (#278);
- Performed various cleanups;
Improved memory profiling, new features, bugfixes
Overhauled memory attribution logic:
- uses Python's custom memory management APIs to efficiently disambiguate native vs. Python memory allocations, supplanting the prior approach that employed periodic call stack sampling.
- performs immediate lookup of the location in source code responsible for allocation/deallocation, reducing the "smearing" effect in attributions previously caused by delayed attribution.
- computes average memory consumption (rather than total) for each line of code (using the novel technique of "one-shot" tracing); lines executed many times no longer appear to have consumed large amounts of memory.
- no longer reports negative memory growth from output, caused by lines freeing more than allocating, which has been a source of confusion for some users.
- this release also resolves a memory leak.
Overhauled internal signal handling:
- uses signal actors, an approach based on actors that decouples signal handling logic from the main thread, avoiding the risk of races and deadlocks and simplifying logic
Bug fixes:
- fixed missing handling of
pynvml.NVMLError_NotSupported
exception (issue #262); - fixed issue cleaning up after profiling multiprocessor and multithreaded programs;
- fixed issue not accounting for elapsed time when zero frames were recorded (issue #269).
New features:
- added JSON output option (
--json
); - added programmatic profile control (
scalene_profiler.start()
andscalene_profiler.stop()
).
Miscellaneous:
- improved documentation.
Note: this release is for MacOS and Linux only.
Windows bugfix release
Fixes Windows-specific bug introduced in 1.3.11 leading to empty outputs.
With this release, scalene on Windows now requires python 3.8 or newer.
Bugfix release for python compatibility
Fixed inadvertent use of signal.raise_signal
, which isn't available in Python 3.7.
Adds Windows wheels to pypi
This release adds a Windows wheel to pypi, making it a C/C++ development environment unnecessary for installation.
Bugfix release for all platforms
- Fixes
pip install
for Windows - Fixes
@profile
functionality
Bugfix release
- fixed AttributeError bug running with
--cpu-only
;