Sealang je vylepšená sada vazeb jazyka Python pro libclang.

Správci upstreamu libclang se nijak zvlášť nestarali o to, aby se na opravy, které řeší problémy, jako je kompatibilita s Pythonem 3, a významná opomenutí v API (jako je extrakce literálů). a operátory).

Tento balíček je odnoží oficiálních vazeb Pythonu pro libclang, opravený tak, aby tyto problémy byly odstraněny.

Jak to funguje

Sealang je trochu nepříjemný hacker. libclang je sada vazeb jazyka C na a C++; Pythonovské ctypes se pak používají k obalení C API. Nicméně, zatímco C++ API je poměrně bohaté, libclang je méně bohatý.

Sealang tuto mezeru překlenuje tím, že poskytuje obalové soubory jazyka C kolem volání jazyka C++. které poskytují užitečné funkce. Tato knihovna funkcí jazyka C je zabalena jako modul C jazyka Python pro účely doručení - tento modul C neobsahuje žádné vystavené objekty nebo metody jazyka Python, ale protože se jedná o modul v jazyce modul, je pod ním zkompilovaný sealang.so soubor je snadné najít. ctypes se pak používají k vystavení sealang obalové funkce;

Interně Sealang reprodukuje některé menší části rozhraní API libclang; jedná se o metody (jako je vytváření řetězců a manipulace s nimi) které nejsou vystaveny jako symboly pro použití třetí stranou.

Všechny tyto funkce jsou potenciálně vhodné k předání do upstreamu. do libclang.

Vztah ke Clangu

Cílem tohoto projektu je zrcadlit to, co je v současné době k dispozici v jazyce Python. vazby na libclang. Číslo verze tohoto projektu je nakresleno z verze a revize SVN oficiálního repozitáře clang.

Veškeré změny provedené v upstreamu v libclang budou zrcadleny zde; veškeré změny provedené v změny zde provedené budou, pokud to bude možné, přesunuty do upstreamu do libclang.

Stav vývoje

This project was an experiment developed to support Seasnake. Since Seasnake has been abandoned, so has this project.

How to help