围绕基本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提高机器学习Rest服务性能   java反转字符的字符串顺序,并使用构造函数将其放入LinkedList   继承为什么Java不支持在方法签名中添加“throws”?   执行DDL alter table if exists任务时发生java错误。城市   java在eclipse中使用CREATETXT并打包在jar中   java AES256与3DES 256密钥检测   具有两个相同类型字段的java JPA实体   java Webapp日志记录设置被忽略   java KeyEventDispatcher可以在一个应用程序中工作,但不能在另一个应用程序中工作   带有Swing和OpenJDK的java PinchZoom   未涉及java AspectJ注释切入点(对于任何注释类型)   java如何在FuseBAI中获取日志文件详细信息   java在Linux上将wstring转换为jstring