Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vbj8b-00BiP6-19 for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Jan 2026 17:40:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vbj8Z-00AWta-2f for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Jan 2026 17:40:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vbj8Z-00AWtS-1X for pgsql-hackers@lists.postgresql.org; Fri, 02 Jan 2026 17:40:32 +0000 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vbj8X-0047FK-0y for pgsql-hackers@postgresql.org; Fri, 02 Jan 2026 17:40:31 +0000 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-78f99901ed5so106961457b3.3 for ; Fri, 02 Jan 2026 09:40:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767375627; x=1767980427; darn=postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=Rr1dqb6GMBccIds+5nGyqrcxF6iacmJdyH1Ks/Se0tw=; b=U75GEm27g6HPNNvLWE3ztl//Oi2srV8opCaBcDeHC8UsHM+xPfdxW3he8E1y8naw9P 8QVKNZJ9ttW4QwZRfXSLBKOb1vP92x5lq/bTP6uns2HeaZD0aia/dzyZGNL3V4NHnqxH fQpjN6phdSqvjibi/rZ6ioQpjabdhTB7MnUVoJxLmnQn/dzN4I1/YkzL7nO5FGVdknyc h6/OF0UVMf9WkTRgcDDr2n5ki9RS1hXrNvJTAf9FOfZFrCFFws4KpgVUqDkshRbz3lTj NZbIFBGJN7KqfhPyXk94mZXvISL+VBLhWGx//I/98+vJWmromFpb8sFjP31jdgQGM2K1 qKbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767375627; x=1767980427; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Rr1dqb6GMBccIds+5nGyqrcxF6iacmJdyH1Ks/Se0tw=; b=qwDm8mCkV7HWzOPfEbAdcsAyrrN43b9Aww42zvx3gUfOV/l1UkFYd72iwd81bWxir/ tq6P3NuF2Qvh5uWihNiWyzw0weESbv645SgVPZUUjQ4laeHyS+6jsWWWVLRHrfXhpUEX hHNRTVgeXP9Fraf1qpa4gRk/MInBjxYmQIMxHNaXqMzc8p5Ih4JkoQY2E/MsC8CQPe1m eAsZ+qcGTKeffrzlgL6rD1vorEAcp0+ublV7nUMBzZd6kzVO+lEgeA/LHYl/yDjQub1H 8SIQbOEPCU2enC1rAmI5UtlGC+1UGqjh/ygY6LGJpIle+E6ZHW070ruFrFQM35GCOak9 qZKQ== X-Gm-Message-State: AOJu0YzMoSQ5Yr0kpHxWp2iLdjopqgk/kZ4ND/oYnxbeR9afRNbIAG/I RjWiiK1qDz8cYq9N6QX6ee8E/P/f3Yt1dotUvgztVEjs+DsSRxmBuLkL X-Gm-Gg: AY/fxX4u6P91OtK6RLHbiAM5Z83bHKjHuvQwG8kd4/3AlsG6ZK0qKo/jt3AU27CsWGf G0oUGNCtdC0EB7zyUP6HOq+P6nPveywVU8rF9p2djWCjFGPVzhY/goLg8MdJKv0bsJ9mTPja+fd RUD5dygNHtmUDIplbC5slbVRS+D9UtkLarLy4GWg7qJg/my/wsFbgD3nHyXE5l99DRP+J24afbC jS8RPqs9DbhIpDf7WgCnQ1ssoXkO6hHzmGZd3w1P7Sz2WXOoKcz9ChEKT1RCePNrHCyDQT+1H1u OY3po7DAZPHlhbFrIMx8EAJr3R/cj6gaUxNvFo0h1eCm8SudctbPJnVVt/UzJ0+SmaAMWpT+bQB CQM5d+gh6ZkycO1K1UJhPsrj23SMIaPCXSNNJfN4AMxOcJo8xfFH1yCCYQWDN5dtJ7ncLUlZMUX reuzhTeLrh9uOaNgmucP2QUN3RX9VcvPh8f02sC9WGguE2lz+US40LwuF4j9r5Ic/1 X-Google-Smtp-Source: AGHT+IHXtTcpcxC0ivP4XGfR3Ta9S6wsuw/wMILP3nXc3D0KHzJMfQISwuZzhIdsEbSsKKNtaG5FzA== X-Received: by 2002:a05:690c:6102:b0:787:b5ac:68e4 with SMTP id 00721157ae682-78fb4069f72mr371512087b3.48.1767375627175; Fri, 02 Jan 2026 09:40:27 -0800 (PST) Received: from ?IPV6:2600:1700:8952:80:2cf8:b080:b522:7a1b? ([2600:1700:8952:80:2cf8:b080:b522:7a1b]) by smtp.gmail.com with ESMTPSA id 00721157ae682-78fb4562df4sm159101947b3.55.2026.01.02.09.40.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 02 Jan 2026 09:40:26 -0800 (PST) Content-Type: multipart/mixed; boundary="------------ayqdHIu4nsQtNph0nJzVe4eI" Message-ID: <5b5f668a-06b6-4ade-aaeb-4a1e8ca65153@gmail.com> Date: Fri, 2 Jan 2026 11:40:11 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Use Python "Limited API" in PL/Python To: Jakob Egger , Peter Eisentraut Cc: pgsql-hackers References: <1199D508-06D8-4916-84CD-462FA8EC8638@eggerapps.at> Content-Language: en-US From: Bryan Green In-Reply-To: <1199D508-06D8-4916-84CD-462FA8EC8638@eggerapps.at> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------ayqdHIu4nsQtNph0nJzVe4eI Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 1/15/2025 5:28 AM, Jakob Egger wrote: > On 14.01.2025, at 16:51, Jakob Egger 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. > > Best regards, > Jakob Hi Jakob and Peter, I've been working on enabling the Python Limited API on MSVC, which was disabled in the recent commit due to build failures. The issue is that Meson doesn't automatically link against python3.lib when using the Limited API. Meson's Python dependency always returns the version-specific library (python3XX.lib) regardless of whether limited api is defined. This appears to be a known Meson limitation: https://github.com/mesonbuild/meson/issues/13824 Initially, I thought that maybe the library wasn't being installed, but that is not the case and the patch to our CI Windows MSVC image is not needed. I have a patch that works around this by manually constructing the Python dependency on MSVC to use python3.lib instead of python3XX.lib, using cc.find_library('python3') and building the dependency with the appropriate include directory. It passes CI when I push. I'll see what cfbot thinks. Still testing, but wanted to share progress and get feedback on the approach. -- Bryan Green EDB: https://www.enterprisedb.com --------------ayqdHIu4nsQtNph0nJzVe4eI Content-Type: text/plain; charset=UTF-8; name="v1-0001-Enable-Python-Limited-API-for-PL-Python-on-MSVC.patch" Content-Disposition: attachment; filename*0="v1-0001-Enable-Python-Limited-API-for-PL-Python-on-MSVC.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA1MmVmZThhZjEzNzdlOGFkYmFjMzUzMzUzN2YxNWFkMjBmN2FmMWNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCcnlhbiBHcmVlbiA8ZGJyeWFuLmdyZWVuQGdtYWls LmNvbT4KRGF0ZTogRnJpLCAyIEphbiAyMDI2IDEwOjQ4OjU0IC0wNjAwClN1YmplY3Q6IFtQ QVRDSCB2MV0gRW5hYmxlIFB5dGhvbiBMaW1pdGVkIEFQSSBmb3IgUEwvUHl0aG9uIG9uIE1T VkMKClByZXZpb3VzbHksIHRoZSBQeXRob24gTGltaXRlZCBBUEkgd2FzIGRpc2FibGVkIG9u IE1TVkMgZHVlIHRvIGJ1aWxkCmZhaWx1cmVzIGNhdXNlZCBieSBNZXNvbiBub3Qga25vd2lu ZyB0byBsaW5rIGFnYWluc3QgcHl0aG9uMy5saWIKaW5zdGVhZCBvZiBweXRob24zWFgubGli IHdoZW4gdXNpbmcgdGhlIExpbWl0ZWQgQVBJLgoKVGhpcyBjb21taXQgd29ya3MgYXJvdW5k IHRoZSBNZXNvbiBsaW1pdGF0aW9uIGJ5IGV4cGxpY2l0bHkgZmluZGluZwphbmQgbGlua2lu ZyBhZ2FpbnN0IHB5dGhvbjMubGliIG9uIE1TVkMsIGFuZCByZW1vdmVzIHRoZSBwcmVwcm9j ZXNzb3IKZ3VhcmQgdGhhdCB3YXMgZGlzYWJsaW5nIHRoZSBMaW1pdGVkIEFQSSBvbiBNU1ZD IGluIHBscHl0aG9uLmguCgpUaGlzIHJlcXVpcmVzIHB5dGhvbjMubGliIHRvIGJlIHByZXNl bnQgaW4gdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24sCndoaWNoIGlzIGluY2x1ZGVkIHdoZW4g UHl0aG9uIGlzIGluc3RhbGxlZC4KCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVz cWwub3JnL21lc3NhZ2UtaWQvZmxhdC9lZTQxMGRlMS0xZTBiLTQ3NzAtYjEyNS1lZWVmZDQ3 MjZhMjQlNDBlaXNlbnRyYXV0Lm9yZwotLS0KIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAg IHwgMTIgKysrKysrKysrKystCiBzcmMvcGwvcGxweXRob24vcGxweXRob24uaCB8ICA0IC0t LS0KIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGQ3YzUxOTNk NGMuLmU0ZWNkNzhhN2EgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1 aWxkCkBAIC0xMzI5LDcgKzEzMjksMTcgQEAgaWYgbm90IHB5b3B0LmRpc2FibGVkKCkKICAg cG0gPSBpbXBvcnQoJ3B5dGhvbicpCiAgIHB5dGhvbjNfaW5zdCA9IHBtLmZpbmRfaW5zdGFs bGF0aW9uKHB5dGhvbi5mdWxsX3BhdGgoKSwgcmVxdWlyZWQ6IHB5b3B0KQogICBpZiBweXRo b24zX2luc3QuZm91bmQoKQotICAgIHB5dGhvbjNfZGVwID0gcHl0aG9uM19pbnN0LmRlcGVu ZGVuY3koZW1iZWQ6IHRydWUsIHJlcXVpcmVkOiBweW9wdCkKKyAgICAjIEZvciBMaW1pdGVk IEFQSSBvbiBNU1ZDLCBsaW5rIGFnYWluc3QgcHl0aG9uMy5saWIgaW5zdGVhZCBvZiBweXRo b24zWFgubGliCisgICAgaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnIGFuZCBjYy5nZXRf aWQoKSA9PSAnbXN2YycKKyAgICAgIHB5dGhvbjNfbGliZGlyID0gcHl0aG9uM19pbnN0Lmdl dF92YXJpYWJsZSgncHJlZml4JykgLyAnbGlicycKKyAgICAgIHB5dGhvbjNfbGliID0gY2Mu ZmluZF9saWJyYXJ5KCdweXRob24zJywgZGlyczogcHl0aG9uM19saWJkaXIsIHJlcXVpcmVk OiBweW9wdCkKKyAgICAgIHB5dGhvbjNfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KAorICAg ICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBpbmNsdWRlX2RpcmVjdG9yaWVzKHB5dGhvbjNf aW5zdC5nZXRfdmFyaWFibGUoJ3ByZWZpeCcpIC8gJ2luY2x1ZGUnKSwKKyAgICAgICAgZGVw ZW5kZW5jaWVzOiBweXRob24zX2xpYiwKKyAgICAgICkKKyAgICBlbHNlCisgICAgICBweXRo b24zX2RlcCA9IHB5dGhvbjNfaW5zdC5kZXBlbmRlbmN5KGVtYmVkOiB0cnVlLCByZXF1aXJl ZDogcHlvcHQpCisgICAgZW5kaWYKICAgICAjIFJlbW92ZSB0aGlzIGNoZWNrIGFmdGVyIHdl IGRlcGVuZCBvbiBNZXNvbiA+PSAxLjEuMAogICAgIGlmIG5vdCBjYy5jaGVja19oZWFkZXIo J1B5dGhvbi5oJywgZGVwZW5kZW5jaWVzOiBweXRob24zX2RlcCwgcmVxdWlyZWQ6IHB5b3B0 LCBpbmNsdWRlX2RpcmVjdG9yaWVzOiBwb3N0Z3Jlc19pbmMpCiAgICAgICBweXRob24zX2Rl cCA9IG5vdF9mb3VuZF9kZXAKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5dGhv bi5oIGIvc3JjL3BsL3BscHl0aG9uL3BscHl0aG9uLmgKaW5kZXggMTE4YjMxMDA4NC4uNDQ1 ZjdiYzMxYSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHl0aG9uLmgKKysrIGIv c3JjL3BsL3BscHl0aG9uL3BscHl0aG9uLmgKQEAgLTI1LDEyICsyNSw4IEBACiAKIC8qCiAg KiBFbmFibGUgUHl0aG9uIExpbWl0ZWQgQVBJCi0gKgotICogWFhYIGN1cnJlbnRseSBub3Qg ZW5hYmxlZCBvbiBNU1ZDIGJlY2F1c2Ugb2YgYnVpbGQgZmFpbHVyZXMKICAqLwotI2lmICFk ZWZpbmVkKF9NU0NfVkVSKQogI2RlZmluZSBQeV9MSU1JVEVEX0FQSSAweDAzMDIwMDAwCi0j ZW5kaWYKIAogLyoKICAqIFB1bGwgaW4gUHl0aG9uIGhlYWRlcnMgdmlhIGEgd3JhcHBlciBo ZWFkZXIsIHRvIGNvbnRyb2wgdGhlIHNjb3BlIG9mCi0tIAoyLjUyLjAud2luZG93cy4xCgo= --------------ayqdHIu4nsQtNph0nJzVe4eI--