[Python-Dev] Changing ob_size to [s]size_t
Guido van Rossum
guido@python.org
Fri, 07 Jun 2002 15:25:10 -0400
> Could be 95% FUD :-), but I do remember that older versions of my
> extensions broke when weak references were introduced.
Could be that you were breaking the rules of course. :-)
> Also, I don't have a problem with recompiling an extension for
> a new Python version. What's important to me is that the
> existing code continues to compile and work, not that a
> compiled version for some old Python version continues
> to run in a new version (the warnings are unacceptable in
> a production environment, so there's no point in discussing
> this).
There are two kinds of case to be made for binary compatibility, both
involving 3rd party extensions whose maintainer has lost interest.
Case one is: it's only available in binary for a given platform (maybe
something it's linked with wasn't open source). Case two: the code
doesn't compile any more under a new Python version, and the user who
wants to use it isn't sufficiently versatile in C to be able to fix it
(or has no time).
> > When you compile with UCS2 it should be backward compatible.
>
> No, it's not:
>
> 08077f18 T PyUnicodeUCS2_AsASCIIString
> 0807da34 T PyUnicodeUCS2_AsCharmapString
> 080760a8 T PyUnicodeUCS2_AsEncodedString
> 08077b54 T PyUnicodeUCS2_AsLatin1String
> 0807d84c T PyUnicodeUCS2_AsRawUnicodeEscapeString
> 08076f64 T PyUnicodeUCS2_AsUTF16String
> 0807d6b4 T PyUnicodeUCS2_AsUTF8String
> ...
Hm. Maybe only the UCS4 variants should be renamed?
Of course, few extensions reference Unicode APIs...
> Just see Raymond's PEP for a list of coding changes over the
> years. Before this list existed , getting at that information was
> hard.
But you don't *have* to make any of those changes. That's the whole
point of backwards compatibility.
> Other subtle changes include the bool stuff, things like re starting
> to fail when it sees multiple definitions of group names, changes
> to xrange, change of character escaping, new scoping rules,
> renaming in the C API (Length->Size) etc. etc.
I think we have left the topic of binary compatibility here. :-)
> Raymond Hettinger is summarizing the new coding style
> possiblities (and how to write code for older Python
> versions).
Yeah, I'm waiting for him to check it in as PEP 290.
--Guido van Rossum (home page: http://www.python.org/~guido/)