Interesting!  Thanks for the link.<p>After browsing that page, I observe that even when Cython is wrapping an external C library, there&#x27;s still a notable difference between the way Cython does things &amp; the way Pymod does things.<p>The explanation on that Cython page begins: &quot;To get started, the first step is to redefine the C API in a .pxd file, say, cqueue.pxd&quot;.  So to wrap an external C library using Cython, you still need to define an entirely new header-like definition file in Cython&#x27;s intermediate language.<p>In contrast, Pymod only requires an `exportpy` pragma annotation at the end of an existing Nim procedure function header -- you don&#x27;t need to create any intermediate definition files.  And the `exportpy` pragma is <i>inert</i> unless you invoke the &quot;pmgen.py&quot; script (a Python script in Pymod that determines the Python C-API system configuration &amp; automates all the compilation), so your Nim code is still completely valid Nim code after you apply the `exportpy` annotation.