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.