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.

