.. _versioning:

**********
Versioning
**********

Release support
===============

.. list-table::
   :header-rows: 1

   * - Release
     - :ref:`Support level<versioning_support_levels>`
     - Minimum Datadog Agent
   * - ``<1``
     - :ref:`End of Life<versioning_support_eol>`
     -
   * - ``>=1.0,<2``
     - :ref:`Maintenance<versioning_support_maintenance>`
     - 7.28
   * - ``>=2.0,<3``
     - :ref:`General Availability<versioning_support_ga>`
     - 7.28

.. _versioning_support_levels:

Support levels
==============

.. list-table::
   :header-rows: 1

   * - Level
     - Policy

       .. _versioning_support_ga:
   * - General Availability (GA)
     - Receives new features, bug fixes, and security fixes. Fixes are backported to the three most recent minor releases.

       .. _versioning_support_maintenance:
   * - Maintenance
     - Does not receive new features. Receives only those bug fixes and security fixes considered "critical". Fixes are backported to the most recent minor release.

       .. _versioning_support_eol:
   * - End-of-Life (EOL)
     - No support.

.. _versioning_release:

Release versions
================

The non-negative integer components of the **version format** (``v<MAJOR>.<MINOR>.<PATCH>``) are incremented by the criteria:

MAJOR
    Incompatible changes to the public :ref:`interface<versioning_interfaces>`

    Removing support for a :ref:`runtime<versioning_supported_runtimes>`.

MINOR
    Backwards compatible changes to the public :ref:`interface<versioning_interfaces>`

    Any backwards compatible or incompatible changes to the internal :ref:`interface<versioning_interfaces>`

    Adding support for a :ref:`runtime<versioning_supported_runtimes>`

PATCH
    Bug fixes that are backwards compatible

    Security fixes that are backwards compatible

.. _versioning_interfaces:

Interfaces
==========

For semantic versioning purposes, the public API is defined as follows.

The definition of the **public** interface:
    Any module, function, class or attribute that is not internal


The definition of the **internal** interface:
    The ``ddtrace.internal`` module is internal

    The ``ddtrace.vendor`` module is internal

    Any module, function, class or attribute that is prefixed with a single underscore is internal

    Any module, function, class or attribute that is contained within an internal module is internal

Internal code may be subject to breaking changes in bug fix and minor releases.

.. _versioning_supported_runtimes:

Supported runtimes
==================


.. list-table::
   :header-rows: 1

   * - OS
     - CPU
     - Runtime
     - Runtime version
     - Supported Release
   * - Linux
     - x86-64, i686, AArch64
     - CPython
     - 3.7-3.12
     - ``>=2.0,<3``
   * - MacOS
     - Intel, Apple Silicon
     - CPython
     - 3.7-3.12
     - ``>=2.0,<3``
   * - Windows
     - 64bit, 32bit
     - CPython
     - 3.7-3.12
     - ``>=2.0,<3``
   * - Linux
     - x86-64, i686, AArch64
     - CPython
     - 2.7, 3.5-3.11
     - ``>=1.0,<2``
   * - MacOS
     - Intel, Apple Silicon
     - CPython
     - 2.7, 3.5-3.11
     - ``>=1.0,<2``
   * - Windows
     - 64bit, 32bit
     - CPython
     - 2.7, 3.5-3.11
     - ``>=1.0,<2``
