Overview of changes in Sysprof 45.beta
=======================================

Sysprof has largely been redesigned and rewriten from the ground up this cycle
to provide better GTK 4 integration and more advanced features.

libsysprof-capture
------------------

This library is our static library used by many applications and libraries to
augment capture collection. It is still installed as libsysprof-capture-4.a
as a static library for consumers. The ABI is the same, however some new data
types have been added.

libsysprof
----------

This library has been rewritten around a new document model for captures.
Instead of using SysprofCaptureReader (a buffered capture reader) the
SysprofDocument object exposes a GListModel of a mmap()'d capture file.

This has allowed for many new indexing performance improvements as well
as simpler data-binding in the user interface.

You can read more about this at
https://blogs.gnome.org/chergert/2023/07/18/glistmodel-as-a-data-format/

Additionally, a new SysprofProfiler API has been added. It has been much
simplified and allows for easier implementation of instruments in a race
free manner.

The library heavily builds upon libdex for Futures which I created this past
window to simplify features in GNOME Builder.

sysprof-cli and sysprof-agent
-----------------------------

These tools both provide similar features albeit from a different standpoint.
They have both been updated to use the new profiler interface in libsysprof.

sysprofd
--------

Very minimal changes have been made to sysprofd to help ensure that the
application and libraries can still work on systems with an older sysprofd
installed on the host.

sysprof
-------

The application has been completely redesigned and is now window focused
rather than tabs. The constraint of tabs was becoming too cumbersome to
maintain so as the author, I felt this was the right move.

Howto and More
--------------

I wrote a series of blog posts on how to use Sysprof which you might
find useful.

https://blogs.gnome.org/chergert/2023/07/28/how-to-use-sysprof-again/
https://blogs.gnome.org/chergert/2023/08/04/more-sysprofing/

You can see an overview of the new features here:

https://blogs.gnome.org/chergert/2023/07/27/sysprof-45/


Overview of changes in Sysprof 3.48.0
=====================================

 * Various a11y improvements
 * Some widgets ported to GtkColumnView
 * Sysprof-dump can now symbolicate instruction pointers
 * Visualizer group fixes for missing rows
 * Fixes for inheriting stdin when spawning processes
 * Build system fixes to improve use as a meson subproject
 * Additional shortcuts added to shortcut overlay
 * LD_PRELOAD syntax fixes
 * Translation updates

Overview of changes in Sysprof 3.46.0
=====================================

 * sysprof-cli is now statically linked
 * sysprof-agent now has a --decode option to decode symbols at the end
   of a capture, similar to what sysprof-cli can do.
 * A crash in the Elf symbol resolver has been fixed.
 * Translation updates

Overview of changes in Sysprof 3.45.1
=====================================

This release of Sysprof is a development release and is not intended for
end users.

 * Addition of sysprof-agent to aid in cross-container profiling and
   instrumentation. (Use -Dagent=(true|false) to control
 * Additional porting to libadwaita
 * Remove unused settings schemas
 * Nightly Flatpak builds now use org.gnome.Sysprof.Devel as the
   application-id
 * The application now uses org.gnome.Sysprof as the application-id
   instead of org.gnome.Sysprof3.
 * Icon updates
 * Translation updates

Overview of changes in Sysprof 3.45.0
=====================================

This release of Sysprof is a development release and is not intended for
end users.

 * Initial port to GTK 4
 * A number of build configuration options where simplified and will need
   changing by distributions to match the new, more consistent, naming.
 * Libadwaita has been added as a dependency
 * The profiler assistant has received styling changes
 * libsysprof-ui had it's ABI bumped to libsysprof-ui-5 which targets GTK 4.

Overview of changes in Sysprof 3.44.0
=====================================

 * Translation updates

Overview of changes in Sysprof 3.43.90
======================================

 * Require libunwind unless disabled manually to help ensure
   distributions are doing the right thing.
 * Add allocation leaks section to memprof.
 * Fix preloading of speedtrack
 * Fix capture of mapped path names with spaces
 * Translation updates

Overview of changes in Sysprof 3.42.1
=====================================

 * Build fixes for close()/lseek() usage
 * Show recording time in local time instead of UTC
 * Improve resolving of symbols in presence of toolbox, flatpak,
   and btrfs
 * Fix checking of paranoid state in Linux kernel
 * Updated translations

Overview of changes in Sysprof 3.42.0
=====================================

 * Much work has been done to improve path resolution of maps found within
   containers such as podman, toolbox, and flatpak.

Overview of changes in Sysprof 3.40.1
=====================================

 * Fix build system issue which caused symbols from libsysprof-capture.a to leak
   into the ABI of libraries consuming it. This was due to inheritance of GNU
   default symbol visibility. A recompilation of those libraries is necessary.

Overview of changes in Sysprof 3.40.0
=====================================

 * Improve symbol resolving on OSTree-based systems
 * Translation updates

Overview of changes in Sysprof 3.39.94
======================================

 * Fix some licenses in headers.
 * Add API to sysprofd/libsysprof to tweak.
   /proc/sys/kernel/perf_event_paranoid to improve capture quality.
   Tooling will now always try to change this value while profiling
   the system and ignore upon failure.
 * ftruncate() before overwriting proc files.
 * GTK aid has been removed as it is always enabled through the
   use of control-fd now.
 * Add a new Overlay capture frame type for mapping overlays between
   the host and the process filesystem namespace.
 * Use overlays to map podman containers to overlay directories
 * Use overlays to map flatpak containers to overlay directories for
   both /app and /usr.

Overview of changes in Sysprof 3.39.92
======================================

 * Use pic when compiling static libsysprof-capture
 * Some changes to podman symbol decoding
 * Handle NULL readers gracefully from capture cursors
 * Use g_memdup2()
 * UI tweaks
 * Translation updates

Overview of changes in Sysprof 3.39.90
======================================

 * Build fixes for macOS
 * polkit is optional (again) for sysprof-cli
 * Various fixes in kernel symbol resolving
 * Fix build when stack-protector is not used
 * Support elfparser on some interesting platforms
 * Translation updates

Overview of changes in Sysprof 3.38.1
=====================================

 * Support for translating paths to binary symbols has been improved when using
   Btrfs subvolumes.
 * Build system fixes
 * Fixes for sysprof_capture_reader_list_files() to match expectations
 * Load proper speedtrack library in LD_PRELOAD
 * Fixes when generating pkg-config files
 * Fixes when using musl libc
 * Translation updates

Overview of changes in Sysprof 3.38.0
=====================================

 * Translation updates

Overview of changes in Sysprof 3.37.92
======================================

 * Build system fixes
 * Fix incorrect warnings
 * Add various missing capture APIs for GTK
 * Be more careful about when polkit is queried
 * Translation updates

Overview of changes in Sysprof 3.37.90
======================================

 * Various build fixes
 * Translation updates

Overview of changes in Sysprof 3.37.2
=====================================

 * sysprof-capture no longer requires GLib and therefore the ABI has
   been bumped to 4. This allowed Sysprof to be used form GLib without
   circular dependencies
 * Various UI tweaks
 * Support for use as a subproject

Overview of changes in Sysprof 3.36.0
=====================================

 * Preload library has been moved to $libdir from $libexecdir
 * Build system improvements
 * Fix whole-system capture setting when using "Record Again" feature
 * New SysprofCollector interfaces for samples, marks, and logs to
   sit alongside allocations
 * Translation updates

Overview of changes in Sysprof 3.35.92
======================================

 * A new profiler for tracking memory allocations within processes
   that are spawned by Sysprof. Select "Track Allocations" to use
   an LD_PRELOAD module which monitors allocations within the target
   process. A callgraph is provided with allocations and their stack
   traces. This brings the main features of the venerable "Memprof"
   into Sysprof.
 * Port Sysprof to work on RHEL 7
 * Improvements to marks and counters displays
 * A new data frame in libsysprof-capture for memory allocations
   with stack traces.
 * sysprof-cli --merge can now be used to merge multiple syscap
   files together.
 * sysprof <program-path> can now be used to open Sysprof directly
   to a program to execute.
 * Sysprof now builds with additional security protections and
   optimization flags such as -Bsymbolic, -Wl,-z,defs, -Wl,-z,now,
   and -Wl,-z,relro.
 * Fixes for macOS
 * The ELF symbol resolver is faster
 * sysprof-cli now properly adds supplemental information to the
   capture file such as decoded symbols. This makes sharing syscap
   files across machines easier and more reliable.
 * A new mmap()'d ring buffer can be shared between processes for
   faster data transfer to sysprof. We expect more features around
   this SysprofCollector interface in future releases.
 * A new set if icons has been provided for the collectors
 * Translation updates

Overview of changes in Sysprof 3.35.2
=====================================

 * Build and test fixes
 * Track changes to gdbus-codegen
 * Include additional pkg-config variable for access to D-Bus data
 * Translation updates

Overview of changes in Sysprof 3.34.1
=====================================

 * Process search fixes

Overview of changes in Sysprof 3.34.0
=====================================

 * Help fixes
 * Build and test fixes
 * Translation updates

Overview of changes in Sysprof 3.33.92
======================================

 • Check for GLib 2.61.3 or newer for features used when removing deprecated
   API usage from GLib.
 • Require meson 0.50
 • Translation updates

Overview of changes in Sysprof 3.33.90
======================================

 • Tweak CSS styling a bit
 • Hide RAPL rows if no counters were discovered
 • Fix --no-battery in sysprof-cli
 • Improve parsing of /proc/mounts and /proc/pid/mountinfo
 • Improve support for using libsysprof from Flatpak
 • Symbol directories are removed from public ABI and consumers should
   now add directories to SysprofElfSymbolResolver directly

Overview of changes in Sysprof 3.33.4
=====================================

 • Build system fixes and improved backports
 • New network, disk, battery, and energy sources
 • Additional options for sysprof-cli including "syprof-cli -- command"
   support.
 • i18n is now properly initialized at startup
 • Improved styling
 • A new "duplex" graph type for read/write type visuals

Overview of changes in Sysprof 3.33.3
=====================================

This release of Sysprof contains the largest amount of work since we revived
the project a few years ago. We have revamped and minimized the ABI of
libsysprof-ui considerably. As port of the ABI update, symbols have been
changed from Sp to Sysprof to reduce chances of collisions.

With these changes comes a soname bump and upgrade of the D-Bus API provided
by the package. Some work has been taken to implement older versions of the
sysprofd API so that older clients may continue to work.

 • Various build system improvements
 • A new libsysprof-capture-3.a capture library has been provided to allow
   application developers to capture data and merge into the profiler stream.
 • The recording and viewing API has been redesigned and improved.
 • Sysprof has been backported to support GTK 3.22 and GLib 2.50.
 • Support for passing file-descriptors has been added to allow profiling
   integration with GNOME Shell, GJS, and GTK profilers.
 • New API to allow integration with external tooling that spawns applications
   is provided so that environment and arguments may be modified.
 • A new re-record feature has been added.
 • The capture format can now store log messages, metadata, and file content.
 • A new org.gnome.Sysprof3 daemon has been added, which is written using
   GDBus instead of libsystemd. This may improve portability to some
   distributions.
 • The portability of Sysprof to non-Linux systems has been improved, however
   many recording features are still not available on non-Linux platforms.
 • A new org.gnome.Sysprof3.Profiler XML D-Bus interface is provided for
   tooling that wants to export Sysprof content via D-Bus.
 • Various new capture sources have been provided.
 • sysprofd also implements a compat org.gnome.Sysprof2 D-Bus end-point
   for older clients.
 • Translation updates

Happy Profiling,

-- Christian

