Re: Use Python "Limited API" in PL/Python
Peter Eisentraut <peter@eisentraut.org>
From: Peter Eisentraut <peter@eisentraut.org>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Cc: Jakob Egger <jakob@eggerapps.at>
Date: 2025-03-03T10:17:48Z
Lists: pgsql-hackers
On 15.01.25 23:20, Peter Eisentraut wrote: > On 15.01.25 12:28, Jakob Egger wrote: >> On 14.01.2025, at 16:51, Jakob Egger <jakob@eggerapps.at> wrote: >>> I've tried to create a patch with this change. I'm attaching it to >>> this message so that cfbot picks it up. (I was unable to reproduce >>> the issue locally) >> >> Apologies, please disregard my last patch. It does not work. >> >> It looks like meson just can't build libraries that link with Python >> that use the limited API. >> >> My understanding of Meson is limited, so I am unsure how to best work >> around this limitation. >> >> I've spent two days trying to figure it out; I'm at the end of my wits. > > Thanks for checking. I've also been poking at this, without success. > > What we could do is just not activate the limited API on Windows > (actually MSVC, since it works on MinGW). If someone later finds a way > to make it work on Windows/MSVC, then it's easy to change. > > So here is an updated patch set with that change. It should pass cfbot > like this. Update for the hackers list: This patch set was briefly committed but had to be reverted because it crashed on some older Python versions; see [0]. I have locally reproduced the problem with Python 3.6 and 3.7; Python 3.8 is ok. This matches the results from the buildfarm. I have poked at this a bit more but haven't gotten a good idea where or how to fix it so far. Help welcome. [0]: https://www.postgresql.org/message-id/flat/E1tnJNu-000CZW-0X%40gemulon.postgresql.org
Commits
-
Enable Python Limited API for PL/Python on MSVC
- 2bc60f86219b 19 (unreleased) landed
-
Activate Python "Limited API" in PL/Python
- 0793ab810038 18.0 landed
-
Prepare for Python "Limited API" in PL/Python
- 72a3d0462b9a 18.0 landed
- c47e8df815c1 18.0 landed
-
Remove obsolete Python version check
- 32c393f9f1f1 18.0 landed