![](https://secure.gravatar.com/avatar/4be5600ac37733c75baf66d90f0be138.jpg?s=120&d=mm&r=g)
On 10 Aug 2020, at 09:31, Jonathan DEKHTIAR <contact@jonathandekhtiar.eu> wrote:
I hope it won't be obscure. But sometimes, you **need** to compile with the same compiler even if you don't exploit specific compiler features. Namely for "Bug Compatibility" reasons: https://en.wikipedia.org/wiki/Bug_compatibility <https://en.wikipedia.org/wiki/Bug_compatibility>
When you work with low level libraries and tend to access hardware or driver libraries (think GPUs, FPGAs, etc.) in many cases, compiling with GCC or CLANG or whatever compiler has been used to compile the libraries you are using is essential. This is a very common issues when working on specific hardware or embedded software. Compilers are not "perfect" they have bugs like any other pieces (I know we tend to forget it). Sometimes we don't care, sometimes we do. And actually now that Deep Learning and Machine learning is really a big thing. "Bug Compatibility" is an important issue. Try compiling CUDA code with the wrong compiler: I wish you good luck in your debugging :D
CUDA and embedded systems are not most extensions. For a lot of software the specific compiler used is not an issue, except for compatibility (C++ ABI, runtime ABI for the C runtime). Note that I reacted to a statement that a setup.py is always written for a specific compiler, which is untrue. Most setup.py files with extensions don’t specify a compiler at all, but rely on the compiler detection from distutils/setuptools. Ronald
Jonathan
---- Le lun., 10 août 2020 00:07:54 -0700 Ronald Oussoren via Distutils-SIG <distutils-sig@python.org> écrit ----
On 9 Aug 2020, at 18:59, David Mathog <dmathog@gmail.com <mailto:dmathog@gmail.com>> wrote:
On Sat, Aug 8, 2020 at 8:15 PM Jonathan DEKHTIAR <contact@jonathandekhtiar.eu <mailto:contact@jonathandekhtiar.eu>> wrote:
So do you plan on "managing" which version of GCC or g++ people have and issue a warning if they don't have the good one?
A setup.py will always be written for a particular compiler, or maybe it will handle a couple, but they never handle a "general compiler".
Except that almost all extensions written in C require a “general C compiler”, not some version of GCC.
That was why the example in spec
Requires-External C
never made sense. It always should have been something like
Requires-External gcc (>4.0)
Not unless you write code that uses features specific to GCC, and even then it is questionable as there are several other compilers that implement a large subset of GCC language extensions (at least icc and clang).
Ronald
—
Twitter / micro.blog: @ronaldoussoren Blog: https://blog.ronaldoussoren.net/ <https://blog.ronaldoussoren.net/> -- Distutils-SIG mailing list -- distutils-sig@python.org <mailto:distutils-sig@python.org> To unsubscribe send an email to distutils-sig-leave@python.org <mailto:distutils-sig-leave@python.org> https://mail.python.org/mailman3/lists/distutils-sig.python.org/ <https://mail.python.org/mailman3/lists/distutils-sig.python.org/> Message archived at https://mail.python.org/archives/list/distutils-sig@python.org/message/MPG2S... <https://mail.python.org/archives/list/distutils-sig@python.org/message/MPG2S...>