Call a C API from Python becomes more enjoyable with CFFI

Python is slow ! Python can't access bare metal !

You often hear theses assumptions? Theses limitations can be surpassed by Python extensions written in C. However, according to my personal experience, doing this by leveraging C may yield to several issues (e.g., memory management).

C Foreign Function Interface for Python (a.k.a., CFFI) allows you to easily write Python extensions. One of the main aims of CFFI is to to wrap C libraries. Along the same lines, it may also be used for performance enhancement.

I am firstly presenting CFFI and it's two modes of utilization: API level and ABI level. Then I will share my own experience about wrapping shaderc library in six hours (pyshaderc).

Next we are going to the next level, let's wrap all the Vulkan API! Vulkan is the new 3D API and is not a piece of cake. To see the real advantage of CFFI, a side by side comparison between two Python modules is going to be presented:

  • CVulkan is a Vulkan wrapper written fully in C, it's a classic C extension for Python
  • vulkan is its CFFI counterpart without any C written, only Python

I have developed two versions of Vulkan wrapper (one in a pure C, and the second by leveraging CFFI) and I can assure you that CFFI is a a way better!

Let's code!

Presented by

Jean-Sébastien Bevilacqua

Jean-Sébastien Bevilacqua is 27 years old. He has a degree in computer engineering. He worked three years at Thales on OpenStack, where he has discovered Python and started loving it. He then joined Linagora to be engaged in the open source.

He likes to talk with developers on IRC or github. Lastly, he is a contributor to libGDX and Vulkan ecosystem. He likes 3D and low-level development.

He likes traveling and his favorite artist is Jamie XX ;-)