public inbox for [email protected]  
help / color / mirror / Atom feed
PG20 Minimum Dependency Thread
19+ messages / 8 participants
[nested] [flat]

* PG20 Minimum Dependency Thread
@ 2026-06-18 20:01  Jacob Champion <[email protected]>
  0 siblings, 3 replies; 19+ messages in thread

From: Jacob Champion @ 2026-06-18 20:01 UTC (permalink / raw)
  To: PostgreSQL Hackers <[email protected]>

...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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-18 21:05  Daniel Gustafsson <[email protected]>
  parent: Jacob Champion <[email protected]>
  2 siblings, 1 reply; 19+ messages in thread

From: Daniel Gustafsson @ 2026-06-18 21:05 UTC (permalink / raw)
  To: Jacob Champion <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

> On 18 Jun 2026, at 22:01, Jacob Champion <[email protected]> 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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-18 21:22  Tom Lane <[email protected]>
  parent: Jacob Champion <[email protected]>
  2 siblings, 1 reply; 19+ messages in thread

From: Tom Lane @ 2026-06-18 21:22 UTC (permalink / raw)
  To: Jacob Champion <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

Jacob Champion <[email protected]> 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





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-18 21:32  Jacob Champion <[email protected]>
  parent: Daniel Gustafsson <[email protected]>
  0 siblings, 0 replies; 19+ messages in thread

From: Jacob Champion @ 2026-06-18 21:32 UTC (permalink / raw)
  To: Daniel Gustafsson <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On Thu, Jun 18, 2026 at 2:06 PM Daniel Gustafsson <[email protected]> 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





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-18 21:42  Jacob Champion <[email protected]>
  parent: Tom Lane <[email protected]>
  0 siblings, 1 reply; 19+ messages in thread

From: Jacob Champion @ 2026-06-18 21:42 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On Thu, Jun 18, 2026 at 2:22 PM Tom Lane <[email protected]> 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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-18 22:26  Tom Lane <[email protected]>
  parent: Jacob Champion <[email protected]>
  0 siblings, 2 replies; 19+ messages in thread

From: Tom Lane @ 2026-06-18 22:26 UTC (permalink / raw)
  To: Jacob Champion <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

Jacob Champion <[email protected]> writes:
> On Thu, Jun 18, 2026 at 2:22 PM Tom Lane <[email protected]> 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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-18 23:35  Tom Lane <[email protected]>
  parent: Tom Lane <[email protected]>
  1 sibling, 2 replies; 19+ messages in thread

From: Tom Lane @ 2026-06-18 23:35 UTC (permalink / raw)
  To: Jacob Champion <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-19 04:49  Tristan Partin <[email protected]>
  parent: Tom Lane <[email protected]>
  1 sibling, 0 replies; 19+ messages in thread

From: Tristan Partin @ 2026-06-19 04:49 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; Jacob Champion <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

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)






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-19 13:39  Andrew Dunstan <[email protected]>
  parent: Tom Lane <[email protected]>
  1 sibling, 0 replies; 19+ messages in thread

From: Andrew Dunstan @ 2026-06-19 13:39 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; Jacob Champion <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>


On 2026-06-18 Th 6:26 PM, Tom Lane wrote:
> Jacob Champion <[email protected]> writes:
>> On Thu, Jun 18, 2026 at 2:22 PM Tom Lane <[email protected]> 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







^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-19 18:18  Jacob Champion <[email protected]>
  parent: Tom Lane <[email protected]>
  1 sibling, 1 reply; 19+ messages in thread

From: Jacob Champion @ 2026-06-19 18:18 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On Thu, Jun 18, 2026 at 4:35 PM Tom Lane <[email protected]> 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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-20 13:16  Peter Eisentraut <[email protected]>
  parent: Jacob Champion <[email protected]>
  2 siblings, 1 reply; 19+ messages in thread

From: Peter Eisentraut @ 2026-06-20 13:16 UTC (permalink / raw)
  To: Jacob Champion <[email protected]>; PostgreSQL Hackers <[email protected]>

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....

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.)







^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-21 07:57  Zsolt Parragi <[email protected]>
  parent: Peter Eisentraut <[email protected]>
  0 siblings, 1 reply; 19+ messages in thread

From: Zsolt Parragi @ 2026-06-21 07:57 UTC (permalink / raw)
  To: [email protected]

> 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.






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-21 13:23  Andrew Dunstan <[email protected]>
  parent: Zsolt Parragi <[email protected]>
  0 siblings, 1 reply; 19+ messages in thread

From: Andrew Dunstan @ 2026-06-21 13:23 UTC (permalink / raw)
  To: Zsolt Parragi <[email protected]>; [email protected]


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







^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-21 14:02  Tom Lane <[email protected]>
  parent: Andrew Dunstan <[email protected]>
  0 siblings, 1 reply; 19+ messages in thread

From: Tom Lane @ 2026-06-21 14:02 UTC (permalink / raw)
  To: Andrew Dunstan <[email protected]>; +Cc: Zsolt Parragi <[email protected]>; [email protected]

Andrew Dunstan <[email protected]> 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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-06-22 20:50  Jacob Champion <[email protected]>
  parent: Tom Lane <[email protected]>
  0 siblings, 0 replies; 19+ messages in thread

From: Jacob Champion @ 2026-06-22 20:50 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: Andrew Dunstan <[email protected]>; Zsolt Parragi <[email protected]>; [email protected]

On Sun, Jun 21, 2026 at 7:03 AM Tom Lane <[email protected]> wrote:
> Andrew Dunstan <[email protected]> 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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-07-08 17:29  Jacob Champion <[email protected]>
  parent: Jacob Champion <[email protected]>
  0 siblings, 1 reply; 19+ messages in thread

From: Jacob Champion @ 2026-07-08 17:29 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On Fri, Jun 19, 2026 at 11:18 AM Jacob Champion
<[email protected]> 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






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-07-08 18:34  Tom Lane <[email protected]>
  parent: Jacob Champion <[email protected]>
  0 siblings, 1 reply; 19+ messages in thread

From: Tom Lane @ 2026-07-08 18:34 UTC (permalink / raw)
  To: Jacob Champion <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

Jacob Champion <[email protected]> writes:
> RHEL/Rocky/Alma/CentOS Stream 9 (EoS 2027, EoL 2032/2035)
> - Python 3.9 to 3.12+
> - OpenSSL 3.0 (3.2? 3.5?)

As far as that goes: my RHEL9 machine, with a perfectly vanilla
install, has

$ rpm -q python3
python3-3.9.25-7.el9_8.x86_64
$ rpm -q openssl
openssl-3.5.5-4.el9_8.x86_64

So in the Red Hat universe I think we could safely expect a minimum
of OpenSSL 3.5.  But that doesn't matter much given that your list
shows other LTS distros still on 3.0.

			regards, tom lane





^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-07-08 18:51  Jacob Champion <[email protected]>
  parent: Tom Lane <[email protected]>
  0 siblings, 1 reply; 19+ messages in thread

From: Jacob Champion @ 2026-07-08 18:51 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On Wed, Jul 8, 2026 at 11:34 AM Tom Lane <[email protected]> wrote:
> $ rpm -q python3
> python3-3.9.25-7.el9_8.x86_64
> $ rpm -q openssl
> openssl-3.5.5-4.el9_8.x86_64
>
> So in the Red Hat universe I think we could safely expect a minimum
> of OpenSSL 3.5.

Yeah (and I think their decision to upgrade to 3.5 caused major
ripples recently).

> But that doesn't matter much given that your list
> shows other LTS distros still on 3.0.

Right. I think 3.0 would be a reasonable floor for PG20, honestly. I'm
a little concerned about how long the Deb-alikes are going to end up
pinning it, but... one step at a time.

--Jacob






^ permalink  raw  reply  [nested|flat] 19+ messages in thread

* Re: PG20 Minimum Dependency Thread
@ 2026-07-09 05:35  Michael Paquier <[email protected]>
  parent: Jacob Champion <[email protected]>
  0 siblings, 0 replies; 19+ messages in thread

From: Michael Paquier @ 2026-07-09 05:35 UTC (permalink / raw)
  To: Jacob Champion <[email protected]>; +Cc: Tom Lane <[email protected]>; PostgreSQL Hackers <[email protected]>

On Wed, Jul 08, 2026 at 11:51:06AM -0700, Jacob Champion wrote:
> On Wed, Jul 8, 2026 at 11:34 AM Tom Lane <[email protected]> wrote:
>> But that doesn't matter much given that your list
>> shows other LTS distros still on 3.0.
> 
> Right. I think 3.0 would be a reasonable floor for PG20, honestly. I'm
> a little concerned about how long the Deb-alikes are going to end up
> pinning it, but... one step at a time.

That would mean to drop OpenSSL 1.1.1, as there is nothing in-between
up to 3.0.0.  That feels OK to drop for PG20, even if support for 3.0
will end in a few months, as of September 2026:
https://openssl-library.org/roadmap/
--
Michael


Attachments:

  [application/pgp-signature] signature.asc (833B, ../../[email protected]/2-signature.asc)
  download

^ permalink  raw  reply  [nested|flat] 19+ messages in thread


end of thread, other threads:[~2026-07-09 05:35 UTC | newest]

Thread overview: 19+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2026-06-18 20:01 PG20 Minimum Dependency Thread Jacob Champion <[email protected]>
2026-06-18 21:05 ` Daniel Gustafsson <[email protected]>
2026-06-18 21:32   ` Jacob Champion <[email protected]>
2026-06-18 21:22 ` Tom Lane <[email protected]>
2026-06-18 21:42   ` Jacob Champion <[email protected]>
2026-06-18 22:26     ` Tom Lane <[email protected]>
2026-06-18 23:35       ` Tom Lane <[email protected]>
2026-06-19 04:49         ` Tristan Partin <[email protected]>
2026-06-19 18:18         ` Jacob Champion <[email protected]>
2026-07-08 17:29           ` Jacob Champion <[email protected]>
2026-07-08 18:34             ` Tom Lane <[email protected]>
2026-07-08 18:51               ` Jacob Champion <[email protected]>
2026-07-09 05:35                 ` Michael Paquier <[email protected]>
2026-06-19 13:39       ` Andrew Dunstan <[email protected]>
2026-06-20 13:16 ` Peter Eisentraut <[email protected]>
2026-06-21 07:57   ` Zsolt Parragi <[email protected]>
2026-06-21 13:23     ` Andrew Dunstan <[email protected]>
2026-06-21 14:02       ` Tom Lane <[email protected]>
2026-06-22 20:50         ` Jacob Champion <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox