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

Re: [Xen-devel] Python 3 bindings



On Fri, Feb 17, 2017 at 01:36:01PM +0100, Marek Marczykowski-Górecki wrote:
> Hi,
> 
> I'm adjusting python bindings to work on python3 too. This will require
> few #if in the code (to compile for both python2 and python3), but it
> isn't that bad. But there are some major changes in python3, which
> require some decision about the bindings API:
> 
> 1. Python3 has no longer separate 'int' and 'long' type - old 'long'
> type was renamed to 'int' (but on C-API level, it uses PyLong_*). I see
> two options:
>   - switch to PyLong_* everywhere, including python2 bindings - this
>     makes the code much cleaner, but it is an API change in python2
>   - switch to PyLong_* only for python3 - this will introduce some
>     #ifdefs, but python2 API will be unchanged

Could you be more specific? Like, provide a code snippet?

> 
> 2. Python3 has no longer separate 'str' and 'unicode' type, new 'str' is
> the same as 'unicode' (PyUnicode_* at C-API level). For things not
> really unicode-aware, 'bytes' type should be used. On the other hand, in
> python2 'bytes' type was the same as 'str'.
> This affects various places, where in most cases 'bytes' type is
> appropriate (for example cpuid). But I'm not sure about xenstore paths -
> those should also be 'bytes', or maybe 'unicode' (which is implicitly
> using 'utf-8' encoding)? I think the only reason to use 'unicode' is

According to docs/txt/misc/xenstore.txt, paths should be ASCII
alphanumerics plus four punctuation characters. Not sure if this is
relevant to what you describe.

> convenience for API users - in python3 if you write 'some string' it
> will be unicode type, to create bytes data you need to write b'some
> string'.
> As for python2, it should definitely be still 'str'/'bytes' type.
> 
> There is one more little detail - build process. Here I'm going to
> follow popular standard - use $(PYTHON) variable - if that points to
> python3, build for python3. Actually this means no change in the current
> makefile. If someone want to build for both python2 and python3, will
> need to call the build twice - at packaging level.
> 
> -- 
> Best Regards,
> Marek Marczykowski-Górecki
> Invisible Things Lab
> A: Because it messes up the order in which people normally read text.
> Q: Why is top-posting such a bad thing?



> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> https://lists.xen.org/xen-devel


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.