Nick Coghlan wrote:
Regarding the warnings for this one - is there a way for the checker
to warn if data structures are exposed directly, rather than as opaque
types? It's fine if there isn't, it would just be cool if there was -
one of the premises of the stable ABI is that it *doesn't* expose the
type definitions directly to consuming code, just the pointers to them
(hence allowing the struct size to change without actually breaking
compatibility with the defined ABI).
The ABI of the library can be dumped by the abi-compliance-checker basic
tool to a text file in the human readable format, so anyone can analyse
it in order to find problems of any kind.
Homepage of the tool: https://github.com/lvc/abi-compliance-checker
To dump the libpython ABI type:
$> abi-compliance-checker -l libpython -dump descriptor.xml
The descriptor.xml input file ({RELPATH} - path to the python install
tree, i.e. installation "prefix"):
<version>
3.4.0
</version>
<headers>
{RELPATH}/include
</headers>
<libs>
{RELPATH}/lib/libpython3.4m.so.1.0
</libs>
<skip_including>
ast.h
Python-ast.h
asdl.h
pyexpat.h
pymactoolbox.h
</skip_including>
<gcc_options>
-DPy_LIMITED_API=0x03020000
</gcc_options>
I've already created the sample dump of the libpython-3.4.0 stable ABI
here: http://upstream-tracker.org/downloads/libpython_3.4.0.abi.tar.gz
In order to analyse data types in the ABI please read 'TypeInfo' section
of the dump.
I see several structures with exposed definition in the stable ABI v3.4.0:
struct PyStructSequence_Desc
struct grammar
struct PyStructSequence_Field
struct _node
struct cchar_t
struct PyType_Spec
struct PyType_Slot
struct dfa
struct labellist
struct PyMethodDef
struct _Py_Identifier
struct state
struct PyVarObject
struct arc
struct label
struct PyModuleDef
struct PyModuleDef_Base
struct PyMemberDef
struct PyGetSetDef
struct _object
struct PyCursesWindowObject
Thanks.
--
Andrey Ponomarenko, NTC IT ROSA.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com