Skip to content

Releases: plasma-umass/scalene

New visualizations, accuracy improvements, and bug fixes

12 May 18:44
de37e0b

Choose a tag to compare

What's Changed

Headlines

  • Adds call graphs ("flame graphs") spanning from Python to native code, organized by % of time
  • Timeline view of call graphs ("flame chart"), including GIL, I/O, and GC activity
  • Flame graph for memory allocations, attributing memory to call stacks
  • Improved memory attribution (now tracked per-thread)
  • Adds proper support for free-threaded Python

New feature work

Bug fixes

Full Changelog: v2.2.1...v2.3.0

Scalene v2.2.1

22 Mar 15:30
c9af6ad

Choose a tag to compare

Scalene v2.2.1

Bug Fixes

  • sys.monitoring tool ID conflict with PyTorch (#1015, #1019): Fixed SIGSEGV crash when using Scalene with PyTorch Lightning on Python 3.12+. When PROFILER_ID is already claimed by another tool, Scalene now falls back to alternative tool IDs (3 or 4), or gracefully uses the legacy PyEval_SetTrace tracer.

  • TensorFlow 2.21+ compatibility (#1018): Fixed compatibility with TensorFlow 2.21+ where trace.enabled changed from a callable to a bool. Scalene now applies a compatibility fix at profiler start time.

  • Multiprocessing resource tracker (#1017): Fixed BrokenPipeError on NixOS with Python 3.13/3.14 when the resource tracker subprocess dies during semaphore creation. Scalene now falls back from spawn/forkserver to fork context.

  • Subprocess profiling (#1013): Fixed profiling failing when Python interpreter flags (like -B or -u) precede -c or -m in subprocess invocations.

  • Windows timer thread shutdown (#1012): Fixed fatal gilstate_tss_set error on Windows when the timer thread shuts down.

  • Windows --on/--off support (#1010): Added support for --on and --off flags on Windows using Named Events.

  • __future__ flags in exec/eval (#1008): Fixed __future__ compiler flags not being propagated in exec/eval/compile replacements.

  • Windows multiprocessing (#1005, #998): Fixed spawn-mode multiprocessing Pool support on Windows, including pickle corruption and memoryview cleanup issues.

New Features

  • Async-aware profiling (#1006): Added async-aware profiling support using sys.monitoring on Python 3.12+.

  • C23 allocator support (#1011): Added support for C23 free_sized and free_aligned_sized functions in SampleHeap.

Other Changes

  • Improved shell script portability for NixOS/Guix using #!/usr/bin/env bash
  • Code formatting updates via Black

Full Changelog: v2.1.4...v2.2.1

Maintenance release with bugfixes and performance improvements

15 Feb 22:58

Choose a tag to compare

What's Changed

Full Changelog: v2.1.3...v2.1.4

Improved attribution, off-line mode, and fix for Jupyter

31 Jan 20:13

Choose a tag to compare

What's Changed

  • Fix loop backward-jump sampling bias with even redistribution by @emeryberger in #995
  • Fix Google Analytics loading delay in offline/standalone mode by @Copilot in #996
  • Fixed Jupyter magics. by @emeryberger in #997

Full Changelog: v2.1.2...v2.1.3

v2.1.2

30 Jan 22:55

Choose a tag to compare

What's Changed

Bug Fixes

  • Fix Windows CPU profiling extreme slowness and memory explosion (#992): The v2.1 Windows timer loop hardcoded a 1ms sampling interval regardless of the configured rate (default 10ms), generating ~10x more samples than intended and reducing sys.setswitchinterval to 1ms causing excessive GIL contention. Now uses the actual configured sampling rate.

Improvements

  • Bound memory footprint samples with reservoir sampling (#993): Replace unbounded list accumulation of memory footprint samples with sorted_reservoir (Vitter reservoir sampling), capping memory at O(k) instead of O(n) where n is the number of malloc/free events. Eliminates unbounded memory growth during long profiling runs.

Full Changelog: v2.1.1...v2.1.2

Improves JAX and TensorFlow support; fixes Windows issue

30 Jan 14:57

Choose a tag to compare

What's Changed

  • Add library profiler infrastructure for JAX and TensorFlow by @emeryberger in #990
  • Removes stray debug statements on Windows.

Full Changelog: v2.1.0...v2.1.1

Numerous updates and bug fixes

23 Jan 21:18

Choose a tag to compare

UI, Frontend & Visualization

  • Convert scalene-gui JavaScript to TypeScript by @emeryberger in #970
  • Add Google Gemini provider, environment variable support, and UI modernization by @emeryberger in #973
  • Vendor assets locally for offline HTML viewer support by @emeryberger in #983
  • Add per-file display mode dropdown for profile filtering (fixes #813) by @emeryberger in #989

LLM / API Provider Support

  • Add support for OpenAI-compatible API servers and Anthropic (fixes #918) by @emeryberger in #971
  • Add Google Gemini provider, environment variable support, and UI modernization by @emeryberger in #973

CPU & Core Profiling Engine

Multiprocessing, Exec, and Runtime Compatibility

PyTorch & JIT Integration

GPU & Apple Silicon

Windows Support & Reliability

  • Improve Windows memory profiling error messages and documentation by @emeryberger in #978
  • Fix Windows CPU profiling not collecting samples by @emeryberger in #980

Notebook & Editor Integration

v2.0.1

22 Dec 17:28

Choose a tag to compare

Trigger re-build to produce libscalene.dll.

Major new release: Windows memory profiling support, improved CLI, and performance optimizations

20 Dec 01:42
6af5854

Choose a tag to compare

What's Changed

Full Changelog: v1.5.55...v2.0.0

Maintenance release for Windows

23 Sep 12:45

Choose a tag to compare

What's Changed

Full Changelog: v1.5.54...v1.5.55