Version history

Version 1.0.4108.1221

  • Fixed bug that could result in license checking to fail in rare cases
  • Fixed crash when profiling the System process in Windows
  • Fixed sporadic crash when attaching to a Windows application that uses the SetThreadDescription Win32 API to set thread names
  • Fixed rare crash during processing when attaching to a Windows application

Version 1.0.3980.1214

  • The Find window in the Timeline view is now resizable
  • When OS-level thread IDs are reused over time, individual threads are now displayed, with the correct data for each
  • When attaching to a running process, threads that were in a wait state at the time of attaching will now correctly have their wait stack displayed
  • Profiling of obfuscated .NET code is now correctly supported
  • Fixed symbols being unresolved for methods that have been ReJIT-compiled when profiling .NET applications
  • Fixed arrow key navigation in the Call Graph: using the left/right arrow keys will now always correctly collapse/expand nodes, and using the up/down arrow keys to scroll will now always keep the selected item in view
  • Fixed issue when there are no context switch events for a thread. The thread state lane would previously display an empty bar, and will now display the correct thread state
  • Fixed rare crash in CallGraph when clicking through the nodes very quickly
  • Fixed crash when attaching to a running process

Version 1.0.3923.1211

  • The Threads UI has been completely reworked based on your feedback, making it much easier to manage traces with many threads
    • Threads can now be sorted by name, thread ID, start time or utilization
    • Threads can also be reordered manually by dragging them
    • Threads can be hidden/unhidden from the view to more easily focus on the threads that interest you
    • A context menu provides convenient actions to select similar threads and group them together
    • Threads can be single- and multi-selected by clicking on them in combination with CTRL and SHIFT keys
    • The thread selection will remain consistent with the CallGraph and Function list. Besides being a convenient alternative way to select threads, this is also a way to quickly peek in the CallGraph what a thread is doing in a particular section of time, without the need to expand threads one by one.
  • Greatly improved render performance in large traces with many threads
  • Greatly improved memory usage during processing: the SymbolResolverWorker helper processes will now use significantly less memory. This optimization is particularly helpful for applications with many or large PDBs
  • Improved symbol resolving code: more symbols will be picked up now, particularly in code using function-local structs/classes with an arbitrary nesting level
  • Improved circular buffer tracing workflow: when opening a trace made in circular buffer tracing mode, the timeline will start at the most recent data, rather than showing a large empty area at the beginning where events fell out of the circular buffer
  • Hardware configuration changes are now handled transparently by the licensing system and will no longer prompt for license reactivation
  • The 'constexpr' keyword is now also syntax highlighted properly
  • Fixed the mouse cursor not updating correctly when hovering over splitters after opening a trace
  • Fixed not being able to set a capture size limit above 2GB
  • Fixed rendering of the measure & timerange selection when there are not enough threads in the trace to fully fill the screen vertically
  • Fixed a number of UI stalls when selecting threads or functions in the timeline view
  • Fixed a rare crash when switching between dark & light themes
  • Fix for not being able to load old Superluminal captures that were created before September 2020
  • Fix for auto-updater not being able to update because the license file is read-only
  • Fixed issue in thread selector UI: threads without names are now correctly displayed
  • Fixed rare crash when opening .etl files
  • Fixed rare crash when exiting the application
  • Fixed memory leak when closing a tab

Version 1.0.3886.1208

  • Improved the message that appears when the capture does not contain sampling data. It now refers to a page on our website where we keep track of any issues that can cause this problem

Version 1.0.3873.1205

  • First wave of rendering optimizations: rendering in profiles with many threads is much faster now. More to come!
  • If installation using the auto-updater cannot complete because files are in use or read-only, the auto-updater will now provide a dialog with all files that could not be updated, including whether they are in-use, or what process is using them
  • When the debug data for an executable/dll doesn't contain the PDB path, we'll now look for a PDB with the same name next to the executable/dll

Version 1.0.3786.1199

  • Fixed bug where lines in the source view unnecessarily indicated that zero time was spent on that line

Version 1.0.3776.1197

  • Fixed crash that could occur when resolving symbols for a .NET DLL with an invalid PE header

Version 1.0.3771.1196

  • Improved the UI when loading a file, so that you can see more details about symbol load progress. The UI also doesn't scroll up anymore when many symbols are being loaded
  • Clicking on a bar in the Instrumentation Timings view will now always default select the sub function with the largest time
  • Improved the selection visuals in the Instrumentation Timings view
  • LiveChat isn't eating newlines anymore
  • Now shipping required DLL for compatibility with Windows 7
  • The source view will now show an indication when line timing information is not available due to missing debug data
  • Fixed rare crash when clicking on the buttons in the Instrumentation Timings windows quickly after opening a file
  • Fixed a number of rare crashes when closing tabs or exiting the application
  • Fixed issue when attaching to a .NET application that could cause the wrong source file to be displayed when selecting a function in the timeline
  • Fixed symbols not being resolved in the CallGraph in rare cases
  • Fixed visual corruption in PieChart animation
  • Fixed semicolons missing in light theme in PieChart
  • Fixed rare hang in Session Explorer and Attach UI

Version 1.0.3705.1193

  • Fixed problem with Superluminal reporting that events were lost after attaching to a target process

Version 1.0.3701.1192

  • Full support for profiling .NET applications is now available at no additional charge! Try it out, and let us know what you think about it!
    • Supported .NET versions: .NET Framework 4.0+, .NET Core 2.0+, .NET 5.0
    • NuGet Symbol Server is fully supported: we'll automatically fetch PDBs for NuGet packages used by your projects
    • SourceLink is fully supported: we'll automatically fetch source files from e.g. GitHub, based on the SourceLink info in the PDB
  • Fixed find widget initial thread selection: now starts with 'All Threads' selected when pressing Ctrl+F after opening a trace
  • At startup, the previous log file is now backed up
  • We made it clearer in the Licensing dialog that the personal license is perpetual
  • Fixed a crash that could occur if you're attaching to a process that is currently exiting

Version 1.0.3637.1190

  • Highly optimized the Source view so that it can display contents a lot faster, and speed doesn't depend on the length of your profile anymore, it's 100% scalable now
  • Improved support for instrumentation events in the Source view

Version 1.0.3554.1187

  • Changes related to PlayStation┬«4, Xbox┬«, PlayStation┬«5

Version 1.0.3540.1184

  • We now have support for selecting multiple threads in the CallGraph and Function list UI, including a convenient thread selection UI that replaces the previous simple combobox. The new UI automatically organizes your threads into groups, based on thread name, so that you can easily select related threads in one go
  • The new thread selection UI is also used in the thread Find UI
  • To help with iterating on performance, the source view now caches symbol data for all functions you've clicked on. The cache will persist over sessions and recompiles, which means you can always re-visit the source view in a previous session to compare results
  • The installer now adds a SUPERLUMINAL_API_DIR environment variable that points to the location of the Superluminal API
  • Fixed issues where Superluminal would sometimes not start in maximized mode
  • Fix for crash in piechart when no data is available in the CallGraph
  • Fixed rare hang after processing a profile
  • Fixed crash in CallGraph
  • Fixed rare symbol resolving issue which could result in the source view not being populated
  • Fixed rare crash in Session Explorer

Version 1.0.3470.1179

  • Based on your feedback, the start page ("New Session" tab) has been completely redesigned to allow users to effectively manage their captures and recent runs. We're excited for you to try it out! If you have any feedback, please let us know. The full list of changes would be too big to list here, but the highlights are:
    • The "Recent Files" UI has been reworked. It has been replaced with a new "Session Explorer", which allows you to browse & manage your previously recorded captures. Functionality includes sorting, filtering, renaming, deleting, setting per-file annotations, and much more
    • The "Recent Runs" UI has also been reworked. Recent runs are now grouped by application & platform. Clicking on an item in the navigation panel will show you all recent runs for that application. The new UI also allows you to give meaningful names to your runs, as well as options to delete old runs
    • The navigation sidebar is now much more compact if you have support for multiple platforms installed: the Run/Attach buttons are no longer duplicated per platform
    • All known high DPI issues on the start page have been fixed
  • Greatly improved the startup time of Superluminal. A number of blocking UI stalls right after startup have been fixed. Startup time is back down to a more reasonable ~2 seconds now
  • The source view has been greatly optimized when showing large files
  • The source view now has a new parser that correctly deals with nested comments, strings, etc.  This fixes various bugs where, in certain files, the entire file could get highlighted as a 'comment'
  • Superluminal now fully supports Live++: when profiling an application that has had live edits with Live++ applied to it, Superluminal will now correctly pick up the new symbol info
  • Added DLL version of PerformanceAPI, which can be used in situations where you don't want to link against the library. The DLL version can be loaded at runtime and exposes a function to retrieve the API. See PerformanceAPI_capi.h for more info
  • The Instrumentation Timings window at the top of the session now has a much more compact display if no Instrumentation data is present in the profile. Furthermore, it now has an option to always hide the window if no Instrumentation data is present
  • Improved processing time of captures with many threads
  • Right-clicking on a tab will now show a context menu with some common options like "Show in Explorer", "Close", "Delete", etc
  • Double-clicking on a bar in the thread timeline will now zoom to that bar
  • The pie chart in the CallGraph view now shows the name of the function when hovering over a slice or the label
  • Added tooltip with the full function name to the 'Function' column of the CallGraph
  • Added "Expand All Children" option to the CallGraph context menu & toolbar
  • When a profile is opened on Windows that does not contain any sampling data, a warning will now be shown with an indication of likely causes and possible ways to fix the issue
  • Fixed crash when opening certain .etl files that had lost events due to a busy disk drive
  • Fixed bug in PERFORMANCEAPI_MAKE_COLOR; the B component was incorrectly used to form the final color

Version 1.0.3379.1174

  • Fixed crash when toggling the Time Display Mode in the Call Graph while a filter is active
  • Fixed issue where toggling the Time Display Mode in the Call Graph would collapse all expanded nodes in certain cases

Version 1.0.3374.1173

  • Improved support for fibers; fixed an issue that could cause fiber stacks to be missing

Version 1.0.3349.1170

  • Full support for PlayStation® is now available at no additional charge! Getting access is easy: simply click the 'Confirm Developer Status' button next to Superluminal in the Tools & Middleware directory on DevNet or just let us know at
  • Fixed several issues when using paths with Unicode characters on them

Version 1.0.3309.1168

  • Superluminal is now fully per-monitor DPI-aware. The UI will be scaled correctly using the Windows setting, no matter the scaling factor or monitor that is used.
  • When dragging the window between monitors with different DPI settings, all UI will be updated correctly
  • Runtime DPI changes, such as when logging in to a remote machine over RDP, are now correctly handled
  • The source view now has the functionality to browse to an alternate source location when the original source file path doesn't exist
  • The source file location in the source view will no longer disappear if the file path is too long.
  • The source view now always displays the source file location, even if it doesn't exist on local disk
  • The CallGraph now has support for filtering based on function names
  • The Function List now has a per-item context menu which can be used to jump to the corresponding function in the CallGraph
  • The context menu to hide/show columns in the CallGraph & Function List is now also enabled for the butterfly view.
  • Tooltips are no longer hidden behind the mouse cursor when using larger cursor sizes
  • Improved rendering performance
  • Fixed crash when using a control scheme with Omnidirectional pan
  • Fixed crash when cycling through find results while a timerange selection is active
  • Fixed crash when selecting a bar in the Instrumentation Timings window while a timerange selection is active
  • Fixed rare issues with starting a capture with 'start immediately' disabled
  • Fixed issue where the Thread Interaction tab could display the wrong blocking/unblocking stack in certain cases
  • Fixed issue where the UI rendering would be corrupted if the QT_SCALE_FACTOR environment variable is set

Version 1.0.3208.1165

  • Fixed an issue that could cause the auto-updater to keep triggering when the Xbox SDK is not installed

Version 1.0.3201.1162

  • Fixed issue where the navigation pane on the start page could become too big, which would result in a window that could not be resized vertically anymore

Version 1.0.3193.1161

  • Full support for Xbox One® and Xbox Series X® (Project Scarlett) is now available at no additional charge! Getting access is easy: just send us an email at
  • PlayStation® 4 support is now available for preview. To get access, simply click the 'Confirm Developer Status' button next to Superluminal in the Tools & Middleware directory on DevNet or just let us know at
  • Fix for rare crash in threads view Fix for attach settings (including filter) not being persistent between runs.
  • Fix for update timer that could keep running while in 'start paused' mode

Version 1.0.3115.1157

  • Fixed a minor bug in the threads view

Version 1.0.3105.1154

  • Significantly optimized the opening of large trace files with hours of data and hundreds of threads. Opening these traces is now much faster.
  • Added support for profiling kernel-only processes, such as drivers and the System process
  • Fixed bug that could cause stacks to be missing when the program makes a call to a kernel function that takes a long time to complete
  • Fixed issue that could result in symbols not being resolved in rare cases
  • Fixed a crash caused by a bug in an AMD OpenGL driver from 2011
  • Fixed rare crash when running over Remote Desktop
  • Fixed set/clear root button in Call Graph

Version 1.0.3019.1151

  • Introduced C API to Superluminal. The C++ API has been deprecated but will continue to function. New features will be added to the C API exclusively.
    • The C API can be found in PerformanceAPI_capi.h in the API directory in the Superluminal installation folder.
    • The InstrumentationScope and related macros are not deprecated and will continue to function.
  • Added support for coloring Instrumentation events to the API. Colors can be created through the use of the PERFORMANCEAPI_MAKE_COLOR macro.
  • Added context menu to the Function List headers. This allows you to hide/show columns, similar to the Call Graph.
  • Added Open In Editor button to the Source view. This button will open the current source file in the associated editor.
  • Added support for running Superluminal behind a proxy server. Superluminal will now automatically detect and use the proxy server, if necessary.
  • Fixed bug in Instrumentation Timings view: clicking on a bar will now correctly update the Call Graph again.
  • Fixed rare hang in the Source view, caused by the network port being stolen by another program.
  • Fixed support for Fibers in 64-bit applications.

Version 1.0.2952.1148

  • Fix for fiber support in 32-bit applications

Version 1.0.2948.1147

  • Added syntax highlighting for Rust files
  • Added support for demangling Rust symbol names
  • Fixed display bug in Instrumentation Timings window when there are a large number of instrumentation events in the trace
  • Fixed rare crash in symbol resolving when the target program has been linked by lld, caused by invalid debug data being emitted by lld

Version 1.0.2935.1144

  • The selection mechanics have been completely reworked
    • The timerange is only ever set by the user. When clicking on a function, we do not automatically make a timerange selection anymore. This makes it also possible to continue clicking on functions while having an active timerange, making navigation with the callgraph a lot easier.
    • All views are always filtered to the active timerange. The option to choose between 'entire session/selected timerange' has been removed from all UIs. If there is no active timerange, data for the entire session is displayed.
    • Find results separated. The Find results are now separate from your selection. This means you can now click through/interact with your Find results without losing them. 
    • Highlight changes. The Find result highlights are always displayed in yellow. The highlights that indicate your selection in the callgraph/function list are now always white.
  • We'd love to hear what you think of these changes!

Version 1.0.2909.1139

  • Fixed graphical corruption when starting Superluminal in Light mode

Version 1.0.2871.1136

  • Fixed rendering of Measure Range: it's no longer drawn out of screen when the threads view is scrolled down
  • Fixed rare case of incorrect timing being displayed in the source view

Version 1.0.2869.1135

  • Superluminal now has a Dark Mode! It can be enabled by going to Tools/Settings and then to the General tab.
  • The 'Function Time Distribution' pie chart coloring has been updated
  • The Thread overview coloring has been updated
  • Fixed crash when opening a trace on a read-only medium (for example, network shares)
  • Fixed linker error when linking against both PerformanceAPI.lib and advapi32.lib

Version 1.0.2833.1133

  • Greatly reduced CPU usage of the profiler itself. It will no longer use CPU when idle
  • Added support for adding multiple input-bindings to a single action
  • The default bindings now support Alt + Mouse wheel zoom as secondary binding
  • Added support for pre-installing a license during install of Superluminal. This allows system administrators to remotely install and activate Superluminal without intervention from the user. To use, specify /lic=<path to license file> on the installer command line

Version 1.0.2820.1131

  • Fixed issue with the Capture Settings defaulting to incorrect values when starting Superluminal for the first time

Version 1.0.2800.1129

  • Added Live Chat feature that enables users to share feedback and chat directly with the developers. We're eager to hear your thoughts!
  • Added option to set sampling frequency
  • Added option to limit the capture size
  • Added option to limit the capture length
  • Added option to disable usage of the PerformanceAPI Instrumentation events
  • Added option to disable capturing of ContextSwitch callstacks
  • The callgraph now supports setting a display mode for time units (Milliseconds, Relative %, Absolute %)
  • The columns in the callgraph can now be toggled as desired by right-clicking on the headers

Version 1.0.2660.1126

  • Fixed sporadic issue when attaching to processes ("Failed to determine the path" error message)

Version 1.0.2639.1125

  • Added 'recent processes' section to the process list in the Attach window. This section will display the processes matching your most recent attaches.
  • Added support for attaching to processes that are owned by a different user (requires starting Superluminal in Administrator mode)
  • Improved messaging when attaching to a process fails
  • Fixed activation of licenses when behind certain types of corporate firewalls
  • Fixed sporadic crash when shutting down the profiler or closing tabs
  • Fixed time range selection not affecting the call graph when making the initial selection
  • Fixed sporadic crash when opening ETW traces that were recorded in circular logging mode
  • Fixed startup crash when running Superluminal under the System (session 0) account
  • Fixed crash when starting Superluminal under the System (session 0) account when no hardware acceleration is available

Version 1.0.2506.1122

  • Fix for PerformanceAPI libraries: now using correct link flags for static linking of the CRT

Version 1.0.2487.1121

  • Fixed issue with Instrumentation Timings window remaining empty in certain cases

Version 1.0.2472.1120

  • Breaking Change The PerformanceAPI has been completely reworked. Please see the documentation (Help -> Documentation) for more information. Most important changes:
    • It is now a static library instead of a DLL
    • It is no longer required to use the InstrumentationScope class to send events to Superluminal. New functions BeginEvent and EndEvent are now available to achieve the same effect, allowing for easy integration with existing profiling systems
    • A FindSuperluminalAPI.cmake file is now included for easy integration in CMake-based build systems
  • Input bindings have become much more versatile: key and mouse bindings can now be configured to match many existing input schemes. Standard presets for commonly used profilers have been added
  • GPU memory consumption has been lowered a great deal
  • Vertical scrolling is now smooth instead of a stepwise scroll
  • Improved capturing UI: start/stopping/canceling profiling is now done through buttons rather than 'links'
  • Improved capturing UI: the progress icon is greyed out and doesn't animate when profiling is paused, to more clearly indicate the paused state
  • Fixed issue with symbol resolving progress bar being on 100% while symbols were still loading
  • Fixed go to blocking/unblocking stack not highlighting the target stack in certain cases
  • Fixed go to blocking/unblocking stack not highlighting the entirety of the stack in certain cases
  • Fixed 'F' to frame: now frames the selected timerange again
  • Several rare crash fixes

Version 1.0.2357.1112

  • Added 'Expand hot path' feature to CallGraph. Available through node context menu & toolbar.
  • Added 'Set as root' feature to CallGraph. Available through node context menu & toolbar.
  • Added 'View in Flat List' feature to CallGraph. Available through node context menu & toolbar.
  • Added support for removing recent profiles & runs from the Start Page (right-click on the Recent File or Run)
  • Added functionality to filter processes in the Attach window
  • Added functionality to display the commandline arguments of running processes to the Attach window
  • Improved capturing UI: start/stopping/canceling profiling is now done through buttons rather than 'links'
  • Improved capturing UI: the progress icon is greyed out and doesn't animate when profiling is paused, to more clearly indicate the paused state
  • Further improved performance of symbol resolving during processing
  • Licensing system now gracefully handles hardware changes
  • Fixed sporadic crash when quickly clicking around in the CallGraph
  • Fixed sporadic bug in the Flat List view that could result in negative times being shown in the Called By tree in cases of recursion
  • Fixed issue with the installer not remembering its previous installation path
  • Fixed Flat List losing its filter when a new selection is made
  • Fixed issue with releasing mouse outside the window when drag selecting a range
  • Fixed crash when starting profiling session at the exact time that the target process exits
  • Fixed sporadic crash when closing a tab
  • Fixed bug in source view: image files (.exe, .dll) are now correctly retrieved from any configured symbol servers for disassembly
  • Fixed sporadic hang when capturing profiling data and then closing the tab
  • Fixed sporadic crash when processing a trace and then closing the tab

Version 1.0.2305.1110

  • Fixed performance issue with symbol loading in case of very large PDBs

Version 1.0.2297.1107

  • Added support for running over Remote Desktop
  • Added software rendering support for systems where GPU acceleration is not available
  • Added 'Flat List' view, which collapses all data for a given function into a flat view, giving you total inclusive/exclusive time per function
  • Added butterfly (called by/calls) view (in the 'Flat List' tab). This will show you where a particular function is being called from and what other functions it calls
  • Added support for resolving thunk functions in all views. This resolves various cases of calls to thunk functions missing from, for example, the disassembly view
  • License entry is now more forgiving; extra newlines and such are ignored
  • Fixed some font rendering artifacts
  • Fixed performance regression in symbol resolving
  • Fixed crash when drag selecting a timerange after switching the callgraph to 'selected timerange' in rare cases
  • Fixed several rare crashes that could occur right after opening a profile
  • Fixed corrupt display of thread states in CallGraph in certain cases
  • Fixed thread state distribution being incorrect in the callgraph in cases where there is a context switch without callstack
  • Fixed exclusive time in the callgraph being off in cases where there is a context switch without callstack
  • Fixed timings in the source view from diverging from timings in the threads/callgraph views in certain cases
  • Fixed display of files with UTF8 byte order mark in source view
  • Fixed rare shutdown crash when using the profiler over RDP
  • Fixed crash when browsing through the callgraph while two sessions are active

Version 1.0.2183.1103

  • Added support for Insider builds to the auto updater
  • Fixed sizing of release notes in the auto updater on high DPI screens

Version 1.0.2141.1059

  • Fixed source view not updating in certain cases

Version 1.0.2140.1058

  • Fixed some symbols not being resolved correctly in certain cases when profiling UE4
  • Fixed rare crash when opening a trace
  • Fixed rare zombie 'SymbolResolverWorker' processes

Version 1.0.2131.1050

  • Initial release