2026-06-05 lttng-tools 2.15.1 (National Fish and Chip Day)
	* Fix: common: enable-event MI emits duplicate exclusions element
	* Fix: lttng: reclaim-memory MI emits generic "channels" element
	* Fix: common: MI XSD names snapshot record action "record-output"
	* Fix: common: MI XSD rejects add-context per-context success element
	* Fix: common: MI XSD names start/stop-session actions without "_session"
	* Fix: common: stop-session action serialized as start-session in MI
	* Fix: common: lttng client abort when serializing rotate-session action
	* tests: fix: lttng-sessiond abort when using libkmod
	* Fix: sessiond: default kernel probe list missing 9p and dma-fence
	* Fix: common: lockfile fd leaks into consumerd via fork+exec
	* Fix: tests: Do not use both  `-p` and `-t` together for mktemp
	* Fix: handle failures to find pid cmdline
	* fix: '-Wsuggest-override' only valid for C++ warnings
	* lttng: handle popt parsing errors
	* doc: lttng-view(1): remove non-existent '--session' option
	* Fix: common: drop :: qualifier on *_CLOEXEC for musl compatibility
	* Fix: common: uri_compare compares uninitialized union tail
	* tests: Fix platform uname split when release contains more periods
	* Fix: tests: serial runner produces empty log files for hanging tests
	* Fix: tests: consumer pause testpoint FIFO EOF mishandled as error
	* tests: Check kernel release to determine delay table parameters
	* consumerd: Fix segfault when starting metadata switch timer
	* Fix: consumerd: pause testpoint not re-evaluated after poll()
	* Fix: lttng: vague error reporting in reclaim-memory command
	* Fix: relayd: live viewer reads wrong chunk after per-PID clear
	* Fix: tests: undefined CHANNEL_NAME in rotation notification test
	* Fix: tests: race in rotation notification test
	* tests: Fix rotation notification test when tmpdir contains symlink
	* tests: add notification/test_rotation to the regression test list
	* tests: add test_condition to the unit test list
	* sessiond: Fix: Deadlock when handling notification overflow
	* tests: Disable watchdog-timer for blocking tests
	* common: Escape newlines when printing CPU mask
	* Fix: common: Improve cpu mask error checking
	* Fix: parsing CPU mask with no separators
	* common: Split CPU mask parsing from reading
	* Fix: lttng: truncated session name when it contains spaces
	* Fix: relayd: wrong session id used in trace chunk existence check
	* Fix: tests: swapped allowed value types for process attribute trackers
	* Fix: tests: missing shell quoting of filter expressions in test harness
	* Fix: sessiond: abort when loading an agent session configuration
	* tests: Handle WaitTraceTestApplications that crash early with no stderr
	* tests: fix preload of liblttng-ust-ctl-fuzz.so with '-Wl,-z,now'
	* Fix: various typos in license identifiers
	* build: Fix enable-werror help string indentation
	* build: Fix api-doc help string indentation
	* Fix: Include 32-bit kernel trace expect file in dist
	* Fix: tests: Set mip version for python defined bt graphs explicitly

2026-02-12 lttng-tools 2.15.0
	* Fix: ust-consumerd: flush hangs on stalled channel without watchdog timer
	* Fix: consumerd: link failure on 32-bit architectures due to missing libatomic
	* tests/lttng.py: Honor timeout_s in _run_cmd
	* Clean-up: tests: fix clang-tidy `const` warning
	* Fix: tests: use portable format specifier in test_poller
	* Fix: tests: use portable format specifier for int64_t in tap
	* Fix: consumerd: silence -Wstringop-truncation warnings
	* Fix: common: remove ambiguous operator[] from c_string_view
	* tests: Exclude `.tmp_new_chunk` from rotation trace size calculation
	* Fix: build failure of gen-many-event-classes with `--code-coverage`
	* Tests: fix Automake warning about MANY_EVENTS_GENERATED_SOURCES
	* Tests: regen-metadata: add regression test for regenerate and rotation race
	* tests: Add test to ensure a new viewer doesn't see old events
	* tests: Allow setting session live timer to a non-default value
	* doc: generate man pages in section subdirectories
	* Fix: sessiond: racy metadata update during re-generation
	* Fix: consumerd: metadata regeneration and rotation race
	* Refactor: consumerd: inline metadata version change handling
	* Refactor: consumerd: track tracer metadata coherency indicator support
	* Refactor: consumerd: rename ust_metadata_pushed to ust_metadata_cache_consumed
	* Refactor: consumerd: add has_network_destination() helper method
	* tests: Validate that trace formats handle fields with empty names
	* sessiond: Relax CTF 1.8 TSDL identifier validation
	* tests: Check if an exception is being handled for env preservation

2025-12-19 | lttng-tools 2.15.0-rc1 (National Ugly Christmas Sweater Day)

WHAT'S NEW?
━━━━━━━━━━━
New features and changes in LTTng 2.15:

General:
    • CTF 2 (Common Trace Format) is now the default trace format for
      all newly created recording sessions. Babeltrace 2 supports CTF 2
      since version 2.1 (January 2025).

      Choose the trace format for each recording session with the new
      `--trace-format` option of the lttng-create(1) command:

          $ lttng create my-session --trace-format=ctf-1.8

      To keep the default set to CTF 1.8 for your setup, use the new
      `--default-trace-format` option of lttng-sessiond(8), or set
      the `LTTNG_SESSIOND_DEFAULT_TRACE_FORMAT` environment variable.

      CTF 2 has many benefits over CTF 1.8: easier decoding (JSON-based
      metadata), cleaner trace streaming (RS byte delimiters), and
      future support for user-defined attributes and broader type
      support.

    • A new channel memory reclaim operation, exclusively available for
      user space channels, can free memory used by eligible sub-buffers
      by deallocating their backing memory when no longer needed.

      Automatic reclaim:
          Configure a per-channel, automatic reclaim policy which
          periodically tries to reclaim memory for sub-buffers older
          than a given age, or as soon as they're consumed, with the
          new `--auto-reclaim-memory` option of lttng-enable-channel(1).

      Immediate reclaim:
          The new lttng-reclaim-memory(1) command reclaims memory
          immediately for eligible sub-buffers of one or more channels.

    • Choose the buffer preallocation policy of a user space channel
      with the new `--buffer-preallocation` option of
      lttng-enable-channel(1). LTTng can either preallocate all ring
      buffer memory up front (pre-2.15 behavior; still the default) or
      allocate as needed.

    • A new watchdog timer mechanism monitors user space ring-buffers
      and makes stalled sub-buffers (from terminated applications)
      consumable again. Enabled by default; control with the new
      `--watchdog-timer` option of lttng-enable-channel(1).

    • The lttng-list(1) command output has been completely revamped with
      a clean tree structure and terminal color support. New options:
      `--style`, `--no-truncate`, and `--mem-usage` for memory usage
      reporting per channel.

    • The lttng-status(1) command now accepts the same options as
      lttng-list(1).

    • New trigger conditions for lttng-add-trigger(1):
      `channel-buffer-usage-ge`, `channel-buffer-usage-le`,
      `session-consumed-size-ge`, `session-rotation-starts`, and
      `session-rotation-finishes`.

    • The lttng(1) commands won't emit multi-byte UTF-8 sequences when
      the `LTTNG_NO_UTF_8` environment variable is set to `1`.

    • The lttng(1) Zsh completion function now fully completes the
      `add-trigger` command.

    • Both lttng-sessiond(8) and lttng-relayd(8) now support systemd's
      sd_notify protocol for READY and STOPPING notifications. This
      enables proper synchronization of service dependencies on
      systemd-based systems.

liblttng-ctl:
    • lttng_session_descriptor_set_trace_format(): set the trace format
      of a recording session descriptor.

    • lttng_reclaim_channel_memory(): immediately reclaim user space
      channel memory for eligible sub-buffers.

    • lttng_channel_set_automatic_memory_reclamation_policy() and
      lttng_channel_get_automatic_memory_reclamation_policy(): set and
      get the automatic memory reclamation policy of a channel.

    • lttng_channel_set_preallocation_policy() and
      lttng_channel_get_preallocation_policy(): set and get the buffer
      preallocation policy of a channel.

    • lttng_channel_set_watchdog_timer_interval() and
      lttng_channel_get_watchdog_timer_interval(): set and get the
      watchdog timer period of a channel.

    • New data stream info API for querying CPU ID and memory usage:
      lttng_channel_get_data_stream_info_sets() and related functions.

Compatibility:
    • The internal v2.15 communication protocol between LTTng-tools and
      LTTng-UST is incompatible with LTTng 2.14: you cannot use
      LTTng-tools 2.15 with LTTng-UST 2.14 and vice versa.

    • Minimum Linux kernel version is now 4.4.0 (was 2.6.30).

    • Minimum Python version for tests is now 3.5 (was 3.4).

    • MI schema version bumped to 4.2.

