Files
ljkiwi/kiwi/docs/source/developer_notes/index.rst

30 lines
1.0 KiB
ReStructuredText

.. _developer:
Developer notes
================
These notes are meant to help developers and contributors with regards to some
details of the implementation and coding style of the project.
C++ codebase
------------
The C++ codebase currently targets C++11 compliance. It is header-only since
one of the focus of the library is speed.
Python bindings
---------------
Python bindings targets Python 3.7 and above. The bindings are hand-written and
relies on cppy (https://github.com/nucleic/cppy). Kiwisolver tries to use a
reasonably modern C API and to support sub-interpreter, this has a couple of
consequences:
- all the non exported symbol are enclosed in anonymous namespaces
- kiwisolver does not use static types and only dynamical types (note that the
type slots and related structures are stored in a static variable)
- modules use the multi-phases initialization mechanism as defined in
PEP 489 -- Multi-phase extension module initialization
- static variables use is limited to type slots, method def