O Sealang é um conjunto aprimorado de ligações Python para o libclang.
Os mantenedores da libclang não têm sido especialmente
receptivos aos patches que tratam de problemas como a compatibilidade com o Python 3,
e as omissões significativas na API (como a extração de literais
e operadores).
Este pacote é uma bifurcação dos bindings oficiais do Python para a libclang,
corrigido para corrigir esses problemas.
Como funciona
O Sealang é um hack um tanto desagradável. O libclang é um conjunto de ligações C para uma API C++.
API C++; os ctypes do Python são usados para envolver a API C. No entanto, embora
a API C++ é bastante rica, a libclang é menos.
A Sealang preenche essa lacuna fornecendo invólucros C em torno das chamadas C++ que fornecem a funcionalidade útil. Essa biblioteca de funções em C é como um módulo Python C para fins de entrega - esse módulo C não contém objetos ou métodos Python expostos, mas, por ser um módulo o módulo subjacente compilado sealang.so é fácil de encontrar. Os ctypes são então usados para expor os sealang funções de wrapper;
Internamente, o Sealang reproduz algumas partes menores da API libclang;
esses são métodos (como os métodos de criação e manipulação de strings)
que não são expostos como símbolos para uso de terceiros.
Toda essa funcionalidade é potencialmente uma candidata a ser passada para o upstream para a libclang.
Relação com o Clang
Este projeto tem como objetivo espelhar o que está atualmente disponível nas ligações Python
para a libclang. O número da versão deste projeto é extraído
da versão e da revisão SVN do repositório oficial do clang.
Quaisquer alterações feitas no libclang serão espelhadas aqui; quaisquer
alterações feitas aqui serão, sempre que possível, enviadas para
libclang.
Status de desenvolvimento
This project was an experiment developed to support Seasnake. Since Seasnake has been abandoned, so has this project.