Yes, it seems like a number of the ABI3 prerequisites have caught up since
2016. Now is a great time to revisit the issue.

On Tue, Jul 17, 2018 at 4:29 PM Shaun Walbridge <swalbri...@esri.com> wrote:

> This is no longer accurate -- since early 2017, the Windows Python builds
> include python3.dll alongside the major.minor DLL.
>
> On 7/17/18, 4:24 PM, "Phil Thompson" <p...@riverbankcomputing.com> wrote:
>
>     On 17 Jul 2018, at 8:57 pm, Daniel Holth <dho...@gmail.com> wrote:
>     >
>     > According to a link in this chain, virtualenv lately copies
> python3.dll (+ python3.7 e.g.) on Windows. So hopefully the extension links
> with that dll.
>
>     Yes. Historically at least, Anaconda does not include that DLL and
> (IMHO) is inherently broken.
>
>     Phil
>
>     > On Tue, Jul 17, 2018, 15:51 Nathaniel Smith <n...@pobox.com> wrote:
>     > The promise behind the limited ABI is exactly that if your extension
> works on 3.x, it will also work on 3.y, for y >= x.
>     >
>     > One thing to watch out for: normally extension modules on Linux and
> MacOS don't try to link to libpython. Instead they trust that someone else
> will make sure they only get loaded into a compatible python interpreter,
> and that all the symbols they need from python will be injected by the host
> process.
>     >
>     > On Windows, the way the dynamic loader works, you can't do this:
> every extension module has to explicitly say "I'm getting PyNumber_Add from
> the dll named: somethingsomething.dll"
>     >
>     > But traditionally, version X.Y of python includes a pythonXY.dll, so
> there's no consistent name across releases. So even if your library uses
> only the limited ABI and all of your imports could just as well come from
> python36.dll or python37.dll... you need some way to express that, and only
> Windows has this problem.
>     >
>     > I feel bad sending this without doing my own research, but I don't
> have access to a Windows box right now. Does anyone know if this problem
> has been solved? Is it still true that Windows python dlls always include
> the python version in their name?
>     >
>     > -n
>     >
>     > On Tue, Jul 17, 2018, 09:38 Paul Moore <p.f.mo...@gmail.com> wrote:
>     > On 17 July 2018 at 16:59, Cosimo Lupo <cos...@anthrotype.com> wrote:
>     > > I would like to revive this 5 year old thread and see if we can
> stir things
>     > > up a bit.
>     > >
>     > > Basically the problem is that, in the current state of the PEPs
> and build
>     > > tools, it is still not possible to build and distribute a Windows
> wheel that
>     > > includes an extension module compiled with Py_LIMITED_API.
>     > > Setuptools can successfully build such extension module on Windows
> (with
>     > > `.pyd` file extension and no extra specifiers in the module
> filename), and
>     > > these seems to work at least on CPython 3.5 and above. However the
>     > > `--py-limited-api cpXX` option of bdist_wheel command fails on
> Windows
>     > > because it attempts to use the `abi3` tag but the latter is not in
> the list
>     > > of compatible tags for that platform.
>     > > One can work around this by creating a wheel with `none` as the
> abi tag, and
>     > > `cp35.cp36.cp37` as the python implementation tag but this feels a
> bit
>     > > hackish.
>     > >
>     > > Here are some unresolved questions from the old distutils-sig
> thread,
>     > > quoting Paul Moore:
>     > >
>     > >> 2. How should tools determine which ABIs a given Python supports?
>     > >> (This is the get_supported function in wheel and distlib). The
> "Use"
>     > >> section of the PEP (
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.python.org_dev_peps_pep-2D0425_-23id1&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=CI-50dMn_QF7jh6LxyY6q37nHnL8Zn0dP_GnjnXZ6iE&e=
> )
>     > >> gives a Linux-based example, but nothing normative and nothing
> that is
>     > >> understandable to a Windows user.
>     > >
>     > > And from Vinay Sajip
>     > >
>     > >> For Windows, we (eventually) need some low-level
> sysconfig-supported way
>     > >> to get the ABI information in an analogous way to how it happens
> on POSIX:
>     > >> and
>     > >> because that's not currently there, distlib doesn't provide any
> ABI
>     > >> information
>     > >> on Windows other than "none".
>     > >
>     > > Other related links:
>     > >
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_pypa_pip_issues_4445&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=FbWIuKimM7I-r1z0drqZNQuxpypWBonCVRz9Jc8ryJ8&e=
>     > >
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_pipermail_distutils-2Dsig_2018-2DJanuary_031856.html&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=c5RVqW1Zda4NUInIER9iAEAH3fFfeBSvoOkf_KSKtsw&e=
>     > >
>     > > So.. what needs to be done here to allow distributing/installing
> Windows
>     > > wheels with Py_LIMITED_API support?
>     >
>     > IMO, the question I posed back then remains key. Vinay's response is
>     > fair, but I don't think that waiting for core Python to provide
>     > something via sysconfig is practical (it's not happened yet, so why
>     > would we expect things to change?). So I think the next step is
>     > probably for someone to propose an algorithm that can be used.
>     > Actually, what I'd like to see is a full end to end proposal of the
>     > process someone would use to build and install a limited-ABI
>     > extension. That would probably tease out a number of issues.
>     >
>     > I imagine the steps would be something like this:
>     >
>     > 1. Create an extension. Presumably you'd need to #define
>     > PY_LIMITED_ABI in the source.
>     > 2. Build a wheel from it - how would you do that? I gather it's
>     > possible to do this with plain setuptools - would it be necessary to
>     > do this with setuptools/bdist_wheel, or should there be a way to
>     > request a limited ABI build via pip? If we do want to be able to
>     > request this from a build tools like pip, do we need something in PEP
>     > 517? Are we only looking at the prebuilt wheel case, or do we need to
>     > support building from source?
>     > 3. What tags would the built wheel have?
>     > 4. Install that wheel - `pip install xxx`. Pip needs to be able to
>     > enumerate the full list of valid tags here (cp37-abi3, cp3-abi3, ...)
>     > There are also questions like - if there's a limited ABI wheel and a
>     > full ABI (version specific) wheel, which takes precedence?
>     >
>     > I don't honestly know how well the limited ABI actually achieves its
>     > goals - is "cp3-abi3-win_x86_64" a realistic tag to apply? Can
> limited
>     > ABI wheels really be used on any version of Python 3? That's a
>     > question for python-dev, rather than distutils-sig, but if we take
> the
>     > position that this is what's promised, and it later turns out not to
>     > be true, we've got a lot of wheel renaming to do when Python 3.10
>     > comes out and it doesn't support the same limited ABI as 3.x for x <
>     > 10...
>     >
>     > Also, does the limited ABI work on other platforms? If it does, we
>     > should ensure that the Windows support works the same. If it doesn't,
>     > do we want a Windows-only solution (why is that OK?) or should we
>     > extend to (say) manylinux or OSX (at the risk of making the job too
>     > big for anyone to actually get anywhere with it).
>     >
>     > So to move this forward, I think someone needs to write up the
> process
>     > of building and using a limited ABI wheel, as described above, and
>     > document suggested answers to the various questions that will come
> out
>     > in the process of going through the details. Is that something you'd
>     > be willing to take on?
>     >
>     > From that, we'd have something concrete to debate. I'm not sure how
>     > many people have an interest in this topic, so getting people with
> the
>     > necessary knowledge to chime in might take some work (I'm interested,
>     > but I don't have detail understanding of build options and linking
>     > conventions). The ultimate goal would be some sort of PEP covering
>     > handling limited ABI extensions within the packaging infrastructure.
>     >
>     > Does that seem reasonable? Is that the sort of guidance you were
>     > looking for? I doubt anything is going to happen on this subject
> until
>     > someone with the interest in moving it forward steps up to do the
> work
>     > of making a proposal and collecting community views.
>     >
>     > Paul
>     > --
>     > Distutils-SIG mailing list -- distutils-sig@python.org
>     > To unsubscribe send an email to distutils-sig-le...@python.org
>     >
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_mm3_mailman3_lists_distutils-2Dsig.python.org_&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=M8BIYDHADRC2DG3p_8p4E-jtXEvvKIrEAFpzMVko0is&e=
>     > Message archived at
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_mm3_archives_list_distutils-2Dsig-40python.org_message_F3QCJTGKFZJFWWV4CLLQFQ6XGBAQNNFX_&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=ZwMkKEX6br2nQj9KrQhvui3DANLGlR32_BOwALjytVw&e=
>     > --
>     > Distutils-SIG mailing list -- distutils-sig@python.org
>     > To unsubscribe send an email to distutils-sig-le...@python.org
>     >
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_mm3_mailman3_lists_distutils-2Dsig.python.org_&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=M8BIYDHADRC2DG3p_8p4E-jtXEvvKIrEAFpzMVko0is&e=
>     > Message archived at
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_mm3_archives_list_distutils-2Dsig-40python.org_message_YXMNZEF4DGCNFFE3M66LVBOUT73HCPTF_&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=b6Ex8zkpUUKFFdzBdGn9uEVciRHgK5a8RMHLccIB9dk&e=
>     > --
>     > Distutils-SIG mailing list -- distutils-sig@python.org
>     > To unsubscribe send an email to distutils-sig-le...@python.org
>     >
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_mm3_mailman3_lists_distutils-2Dsig.python.org_&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=M8BIYDHADRC2DG3p_8p4E-jtXEvvKIrEAFpzMVko0is&e=
>     > Message archived at
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_mm3_archives_list_distutils-2Dsig-40python.org_message_H2DHMDLYA77BDGDRYLFEFY6ZFS7QVNWI_&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=j402Afyg9SFbc2UK-S8ZlUlw8SDTncSNL9Ais3t-ISY&e=
>     --
>     Distutils-SIG mailing list -- distutils-sig@python.org
>     To unsubscribe send an email to distutils-sig-le...@python.org
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_mm3_mailman3_lists_distutils-2Dsig.python.org_&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=M8BIYDHADRC2DG3p_8p4E-jtXEvvKIrEAFpzMVko0is&e=
>     Message archived at
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.python.org_mm3_archives_list_distutils-2Dsig-40python.org_message_UORLWC6PNWHKOCL4TO5ZAXZD5HTPAU6J_&d=DwICAg&c=n6-cguzQvX_tUIrZOS_4Og&r=YFaRLkcUCdDkLrpTbNOUV9J1CwYBCTMwgm5tdQkRSm4&m=xlQFE7IsUpY_J8xwu4_W--sNGrS38xw5c9B0ZJmewgE&s=NLh87pQi9YHUUWCZtAma8wk6VHqgd93f9wIPVfUEubw&e=
>
>
>
--
Distutils-SIG mailing list -- distutils-sig@python.org
To unsubscribe send an email to distutils-sig-le...@python.org
https://mail.python.org/mm3/mailman3/lists/distutils-sig.python.org/
Message archived at 
https://mail.python.org/mm3/archives/list/distutils-sig@python.org/message/AYKACC4TKFWWJI4FBOATGE7PJ2EIP6TN/

Reply via email to