[Python-3000] Binary compatibility

Thomas Leonard talex5 at gmail.com
Tue Aug 7 09:15:06 CEST 2007


On 8/7/07, "Martin v. Löwis" <martin at v.loewis.de> wrote:
> > This means that I can't distribute Python extensions as binaries.
>
> I think this conclusion is completely wrong. Why do you come to it?
>
> If you want to distribute extension modules for Ubuntu, just distribute
> the UCS-4 module. You need separate binary packages for different
> microprocessors and operating systems, anyway, as you can't use the
> same binary for Windows, OSX, Ubuntu, or Solaris.

You're right that we already have to provide several binaries
(although OSX and Windows users usually aren't all that interested in
running Unix desktop environments like ROX ;-), but each new
combination is more work for us. Linux/x86 covers pretty much all our
non-technical users, I think.

Autopackage double-compiles C++ programs (C++ being the other piece of
Linux infrastructure with an unstable ABI), for example, but if they
want to provide binaries for a C++ program using Python, that's 4
binaries per architecture!

(You also have to special-case the selection logic. Every installation
system understands about different versions and different processors,
but they need custom code to figure out which of two flavours of
Python is installed).

> > Any extension built on Ubuntu may fail on some other system.
>
> Every extension built on Ubuntu *will* fail on other processors
> or operating systems - even if the Unicode issue was solved, it
> would still be a different instruction set (if you x85 vs. SPARC
> or Itanium, say),

> and even for a single microprocessor, it will
> fail if the OS ABI is different (different C libraries etc).

Generally it doesn't. Our ROX-Filer/x86 binary using GTK+ runs on all
Linux/x86 systems (as far as I know). Linux binary compatibility is
currently very good, provided you avoid C++ and Python extensions.

> Now, you seem to talk about different *Linux* systems. On Linux,
> use UCS-4.

Yes, that's what we want. But Python 2.5 defaults to UCS-2 (at least
last time I tried), while many distros have used UCS-4. If Linux
always used UCS-4, that would be fine, but currently there's no
guarantee of that.


-- 
Dr Thomas Leonard		http://rox.sourceforge.net
GPG: 9242 9807 C985 3C07 44A6  8B9A AE07 8280 59A5 3CC1


More information about the Python-3000 mailing list