Sealang è un insieme migliorato di binding Python per libclang.
I manutentori upstream di `libclang' non sono stati particolarmente non sono stati particolarmente sensibili alle patch che affrontano problemi come la compatibilità con Python 3, e le significative omissioni nell'API (come l'estrazione di letterali e operatori). e gli operatori).
Questo pacchetto è un fork dei binding ufficiali di Python per libclang,
con una patch che corregge questi problemi.
Come funziona
Sealang è un hack un po' particolare. libclang è un insieme di collegamenti C a un'API C++.
API C++; i ctypes' di Python sono quindi usati per avvolgere l'API C. Tuttavia, mentre
l'API C++ è piuttosto ricca,libclang` lo è meno.
Sealang colma questa lacuna fornendo dei wrapper C intorno alle chiamate C++ che forniscono le funzionalità utili. Questa libreria di funzioni C è come modulo C di Python per la consegna; questo modulo C non contiene oggetti o metodi Python esposti. non contiene oggetti o metodi Python* esposti, ma poiché si tratta di un modulo, la compilazione sottostante modulo, il sottostante compilato sealang.so è facile da trovare. I ctypes sono quindi usati per esporre il file funzioni wrapper di Sealang;
Internamente, Sealang riproduce alcune parti minori dell'API libclang;
si tratta di metodi (come quelli per la creazione e la manipolazione delle stringhe)
che non sono esposti come simboli per l'uso da parte di terzi.
Tutte queste funzionalità sono potenzialmente candidate a essere passate a monte a libclang.
Relazione con Clang
Questo progetto ha l'obiettivo di rispecchiare ciò che è attualmente disponibile nei bindings Python
per libclang. Il numero di versione di questo progetto è tratto
dalla versione e dalla revisione SVN del repository ufficiale di clang.
Qualsiasi modifica apportata a monte a libclang verrà rispecchiata qui; qualsiasi
modifiche apportate qui saranno, ove possibile, spinte a monte a
libclang.
Stato di sviluppo
This project was an experiment developed to support Seasnake. Since Seasnake has been abandoned, so has this project.