Sealang jest ulepszonym zestawem wiązań Pythona dla libclang.

Upstreamowi opiekunowie libclang nie byli szczególnie responsywni na poprawki dotyczące kwestii takich jak kompatybilność z Pythonem 3, i znaczące braki w API (takie jak wyodrębnianie literałów i operatory).

Ten pakiet jest rozwidleniem oficjalnych wiązań Pythona dla libclang, z poprawkami naprawiającymi te problemy.

Jak to działa

Sealang to trochę paskudny hack. libclang jest zestawem wiązań C do API C++ API; Pythonowe ctypes są następnie używane do opakowywania API C. Jednakże, podczas gdy API C++ jest dość bogate, libclang jest mniej bogate.

Sealang wypełnia tę lukę, zapewniając opakowania C wokół wywołań C++ które zapewniają użyteczną funkcjonalność. Ta biblioteka funkcji C jest opakowana jako moduł Python C do celów dostarczania - ten moduł C nie zawiera żadnych widocznych obiektów ani metod Pythona, ale ponieważ jest to moduł moduł, bazowy skompilowany pliksealang.so jest łatwy do znalezienia. ctypes są następnie używane do udostępniania funkcji sealang funkcji opakowujących;

Wewnętrznie, Sealang odtwarza niektóre pomniejsze fragmenty API libclang; są to metody (takie jak tworzenie łańcuchów i metody manipulacji) które nie są eksponowane jako symbole do użytku przez osoby trzecie.

Cała ta funkcjonalność jest potencjalnym kandydatem do przekazania do do libclang.

Związek z Clang

Ten projekt ma na celu odzwierciedlenie tego, co jest obecnie dostępne w Pythonie dla libclang. Numer wersji dla tego projektu jest pobierany z wersji i rewizji SVN oficjalnego repozytorium clang.

Wszelkie zmiany dokonane w libclang zostaną odzwierciedlone tutaj; wszelkie zmiany wprowadzone tutaj będą, o ile to możliwe, wypychane w górę strumienia do libclang.

Status rozwoju

Ten projekt był eksperymentem opracowanym w celu wsparcia Seasnake. Ponieważ Seasnake został porzucony, ten projekt również.

Jak pomóc