围绕基本llvm功能的轻量级包装

llvmlite的Python项目详细描述


Travis CICode ClimateCoveralls.ioReadthedocs.io

用于编写jit编译器的轻量级llvm python绑定

旧的llvmpy绑定公开了许多llvm api,但是 对Python的C++风格的内存管理是容易出错的。Numba和许多jit 编译器不需要完整的llvm api。只有ir生成器,优化器, jit编译器api是必需的。

llvmlite最初是为Numba的需要定制的项目,使用 以下方法:

  • 我们需要的LLVM C++ API部分的一个小C包装器 尚未由llvm c api公开。
  • cAPI的cTypesPython包装器。
  • llvm ir构建器子集的纯python实现 需要麻木。

主要优点

  • ir builder是纯python代码,与llvm分离 频繁更改C++ API。
  • 实现llvm模块调用llvm的ir解析器,后者提供 优于C++的逐步IR构建更好的错误消息 API(不再有segfaults或进程中止)。
  • 大多数llvmlite使用llvm c api,它很小但非常稳定 (更改llvm版本时的低维护)。
  • 绑定不是python的c扩展,而是使用 不需要与Python的编译器要求和C++ 11作斗争 兼容性)。
  • python绑定层具有健全的内存管理。
  • 由于结构简单,llvmlite比llvmpy快得多 (测试套件比以前快了两倍)。

llvmpy兼容层

llvmlite.llvmpy命名空间提供了最小的llvmpy兼容性 层。

兼容性

llvmlite适用于python 2.7和python 3.4或更高版本。

从0.29.0版起,llvmlite需要llvm 7.0.x或更高版本

历史兼容性表:

llvmlite versionscompatible LLVM versions
0.29.0 - …7.0.x, 7.1.x, 8.0.x
0.27.0 - 0.28.07.0.x
0.23.0 - 0.26.06.0.x
0.21.0 - 0.22.05.0.x
0.17.0 - 0.20.04.0.x
0.16.0 - 0.17.03.9.x
0.13.0 - 0.15.03.8.x
0.9.0 - 0.12.13.7.x
0.6.0 - 0.8.03.6.x
0.1.0 - 0.5.13.5.x

文档

您可以在http://llvmlite.pydata.org

预构建的二进制文件

我们建议您使用Numba团队提供的二进制文件 Conda包管理器。你可以在numba的anaconda.org channel找到它们。例如:

$ conda install --channel=numba llvmlite

(或者,简单地说,在Anaconda中提供的正式llvmlite包 分发)

其他生成方法

如果您不想使用我们预先构建的包,可以编译 自己安装llvmlite。文档将教您如何: http://llvmlite.pydata.org/en/latest/install/index.html

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用split函数分割字符串,但没有得到期望的结果   未找到包含derby数据库嵌入架构的sql Java桌面应用程序错误   java elasticsearch vs solr用于定制全文搜索系统   java Android:创建没有startOffset的动画延迟?   java如何查看其他应用程序接收的数据?   java如何在Linux中使用D和classpath选项运行jar文件   java和域设计最佳实践   具有相同内存位置的java数组,将显示为输出   连接到java中的elasticsearch?   Java Playframework重定向到带有Json负载的外部url   java无法在Android平台上使用InputStream为蓝牙socket创建ObjectInputStream   使用POI将Excel日期转换为Java日期,年份未正确显示   oracle从数据库层还是Java层调用webservice?