Re: Proposed Modules, My Take



On Wed, 19 Jan 2005 20:28:49 +0000, Ross Burton wrote:
> I may be wrong, but as I understand it Python doesn't really have an
> ABI.  .pyc files are cached bytecode which you could say are ABI but
> these are not part of the standard interface, are not distributed, etc.
> 
> As I see it the ABI question is not relevant for Python, the question
> should be is the API stable.

There are two issues here.

Firstly Python does expose an ABI in the C sense, for modules/extensions
that use libpython. This ABI is not stable (not by my definition anyway).
So if your app comes with extensions (ie you optimized some slow code by
rewriting it in C, or ship custom bindings to a library) you're a bit
screwed.

Secondly, Python does break old programs by changing the language in
incompatible ways. As they're interpreted this is a problem.

Actually there is a wider problem as I see it with the bindings release,
namely that AFAIK none of the popular bindings are actually stable in the
sense that you can send somebody a binary package and expect it to work
(which is the whole point of stability, right?):

- C++ ABI not stable yet, so you have to statically link GTKmm

- Python not stable at all, may not be unless the Python team change
  their modus operandi

- Java has two ABIs, there is the GCJ one which isn't stable quite yet
  but they're working on it, and the Sun defined ABI which is ... but
  I don't think many people want to distribute binaries that depend on
  the JVM

- Mono/GTK# is theoretically stable (?) but I've seen threads (eg on
  ubuntu-users) which imply that programs break quite often, at least
  the latest releases apparently don't run old Mono apps

Unfortunately apart from C++ you can't statically link most of these. For
Python what you really need is a Python compiler that spits out standalone
ELF binaries with no dependency on the official runtime, but that'd be a
rather huge project.

Such a compiler would solve the other problem (or non-problem, depending
on your POV) that Python can't easily be used for proprietary code as it's
interpreted.

What I'm saying is I'm not sure what the point of the bindings release is,
as you can't depend on it as a developer. I guess it's useful to collect
them all together and sync their release schedules.

thanks -mike




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]