Merge commit '81396a5322a7a48764fcf254d5d933ba1e57bdc5' as 'kiwi'
This commit is contained in:
29
kiwi/docs/source/developer_notes/index.rst
Normal file
29
kiwi/docs/source/developer_notes/index.rst
Normal file
@@ -0,0 +1,29 @@
|
||||
.. _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
|
||||
Reference in New Issue
Block a user