Sealang es un conjunto mejorado de enlaces de Python para libclang
.
Los mantenedores de libclang
no han sido especialmente sensibles con
parches que abordan problemas como la compatibilidad con Python 3 y
omisiones significativas en el API (como la extracción de literales y
operadores).
Este paquete es una bifurcación de los enlaces oficiales de Python para
libclang
, reparados para corregir estos problemas.
Cómo funciona
Sealang es un hack un poco desagradable. libclang
es un conjunto de
enlaces C a un API en C++; Python ctypes
se utiliza para envolver la
API C. Sin embargo, mientras que el API en C++ API es bastante rica en
opciones, la de libclang
lo es menos.
Sealang comprime esta brecha proporcionando envolturas C alrededor de las llamadas C ++ que proporcionan la funcionalidad útil. Esta librería de funciones C se envuelve como un módulo CPython - este módulo C no contiene Python objetos o métodos, pero debido a que es un módulo, el módulo compilado sealang.so es fácil de encontrar. ctypes se utiliza para exponer las funciones de la envoltura del sealang;
Internamente, Sealang reproduce algunas piezas menores de la API de libclang; estos son métodos (como los métodos de creación y manipulación de cadenas) que no están expuestos como símbolos para el uso por terceros.
Toda esta funcionalidad está potencialmente disponible para ser incorporada a libclang.
Relación con Clang
Este proyecto pretende reflejar lo que está actualmente disponible en
los enlaces de Python a libclang
. El número de versión para este
proyecto se extrae de la versión y la revisión SVN del repositorio
oficial clang.
Cualquier cambio hecho en el repositorio oficial de libclang
se
reflejará aquí; algún cambio hecho aquí será, cuando sea posible,
empujado hacia el repositorio oficial de libclang
.
Estado del desarrollo
Este proyecto fue un experimento desarrollado para apoyar Seasnake. Desde que Seasnake fue abandonado, este proyecto también se abandonó.