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

Tento projekt byl experimentem vyvinutým na podporu Seasnake. Od projektu Seasnake bylo upuštěno, byl zrušen i tento projekt.

How to help