Sealang 是一套改进的 libclang Python 绑定。

libclang 的上游维护者并没有特别积极地对解决 Python 3 兼容性等问题的补丁反应,以及 API 中的重大遗漏(如提取字面量和运算符)。

此软件包是 libclang 的官方 Python 绑定的派生。

工作原理

Sealang 是一个有点恶心的小妙招。libclang 是一套 C++ API 的 C 绑定;然后用 Python ctypes 封装 C API。然而,虽然 C++ 的 API 相当丰富,libclang 则没有那么这样。

Sealang 提供了调用这些提供有用功能的 C++ 调用的 C 语言封装,从而弥补了这一差距。这个 C 函数库只因为分发用途而封装为一个 Python C 模块;它不包含暴露的 Python 对象或方法,但由于它是一个模块,底层的编译好的 sealang.so 文件很容易查找。然后,我们使用 ctypes 用于公开 sealang 封装函数;

在内部,Sealang 重现了 libclang API 的一些次要部分;这些方法(如字符串创建和操作方法)没有以可供第三方使用的符号的形式公开。

所有这些功能都有可能被传递给上游 libclang。

与 Clang 的关系

该项目旨在反映当前 Python 与 libclang 的已有绑定。本项目的版本号取自官方 clang 代码库的版本和 SVN 修订版。

上游对 libclang 所做的任何修改都将在此处进行镜像;此处所做的任何修改都将尽可能推送到上游的 libclang 中。

开发状况

该项目是为支持为了支持 Seasnake 的实验。由于 Seasnake 已被放弃,这个项目也被放弃了。

如何帮助