Thread

  1. PG20 Minimum Dependency Thread

    Jacob Champion <jacob.champion@enterprisedb.com> — 2026-06-18T20:01:47Z

    ...because I don't see one yet, and upcoming things like the Python
    test port are going to need clarity in advance, and I wanna stir up
    trouble right before I go eat lunch.
    
    = Background =
    
    The most recent (mailing list) discussions I am aware of are at
    
    [1] https://postgr.es/m/16098.1745079444%40sss.pgh.pa.us (Python)
    [2] https://postgr.es/m/42e13eb0-862a-441e-8d84-4f0fd5f6def0%40eisentraut.org
    (Meson)
    
    The discussion in [2] ended with a growing consensus that we need _a_
    policy, and Andres proposed a framework of one, but I don't think one
    was actually chosen. (If I missed that somewhere on the list, or at an
    in-person meeting, I apologize. Most of this email is moot if that's
    the case.)
    
    The partial list of dependency versions for PG19 is here, and if you
    know what's pinning one of the blank rows, please consider filling it
    in:
    
         https://wiki.postgresql.org/wiki/Minimum_Dependency_Versions
    
    But I intend this thread to be about PG20, which will release next
    year (2027) and will presumably be supported until 2032.
    
    = My Votes =
    
    For PG20, I want to drop support for RHEL 8 (and prior -- we still
    have CentOS 7 machines testing HEAD in the buildfarm).
    
    For me, the most important reason is OpenSSL, because upstream has
    already reached 4.0 and we still can't drop code written for 1.1.1. An
    additional reason is Python 3.6, which was EOL in 2021; I'd like to
    avoid pinning that for another six(!) years. It looks like ninja/meson
    get a boost too.
    
    RHEL 8 users in the paid Maintenance Support window (ending 2029) will
    still be able to use PG19 for its entire lifetime. And the maintenance
    window for RHEL 7 is long gone. People can update their machines if
    they want shiny new features.
    
    Cherry-picking from Tom's email on the topic in [2], which may not be
    representative of his opinion today:
    
    > Maybe we could compromise on
    >
    >   If the expected PG major version release date is more than N years
    >   after the end of full support for an LTS distribution, that OS
    >   version does not need to be supported.
    >
    > Defining it relative to "full support" also reduces questions about
    > whether extended support means the same thing to every LTS vendor.
    >
    > If we set N=2 then we could drop RHEL8 support in PG 19; if we
    > set N=3 then it'd be PG 20 (measuring from end of full support
    > in May 2024).  I'd be okay with either outcome.
    
    I propose that we adopt N=2. I think we should have stopped supporting
    RHEL8 this year (our yum repos won't be shipping PG19 builds for
    RHEL8). But I won't complain if consensus forms on N=3; I think it's
    just important that we arrive at some agreement on getting rid of RHEL
    8.
    
    --Jacob
    
    
    
    
  2. Re: PG20 Minimum Dependency Thread

    Daniel Gustafsson <daniel@yesql.se> — 2026-06-18T21:05:53Z

    > On 18 Jun 2026, at 22:01, Jacob Champion <jacob.champion@enterprisedb.com> wrote:
    
    > For me, the most important reason is OpenSSL, because upstream has
    > already reached 4.0 and we still can't drop code written for 1.1.1.
    
    The entire OpenSSL 3.x line will be down to just 3.5 LTS by the time we ship
    v20.
    
    One complicating factor when it comes to OpenSSL is that we need the 1.1.1 API
    support in order to keep LibreSSL supported.  I have a patch almost done for
    separating the two such that we can move them independently of each other, but
    summer vacation and other $life stuff delayed it.  I'll try to get it posted
    shortly so that we can start the discussion around that. 
    
    --
    Daniel Gustafsson
    
    
    
    
    
  3. Re: PG20 Minimum Dependency Thread

    Tom Lane <tgl@sss.pgh.pa.us> — 2026-06-18T21:22:25Z

    Jacob Champion <jacob.champion@enterprisedb.com> writes:
    > The most recent (mailing list) discussions I am aware of are at
    > [1] https://postgr.es/m/16098.1745079444%40sss.pgh.pa.us (Python)
    > [2] https://postgr.es/m/42e13eb0-862a-441e-8d84-4f0fd5f6def0%40eisentraut.org
    > (Meson)
    
    > The discussion in [2] ended with a growing consensus that we need _a_
    > policy, and Andres proposed a framework of one, but I don't think one
    > was actually chosen. (If I missed that somewhere on the list, or at an
    > in-person meeting, I apologize. Most of this email is moot if that's
    > the case.)
    
    FWIW, my impression of that thread was that we had agreed on pretty
    much everything except the value of N; if there was some later meeting
    that discussed it further, I wasn't there.  Concretely, Andres said:
    
    >> I think we should have a policy roughly along these lines:
    >> 1) We don't remove support for OS versions unless they block something
    >> 2) We don't remove support for OS versions in minor releases
    >> 3) If support for an old OS version makes something harder, it can be removed,
    >>    if and only if the OS is older than $age_criteria.
    >> 4) As an alternative to removing OS support via 3), somebody desiring
    >>    continued support for an older OS version can instead do the work to
    >>    develop an alternative to removal of support within $reasonable_timeframe
    
    and we later agreed on my wording for $age_criteria:
    
    >> If the expected PG major version release date is more than N years
    >> after the end of full support for an LTS distribution, that OS
    >> version does not need to be supported.
    >> Defining it relative to "full support" also reduces questions about
    >> whether extended support means the same thing to every LTS vendor.
    >> If we set N=2 then we could drop RHEL8 support in PG 19; if we
    >> set N=3 then it'd be PG 20 (measuring from end of full support
    >> in May 2024).  I'd be okay with either outcome.
    
    (hmm, I guess we didn't fill in $reasonable_timeframe, but that is
    probably going to be case-by-case anyway)
    
    > I propose that we adopt N=2. I think we should have stopped supporting
    > RHEL8 this year (our yum repos won't be shipping PG19 builds for
    > RHEL8). But I won't complain if consensus forms on N=3; I think it's
    > just important that we arrive at some agreement on getting rid of RHEL
    > 8.
    
    It's too late to change anything for PG19, I think, so it kind of doesn't
    matter today whether we set N to 2 or 3.  But I'd vote for N=3.  That
    seems to match up better with LTS extended-support policies.
    
    (I'm actually quite content with yum.pg.o cutting off support for
    RHEL8 a year earlier than we stop supporting it at the source-code
    level.  For one thing, we can pay attention to how much blowback
    Devrim gets before we decide whether it's an okay source-code
    change...)
    
    			regards, tom lane
    
    
    
    
  4. Re: PG20 Minimum Dependency Thread

    Jacob Champion <jacob.champion@enterprisedb.com> — 2026-06-18T21:32:23Z

    On Thu, Jun 18, 2026 at 2:06 PM Daniel Gustafsson <daniel@yesql.se> wrote:
    > The entire OpenSSL 3.x line will be down to just 3.5 LTS by the time we ship
    > v20.
    
    Yeah. Though RH have been apparently shipping breaking updates to
    OpenSSL in RHEL 9+, so the conversation may look completely different
    when we get to those EOLs.
    
    > One complicating factor when it comes to OpenSSL is that we need the 1.1.1 API
    > support in order to keep LibreSSL supported.
    
    True -- but I think that even if your split didn't land, surrounding
    the necessary code with `#ifdef LIBRESSL_VERSION_NUMBER` would be a
    big maintainability upgrade compared to "all code paths must support
    both OpenSSL 1.1.1 _and_ LibreSSL which is
    kind-of-not-really-the-same".
    
    --Jacob
    
    
    
    
  5. Re: PG20 Minimum Dependency Thread

    Jacob Champion <jacob.champion@enterprisedb.com> — 2026-06-18T21:42:50Z

    On Thu, Jun 18, 2026 at 2:22 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    > FWIW, my impression of that thread was that we had agreed on pretty
    > much everything except the value of N; if there was some later meeting
    > that discussed it further, I wasn't there.
    
    Cool.
    
    > (hmm, I guess we didn't fill in $reasonable_timeframe, but that is
    > probably going to be case-by-case anyway)
    
    Sure. The first instance, if/when it happens, would probably be a trendsetter.
    
    > It's too late to change anything for PG19, I think,
    
    (right -- I didn't intend to propose a retroactive change, sorry for
    any confusion)
    
    > so it kind of doesn't
    > matter today whether we set N to 2 or 3.
    
    I think it still matters for impending decisions. For example, we're
    about to engineer how to backport a sliding window of Python across
    the sliding window of backbranch support. Shorter windows tie our
    hands less.
    
    But I agree that if that other thread is otherwise settled, we've
    effectively declared that RHEL 9 is the minimum for PG20, and that
    would make me very happy.
    
    Thanks,
    --Jacob
    
    
    
    
  6. Re: PG20 Minimum Dependency Thread

    Tom Lane <tgl@sss.pgh.pa.us> — 2026-06-18T22:26:06Z

    Jacob Champion <jacob.champion@enterprisedb.com> writes:
    > On Thu, Jun 18, 2026 at 2:22 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    >> so it kind of doesn't
    >> matter today whether we set N to 2 or 3.
    
    > I think it still matters for impending decisions. For example, we're
    > about to engineer how to backport a sliding window of Python across
    > the sliding window of backbranch support. Shorter windows tie our
    > hands less.
    
    I dunno.  One of the points of the allegedly-agreed-to policy
    framework was
    
    >>> 2) We don't remove support for OS versions in minor releases
    
    A strict reading of that is that a released branch can't increase
    its minimum required Python version.
    
    Now maybe we can finesse that, like "you can build PL/Python and
    associated contrib modules with Python >= X, but if you want to
    run these optional tests, they require Python >= Y".  Not sure
    how comfortable I am with that.  I definitely don't want to get
    into a situation where we require buildfarm owners to have
    Python >= Y installed, because then we will not have any testing
    that proves we didn't break the other part.  (So we'd need a
    runtime check to skip these tests on too-old Python.)
    
    In any case, if we do make such a decision, most likely we'd
    use the same value of Y for all the active back branches.
    So I think the value of N in the support policy really
    only matters for future version-cutoff decisions.
    
    			regards, tom lane
    
    
    
    
  7. Re: PG20 Minimum Dependency Thread

    Tom Lane <tgl@sss.pgh.pa.us> — 2026-06-18T23:35:14Z

    I wrote:
    > Now maybe we can finesse that, like "you can build PL/Python and
    > associated contrib modules with Python >= X, but if you want to
    > run these optional tests, they require Python >= Y".  Not sure
    > how comfortable I am with that.  I definitely don't want to get
    > into a situation where we require buildfarm owners to have
    > Python >= Y installed, because then we will not have any testing
    > that proves we didn't break the other part.  (So we'd need a
    > runtime check to skip these tests on too-old Python.)
    
    Granting that our pytest framework should silently give up if
    Python is too old, the decision of which minimum version to target
    is really kind of independent of what PL/Python does.  It becomes
    a tradeoff of ease of coding versus "how many platforms do you want
    this test to be able to run on?".  I have no insight on what the
    coding benefits are of different Python versions, but I do have
    this freshly-scraped data about how many buildfarm members are
    reporting which major Python version:
    
          3 3.5
         39 3.6
          5 3.7
          5 3.8
         39 3.9
          6 3.10
         21 3.11
         45 3.12
         48 3.13
         12 3.14
          2 3.15
    
    Just eyeing that, it seems like 3.9 or 3.11 would be choices that
    still allow most animals to run the tests.
    
    			regards, tom lane
    
    
    
    
  8. Re: PG20 Minimum Dependency Thread

    Tristan Partin <tristan@partin.io> — 2026-06-19T04:49:18Z

    On Thu Jun 18, 2026 at 6:35 PM CDT, Tom Lane wrote:
    > I wrote:
    >> Now maybe we can finesse that, like "you can build PL/Python and
    >> associated contrib modules with Python >= X, but if you want to
    >> run these optional tests, they require Python >= Y".  Not sure
    >> how comfortable I am with that.  I definitely don't want to get
    >> into a situation where we require buildfarm owners to have
    >> Python >= Y installed, because then we will not have any testing
    >> that proves we didn't break the other part.  (So we'd need a
    >> runtime check to skip these tests on too-old Python.)
    >
    > Granting that our pytest framework should silently give up if
    > Python is too old, the decision of which minimum version to target
    > is really kind of independent of what PL/Python does.  It becomes
    > a tradeoff of ease of coding versus "how many platforms do you want
    > this test to be able to run on?".  I have no insight on what the
    > coding benefits are of different Python versions, but I do have
    > this freshly-scraped data about how many buildfarm members are
    > reporting which major Python version:
    >
    >       3 3.5
    >      39 3.6
    >       5 3.7
    >       5 3.8
    >      39 3.9
    >       6 3.10
    >      21 3.11
    >      45 3.12
    >      48 3.13
    >      12 3.14
    >       2 3.15
    >
    > Just eyeing that, it seems like 3.9 or 3.11 would be choices that
    > still allow most animals to run the tests.
    
    The latest versions of pytest require Python >= 3.10. In theory, we
    could pin to an older pytest version.
    
    For what it's worth, the latest version of Meson supports Python >=
    3.7. I wonder if we should tie our Meson and pytest versions together 
    such that they support the same Python version.
    
    -- 
    Tristan Partin
    PostgreSQL Contributors Team
    AWS (https://aws.amazon.com)
    
    
    
    
  9. Re: PG20 Minimum Dependency Thread

    Andrew Dunstan <andrew@dunslane.net> — 2026-06-19T13:39:20Z

    On 2026-06-18 Th 6:26 PM, Tom Lane wrote:
    > Jacob Champion <jacob.champion@enterprisedb.com> writes:
    >> On Thu, Jun 18, 2026 at 2:22 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    >>> so it kind of doesn't
    >>> matter today whether we set N to 2 or 3.
    >> I think it still matters for impending decisions. For example, we're
    >> about to engineer how to backport a sliding window of Python across
    >> the sliding window of backbranch support. Shorter windows tie our
    >> hands less.
    > I dunno.  One of the points of the allegedly-agreed-to policy
    > framework was
    >
    >>>> 2) We don't remove support for OS versions in minor releases
    > A strict reading of that is that a released branch can't increase
    > its minimum required Python version.
    >
    > Now maybe we can finesse that, like "you can build PL/Python and
    > associated contrib modules with Python >= X, but if you want to
    > run these optional tests, they require Python >= Y".  Not sure
    > how comfortable I am with that.  I definitely don't want to get
    > into a situation where we require buildfarm owners to have
    > Python >= Y installed, because then we will not have any testing
    > that proves we didn't break the other part.  (So we'd need a
    > runtime check to skip these tests on too-old Python.)
    >
    > In any case, if we do make such a decision, most likely we'd
    > use the same value of Y for all the active back branches.
    > So I think the value of N in the support policy really
    > only matters for future version-cutoff decisions.
    >
    > 			
    
    
    Buildfarm owners are going to have to opt in to pytest, in the same way 
    that today they have to opt in to TAP tests, and in the same way there 
    will be up front tests to check that what's installed meets the 
    requirements. We could stick with X = 3.6 and make Y = 3.8.
    
    
    cheers
    
    
    andrew
    
    
    --
    Andrew Dunstan
    EDB: https://www.enterprisedb.com
    
    
    
    
    
  10. Re: PG20 Minimum Dependency Thread

    Jacob Champion <jacob.champion@enterprisedb.com> — 2026-06-19T18:18:51Z

    On Thu, Jun 18, 2026 at 4:35 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    > Granting that our pytest framework should silently give up if
    > Python is too old, the decision of which minimum version to target
    > is really kind of independent of what PL/Python does.  It becomes
    > a tradeoff of ease of coding versus "how many platforms do you want
    > this test to be able to run on?".
    
    Right.
    
    > I have no insight on what the
    > coding benefits are of different Python versions, but I do have
    > this freshly-scraped data about how many buildfarm members are
    > reporting which major Python version:
    
    wrasse too (Python 3.4.3, Solaris 11.3), which tests PG14-16.
    
    In fact I want to use wrasse as a case study here...
    
    > >>> 2) We don't remove support for OS versions in minor releases
    > A strict reading of that is that a released branch can't increase
    > its minimum required Python version.
    
    Solaris 11.3 was released in October 2015, with Python 2.6, 2.7, and
    3.6. Standard support ended in 2021. So with your stricter reading of
    the OS support policy, and N=3, it's lucky that we happened to drop
    Python 2 support already. Otherwise, Solaris 11.3 would pin Python 2.6
    support until PG17 drops off the matrix in 2028, fifteen years after
    end of life.
    
    I think that's patently unreasonable. We should either not adopt that
    stricter reading, or else be a lot more proactive in pushing our
    minimum dependency list forwards for every release, which is going to
    feel punitive.
    
    (Oracle themselves removed Python 2.6 support in the middle of their
    11.3 support cycle. The Solaris 11.4 standard support window is now
    ten years (2021-2031), and the versions of Python they support today
    do not overlap at all with the Python versions they supported at 11.4
    GA.)
    
    --Jacob
    
    
    
    
  11. Re: PG20 Minimum Dependency Thread

    Peter Eisentraut <peter@eisentraut.org> — 2026-06-20T13:16:04Z

    On 18.06.26 22:01, Jacob Champion wrote:
    > ...because I don't see one yet, and upcoming things like the Python
    > test port are going to need clarity in advance, and I wanna stir up
    > trouble right before I go eat lunch.
    > 
    > = Background =
    > 
    > The most recent (mailing list) discussions I am aware of are at
    > 
    > [1] https://postgr.es/m/16098.1745079444%40sss.pgh.pa.us (Python)
    > [2] https://postgr.es/m/42e13eb0-862a-441e-8d84-4f0fd5f6def0%40eisentraut.org
    > (Meson)
    
    Here is another relevant thread:
    
    https://www.postgresql.org/message-id/flat/CA+hUKGL7trhWiJ4qxpksBztMMTWDyPnP1QN+Lq341V7QL775DA@mail.gmail.com
    
    This is now "ready for committer" for PG20 and would de-support RHEL 7.
    
    Another unrelated data point is that making PL/Python thread-safe (at 
    least in the way I have worked out) would require Python 3.10.
    
    (But RHEL provides a supported way to install newer Python versions, so 
    this doesn't necessarily have to mean de-supporting a given RHEL version 
    altogether.  I don't have an opinion on that at this time.)
    
    
    
    
    
  12. Re: PG20 Minimum Dependency Thread

    Zsolt Parragi <zsolt.parragi@percona.com> — 2026-06-21T07:57:45Z

    > But RHEL provides a supported way to install newer Python versions, so
    > this doesn't necessarily have to mean de-supporting a given RHEL version
    > altogether. I don't have an opinion on that at this time
    
    That's possible on most (all?) platforms (pyenv/asdf/uv/mise/...). All
    with a question mark because I have no idea which of these would work
    on solaris, but some of them are pure bash scripts so those should
    work. (and that ignores windows, but that also shouldn't be an issue
    generally). These would be per user custom built pythons, so they
    would only work with the different plpython/pytest python approach,
    but would allow using the latest python for the test suite on all
    platforms.
    
    
    
    
  13. Re: PG20 Minimum Dependency Thread

    Andrew Dunstan <andrew@dunslane.net> — 2026-06-21T13:23:38Z

    On 2026-06-21 Su 3:57 AM, Zsolt Parragi wrote:
    >> But RHEL provides a supported way to install newer Python versions, so
    >> this doesn't necessarily have to mean de-supporting a given RHEL version
    >> altogether. I don't have an opinion on that at this time
    > That's possible on most (all?) platforms (pyenv/asdf/uv/mise/...). All
    > with a question mark because I have no idea which of these would work
    > on solaris, but some of them are pure bash scripts so those should
    > work. (and that ignores windows, but that also shouldn't be an issue
    > generally). These would be per user custom built pythons, so they
    > would only work with the different plpython/pytest python approach,
    > but would allow using the latest python for the test suite on all
    > platforms.
    >
    >
    
    I think the idea is that we should be able to build with what the distro 
    itself supports.
    
    
    cheers
    
    
    andrew
    
    
    --
    Andrew Dunstan
    EDB: https://www.enterprisedb.com
    
    
    
    
    
  14. Re: PG20 Minimum Dependency Thread

    Tom Lane <tgl@sss.pgh.pa.us> — 2026-06-21T14:02:49Z

    Andrew Dunstan <andrew@dunslane.net> writes:
    > On 2026-06-21 Su 3:57 AM, Zsolt Parragi wrote:
    >> That's possible on most (all?) platforms (pyenv/asdf/uv/mise/...). All
    >> with a question mark because I have no idea which of these would work
    >> on solaris, but some of them are pure bash scripts so those should
    >> work. (and that ignores windows, but that also shouldn't be an issue
    >> generally). These would be per user custom built pythons, so they
    >> would only work with the different plpython/pytest python approach,
    >> but would allow using the latest python for the test suite on all
    >> platforms.
    
    > I think the idea is that we should be able to build with what the distro 
    > itself supports.
    
    Quite honestly, if we demand that buildfarm owners install some
    version of python that their platform doesn't package, they will
    simply not enable pytest testing.  Care and feeding of a BF
    animal is already a nontrivial investment of effort.  I'm especially
    not believing that people will install two different python versions
    in support of this.
    
    			regards, tom lane
    
    
    
    
  15. Re: PG20 Minimum Dependency Thread

    Jacob Champion <jacob.champion@enterprisedb.com> — 2026-06-22T20:50:37Z

    On Sun, Jun 21, 2026 at 7:03 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
    > Andrew Dunstan <andrew@dunslane.net> writes:
    > > I think the idea is that we should be able to build with what the distro
    > > itself supports.
    >
    > Quite honestly, if we demand that buildfarm owners install some
    > version of python that their platform doesn't package
    
    I know you're responding to a bunch of people arguing different
    things, but you and I are in agreement that when it comes to the
    *core* testing framework, an out-of-distro Python installation
    requirement is not what we should be targeting for "supported
    platforms". And I don't think we're going to need that.
    
    > I'm especially
    > not believing that people will install two different python versions
    > in support of this.
    
    I have a much harder time agreeing with this. The end user experience
    we're going for is
    
        $ sudo dnf install python3.12-pytest
        $ meson configure -DPYTEST=pytest-3.12
        $ ninja reconfigure
        ...
        pytest                   : /usr/bin/pytest-3.12 7.4.2
        ...
        plpython                 : YES 3.9
    
    That's not a burden. I doubt we'd be able to achieve that right away
    with all of the PG15 supported platforms, but it's hard to believe we
    couldn't get there eventually. (The above is from Rocky 9.)
    
    --Jacob
    
    
    
    
  16. Re: PG20 Minimum Dependency Thread

    Jacob Champion <jacob.champion@enterprisedb.com> — 2026-07-08T17:29:45Z

    On Fri, Jun 19, 2026 at 11:18 AM Jacob Champion
    <jacob.champion@enterprisedb.com> wrote:
    > Solaris 11.3 was released in October 2015, with Python 2.6, 2.7, and
    > 3.6. Standard support ended in 2021. So with your stricter reading of
    > the OS support policy, and N=3, it's lucky that we happened to drop
    > Python 2 support already. Otherwise, Solaris 11.3 would pin Python 2.6
    > support until PG17 drops off the matrix in 2028, fifteen years after
    > end of life.
    
    I pulled some data from the endoflife.date project [1] (which I
    haven't completely verified yet, but seems to be at least somewhat
    accurate). For a presumed PG20 release on 2027-09-23, our trailing
    edge of distro support might look something like below. Conclusions up
    front:
    
    OpenSSL 1.1.1 is a problem. With N=2, we'd drop SLES 12.5, which
    appears to be the final non-Oracle barrier to exit. (And I think we
    should just declare 1.1.1 unsupported for PG20, regardless of N, but
    in any case this gives weight to my preference of N=2.)
    
    I additionally think we should take Solaris and Oracle Linux out of
    the standard classification of "LTS". People who want to pay Oracle
    for extended support of out-of-date Postgres versions are free to do
    so without tying our development to RHEL8-vintage (or older)
    dependencies for the next seven(!) years, or forcing us to lock into
    an arbitrary snapshot of the Solaris rolling releases. We already
    don't support OL7 because of OpenSSL 1.0.2.
    
    If we did that, Python 3.9 looks within reach for PG20, which seems
    reasonable considering it'll already have been dead for two years. (It
    looks like LTS support for a spectrum of Pythons is now the norm
    rather than the exception, and we should start making decisions
    accordingly.) That'd only be a roadbump for our SUSE buildfarm owners,
    who'd need to install an additional package beside the base Python 3.6
    in order to run Python scripts.
    
    = LTS Distros (N=3) =
    
    Amazon Linux 2023 (End of Service 2027, End of Life 2029)
    - Python 3.9 to 3.14+
    - OpenSSL 3.0
    Debian 12 Bookworm (EoS 2026, EoL 2028)
    - Python 3.11
    - OpenSSL 3.0
    Oracle Linux 7 (EoS 2024-12, EoL 2028)
    - Python 3.6 to 3.8
    - OpenSSL 1.0.2 (!!)
    RHEL/Rocky/Alma/CentOS Stream 9 (EoS 2027, EoL 2032/2035)
    - Python 3.9 to 3.12+
    - OpenSSL 3.0 (3.2? 3.5?)
    SLES 12.5 (EoS 2024-10, EoL 2027)
    - Python 3.4 to 3.6
    - OpenSSL 1.1.1 (!)
    Solaris 11.4 (EoS 2031, EoL 2037)
    - Python 3.9 to 3.11 (rolling?)
    - OpenSSL 3.0 (3.5 planned?)
    Ubuntu 22.04 Jammy (EoS 2024-09, EoL 2027/2032)
    - Python 3.10 to 3.11
    - OpenSSL 3.0
    Windows 11 24H2 Enterprise (EoS 2027, EoL 2029/2034)
    Windows Server 2022 (EoS 2026, EoL 2031)
    
    = LTS Distros (N=2) =
    
    Only a few change:
    
    Oracle Linux 8 (EoS 2029, EoL 2032)
    - Python 3.8 to 3.12+
    - OpenSSL 1.1.1 (!)
    SLES 15.6 (EoS 2025-12, EoL 2028)
    - Python 3.6 to 3.12+
    - OpenSSL 3.1
    Ubuntu 24.04 Noble (EoS 2029, EoL 2036)
    - Python 3.12
    - OpenSSL 3.0
    
    = Non-LTS Distros (N=0?) =
    
    I don't think this was explicitly discussed, but hopefully no one
    feels the need to guarantee support for non-LTS distributions that go
    EoL before we even release. (I.e. N is effectively zero for those
    distros.) But buildfarm operators still need some baseline, and here's
    what I think they could be for PG20:
    
    AIX 7.2 TL5 (EoL TBD?)
    - Python 3.10+ (?)
    - OpenSSL 3.0
    Alpine 3.23 (EoL 2027-11)
    - Python 3.12
    - OpenSSL 3.5
    Fedora 45 (EoL 2027-11)
    - probably Python 3.15
    - probably OpenSSL 4.0
    FreeBSD 14.x (EoL 2028)
    - Python 3.11+
    - OpenSSL 3.0
    macOS 15 (Sequoia) (EoL 2027-09)
    NetBSD 10.x (EoL TBD)
    - Python 3.11 to 3.14
    - OpenSSL 3.0
    OpenBSD 8.0 (EoL TBD)
    - Python 3.11 to 3.14
    - LibreSSL 4.4
    OpenIndiana Hipster 2027.x (EoL TBD)
    - probably Python 3.14+
    - probably OpenSSL 4.0
    OpenSUSE Leap 16.0 (EoL 2027-10)
    - Python 3.13
    - OpenSSL 3.5
    
    Thanks,
    --Jacob
    
    [1] https://github.com/endoflife-date/endoflife.date