发行说明

v0.44.0 (2025年1月16日)

此版本的亮点包括

  • 正式支持 Python 3.13。

  • 放弃了对 Python 3.9 的官方支持,最低支持的 Python 版本为 3.10。

  • LLVM 15 现为默认 LLVM。

  • 新增对 LLVM 新 PassManager 的支持。

  • 支持基于 LLVM 的目标三元组分区。

  • llvmlite.binding.TypeRef 现在可以往返转换为 llvmlite.ir.Type

  • API 更新以适应 packed Literal Structs。

  • 新增 NetBSD 支持。

  • 支持不透明指针。

拉取请求

  • PR #1036: LLVM 15 conda recipe (sklam gmarkall)

  • PR #1046: 为 Numba 迁移到 NewPassManager 添加所需的基础设施 (yashssh gmarkall)

  • PR #1050: 将 conda-forge 预标签测试添加到发布检查清单 (gmarkall)

  • PR #1051: 将 llvmlite.binding.TypeRef 往返转换为 llvmlite.ir.Type (sklam)

  • PR #1053: 将 RTD 用于所有文档 CI / 测试(原:尝试让 CI 使用更新的 Sphinx)(gmarkall)

  • PR #1057: 将 refprune pass 移植到 NewPassManager (yashssh)

  • PR #1060: 将 0.43.0 的变更日志移植到主分支 (esc)

  • PR #1063: 添加基于 llvm 的进程三元组分区 (kc611)

  • PR #1064: 添加对不透明指针的支持 (gmarkall rj-jesus)

  • PR #1066: 将 Azure 移至使用 macos-12 (gmarkall)

  • PR #1067: 默认使用 LLVM 15,添加实验性 LLVM 16 支持 (gmarkall)

  • PR #1068: 如果在函数声明上调用 fpm.run(),则提前退出 (yashssh)

  • PR #1069: 为新的 Pass Manager 添加 instrumentation callback hook (yashssh)

  • PR #1073: 将 linux-aarch64 的编译器版本提升到 11 (esc)

  • PR #1077: 添加 NetBSD 支持。(0-wiz-0)

  • PR #1080: 将 Python 3.13 添加到 CI 和描述中 (kc611)

  • PR #1081: 添加便捷函数和参数 (thomaspinckney3)

  • PR #1085: 修复 RTD 构建,无需 get_html_theme_path()。 (stuartarchibald)

  • PR #1087: 为 refprune pass 相关 API 添加缺失的 argtypes 描述 (yashssh)

  • PR #1090: 添加 MSVC -GL 解决方法 (sklam)

  • PR #1094: 修复 CI,不移除不存在的环境 (gmarkall)

  • PR #1097: 将 azure-pipelines 更新为 macos-13 (swap357)

  • PR #1098: 修复不透明指针的存储 (alexander-shaposhnikov)

  • PR #1104: 目标 0.44.0: 修复 osx wheel 构建 (sklam)

  • PR #1108: 修复由于 zlib 链接导致的 Windows llvmdev 构建问题 (sklam)

作者

v0.43.0 (2024年6月13日)

此版本的亮点包括

  • 支持基于 LLVM 15 构建。

  • 修复了特定 fanout_raise 情况下 refpruning 算法的错误。

拉取请求

作者

v0.42.0 (2024年1月31日)

此版本的亮点包括

  • 支持 Python 3.12。

  • 修复了 AArch64 系统上的重定位溢出问题。

  • 绑定层:phi 指令的传入块、类型种类和元素的新查询。增加了 Instruction Namer pass。

  • IR 层:支持 convergent 作为函数调用和调用指令的属性。

拉取请求

  • PR #973: 绑定:查询 phi 指令的传入块 (tbennun)

  • PR #978: 绑定:查询类型种类、派生类型和元素 (tbennun sklam)

  • PR #981: 将 Instruction Namer pass 添加到 PassManager (tbennun)

  • PR #993: 更新主分支上 0.41.0 的变更日志 (esc)

  • PR #1005: 移除 add_global_mapping() 未使用的建议 (gmarkall)

  • PR #1006: 0.41.1 的主分支发布说明 (esc)

  • PR #1007: 更新 0.41.1 后的发布检查清单 (esc)

  • PR #1009: 通过在内存管理器中实现预分配来修复重定位溢出 (gmarkall)

  • PR #1010: Python 3.12 (esc)

  • PR #1012: conda-recipe 清理 (esc)

  • PR #1014: 修复 #1012 中的 conda-recipe 语法错误 (esc)

  • PR #1017: 将 3.12 添加到 azure (esc)

  • PR #1018: 将最低支持的 Python 版本提升到 3.9 (kc611)

  • PR #1019: 将 convergent 添加为受支持的 FunctionAttribute 和 CallInstrAttribute。 (diptorupd)

作者

v0.41.1 (2023年10月17日)

这是一个维护版本,其中包含测试套件中用于解决 aarch64 平台上的 ORCJit 问题的解决方法。此外,这也是最后一个支持 Windows 32 位平台 (win32) 的版本。

拉取请求

  • PR #996: 修复 codespell 发现的错别字 (esc)

  • PR #997: 修复 #880 问题,确保所有源文件都在 FreeBSD 下编译。 (ke6jjj)

  • PR #998: 添加 sphinx_rtd_theme 到 RTD 构建以修复构建 (esc)

  • PR #1001: 修复/解决 OrcJIT 阻塞问题 (gmarkall)

作者

v0.41.0 (2023年9月20日)

拉取请求

  • PR #871: 重构本地库加载 (folded sklam)

  • PR #896: 删除 conda recipe 中 Python 的上限 (esc)

  • PR #904: 为 llvmlite 发布创建 GitHub Action (apmasell)

  • PR #934: 暴露 TargetLibraryInfo pass (sklam)

  • PR #935: 在 Windows 上禁用 LLVM 的 zlib (apmasell)

  • PR #936: 启用查询常量和值种类 (tbennun)

  • PR #939: 提升 llvmdev 构建版本号以包含 Windows 的 nozlib 更改 (sklam)

  • PR #940: 更新 0.40.0 最终版的 CHANGE_LOG。 (stuartarchibald)

  • PR #942: 添加 ORCJITv2 支持 (apmasell)

  • PR #951: 为 IntType.width 添加类型提示 (apmasell)

  • PR #952: 修复非 x86 平台上因不支持的目标三元组导致 CI 失败的问题。 (sklam)

  • PR #958: 修复版本兼容表中的 LLVM 版本 (esc)

  • PR #959: 移除对 LLVM < 14 的支持 (apmasell)

  • PR #960: 添加各种要点到发布检查清单并同步 (esc)

  • PR #963: 允许向生成的 IR 添加注释 (apmasell)

  • PR #966: 构建:支持在 GNU/Hurd 上构建 (pinotree)

  • PR #967: 在 OrcJIT 跟踪器中暴露库名称 (apmasell)

  • PR #968: 更新 LLVM 手动构建说明 (apmasell)

  • PR #969: 更新主分支上 v0.40.1 的变更日志 (esc)

  • PR #983: 根据请求添加 RTD 配置文件 V2 (esc)

  • PR #985: 更新 0.41.0rc1 后的发布检查清单 (esc)

  • PR #988: 修复 FreeBsd 构建 (sklam)

作者

v0.40.1 (2023年6月21日)

拉取请求

作者

v0.40.0 (2023年5月1日)

此版本主要升级到 LLVM 14 和 Python 3.11。添加了大量 Pass 的绑定。最低支持的 Python 版本现在是 Python 3.8。

注意:在 Aarch64 平台上发现了一个 LLVM RuntimeDyldELF 的 bug,当链接跨模块符号时可能导致段错误。JIT 用户需要使用 PR#926 中添加的补丁来构建 LLVM。

拉取请求

作者

v0.39.1 (2022年9月1日)

这是一个维护版本,旨在修复 MacOS 上的构建问题。

拉取请求

v0.39.0 (2022年7月25日)

此版本主要添加新功能并改进功能。

  • 现在可以直接在全局变量上设置 LLVM metadata

  • 函数和全局变量现在支持指定它们应放置的 section

  • ModuleRef 类添加了 source_file 属性,它返回模块的原始文件名。

  • LLVM 的 FFI 库绑定现在使用 importlib 加载,以提高与其他项目的兼容性并缩短启动时间。

  • Linux 构建现在使用 make 的并行选项来加快 FFI 库的构建速度。

  • 初步工作已经完成,以暴露 LLVM 的优化备注接口。绑定已暴露并经过测试,但尚未为一般使用进行文档化(需要额外的工作)。

废弃

  • llvmlite.llvmpy 模块已被废弃,因为它提供的功能可通过 llvmlite.ir 模块获得。有关详细信息和替换建议,请参阅用户文档中的废弃指南。

拉取请求

作者

v0.38.1 (2022年5月19日)

这是一个维护版本,旨在支持 Apple M1 架构。

拉取请求

作者

v0.38.0 (2022年1月13日)

此版本使 llvmlite 与 Python 3.10 兼容。它还在目标机器创建接口中添加了 abiname 选项,该选项模仿 LLVM 中的相同功能。此外,IR API 中添加了大量函数以支持常数表达式的常见用法。最后,修复了许多 bug!

拉取请求

作者

v0.37.0 (2021年8月19日)

此版本最大的新功能是所有平台都支持 LLVM 11!这很重要,因为 aarch64 平台在几个版本中一直“卡”在 LLVM 9。特别感谢 Linaro 的 David Spickett 提供了相关补丁。

拉取请求

作者

v0.36.0 (2021年3月11日)

此版本的主要功能是支持 Python 3.9。此外,还包括了一些构建脚本的更改:llvmdev recipe 现在支持在 Windows 10 上编译,并且 llvmlite 现在可以在 POSIX 系统上使用 cmake 编译。此外,LLVM pass 本身的时间和在 LLVM 线程安全访问锁内花费的时间现在都可用于诊断目的。最后,还包括了对文档和项目文件的一些小的外观更改。

拉取请求

  • PR #624: 暴露 pass 计时

  • PR #655: 将编码从 latin1 切换到 UTF-8

  • PR #662: 删除 requirements.txt

  • PR #666: 修复安装文档中的 rst 语法

  • PR #668: 修改 cmake 选项以与 VS2019 配合使用

  • PR #670: Llvmdev windows 10

  • PR #671: Python 3.9 支持

  • PR #673: 在 windows 上使用 build 2

  • PR #677: 支持在 posix 系统上使用 CMake 构建

  • PR #682: 简介略作调整

  • PR #685: 添加 fneg 指令

  • PR #687: 清理公共 CI 配置和徽章

  • PR #689: 修复 azure 徽章以指向 master 分支

  • PR #690: 回调以跟踪 llvm 锁何时被获取和释放

  • PR #699: 调整来自 Numba 的 Python 版本限制

  • PR #701: 改进 llvm 未找到错误

作者

  • Graham Markall

  • John Kirkham

  • Peter-Jan Gootzen

  • Siu Kwan Lam (核心开发人员)

  • Stan Seibert (核心开发人员)

  • Stuart Archibald (核心开发人员)

  • Uwe L. Korn

  • Valentin Haenel (核心开发人员)

  • @ARF1

  • @abebeos

  • @0x5h4un

v0.35.0 (2020年11月30日)

此版本的主要功能是 Numba 特定的 LLVM pass,用于修剪引用计数操作。一旦它被证明稳定,我们计划推广此自定义 LLVM pass,以便可以将其配置用于其他用途。此外,此版本包含更新的 SVML 补丁,修复了 AVX512 的问题,以及一个修复 Linux 和 BSD 上构建问题的补丁。

拉取请求

  • PR #617: 修复 wheel 构建。

  • PR #618: 修复 master 上的变更日志

  • PR #626: 更新 SVML 补丁

  • PR #627: 在 Linux 和 BSD 上始终使用 -fPIC 构建

  • PR #633: 修复问题 #632 - obj 文件 section 内容截断

  • PR #634: 实现引用计数修剪器 LLVM pass

  • PR #635: 修复 #629: 如果 None 作为 Int32 的值传入,则默认为 0

  • PR #637: 修复 appveyor

  • PR #640: LLVM 9 的回溯 llvm refop pass。

  • PR #641: 修复 llvmdev 构建号

  • PR #642: 固定到正确版本的 llvmdev

  • PR #644: 修复 refprune fanout_raise 情况在大图中卡住的问题

  • PR #647: 添加对调用和循环旋转 pass 的通用 attrs 支持

作者

  • Graham Markall

  • Ivan Butygin

  • NavyaZaveri

  • Siu Kwan Lam (核心开发人员)

  • Stuart Archibald (核心开发人员)

  • Valentin Haenel (核心开发人员)

v0.34.0 (2020年8月12日)

此版本将所有平台(aarch64 除外,仍为 LLVM 9 (9.0.1))的 LLVM 升级到 LLVM 10 (10.0.1)。

拉取请求

  • PR #596: 在 LLVM 10 上使用 std::make_unique (通过 #599 Cherry-Pick)

  • PR #606: 恢复“修复 LLVM9 的 CUDA” (通过 #599 Cherry-Pick)

  • PR #599: LLVM 10

  • PR #598: 修复 setup.py 中的 flake

  • PR #602: 添加缺失的目标到 wheels

  • PR #614: 修复 wheel 构建

  • PR #616: 修复变更日志中的发布日期

作者

  • Graham Markall

  • Michał Górny

  • Siu Kwan Lam (核心开发人员)

  • Stuart Archibald (核心开发人员)

  • Valentin Haenel (核心开发人员)

v0.33.0 (2020年6月10日)

此版本升级到 LLVM 9 并放弃对旧 LLVM 版本的支持。

拉取请求

  • PR #593: 修复 LLVM9 的 CUDA

  • PR #592: 修复 meta.yaml

  • PR #591: buildscripts: 解除 wheel 的固定

  • PR #590: 添加 python_requires 到 setup.py

  • PR #582: 添加 LLVM 版本检查的覆盖,重新格式化文档。

  • PR #581: 添加关于 LLVM 版本支持的常见问题条目。

  • PR #580: Trove 分类器可能已过时。

  • PR #577: llvmlite wheel 构建修复

  • PR #575: 更新发布日期

  • PR #548: 升级到 LLVM9

  • PR #521: 允许从块中移除指令

作者

  • Graham Markall

  • Jan Vesely

  • Siu Kwan Lam (核心开发人员)

  • Stuart Archibald (核心开发人员)

  • Tim Babb

  • Valentin Haenel (核心开发人员)

v0.32.1 (2020年5月7日)

这是一个小型补丁版本,解决了部分打包问题

拉取请求

  • PR 580: Trove 分类器可能已过时。

  • PR 581: 添加关于 LLVM 版本支持的常见问题条目。

  • PR 582: 添加 LLVM 版本检查的覆盖,重新格式化文档。

作者

  • Stuart Archibald (核心开发人员)

  • Valentin Haenel (核心开发人员)

v0.32.0 (2020年4月16日)

此版本的主要更改是移除了针对 Python 2 和 Python <3.6 的特定代码,并使代码库符合 PEP8 规范。

拉取请求

  • PR #577: llvmlite wheel 构建修复

  • PR #560: ENH: 更好的错误消息

  • PR #558: 更新安装文档

  • PR #556: 绑定: 允许空特性列表

  • PR #555: travis: 清理

  • PR #554: azure-pipelines: 更新 VM 镜像。

  • PR #552: 添加关于从 sdist 安装和在非传统平台上安装的段落。

  • PR #551: 移除 python 2, python < 3.6, 修复, 添加 flake8

  • PR #549: 文档中方法调用错误和缺少参数

  • PR #547: 允许在 Visual Studio 2017 上构建

  • PR #543: 更新 LLVM 版本检查中的错误消息。

  • PR #540: 更新到 0.31.0 的最终发布日期

作者

  • Arik Funke

  • Eric Larson

  • Jan Vesely

  • Shan Sikdar

  • Siu Kwan Lam (核心开发人员)

  • Stan Seibert (核心开发人员)

  • Stuart Archibald (核心开发人员)

  • Vladislav Hrčka

v0.31.0 (2020年1月2日)

此版本将 memset/memcpy 切换为使用 LLVM 7+ 的 4 参数样式,并更新了一些文档。

提交

  • PR #485: 恢复“恢复“LLVM 7 更改了 memset 内联函数签名,调整它””

  • PR #520: 开始开发 0.31.0

  • PR #528: 将 cttz 和 ctlz 添加到 irbuilder 文档中。

  • PR #533: 更新废弃文档,完全废弃 5 参数 memset/memcpy

  • PR #535: 更新文档,不再报告 LLVM 3.8 为最新版本!

作者

  • Isaac Virshup

  • Siu Kwan Lam (核心开发人员)

  • Stuart Archibald (核心开发人员)

v0.30.0 (2019年10月9日)

此版本增加了对半精度浮点的支持,并计划废弃接受 5 个参数的 memset/memcpy (参见 LLVM 更改)。

  • PR #518: 修复 wheels 中 -fPIC 标志的使用

  • PR #513: 移除 Anaconda 发行版对 sphinx 版本的限制

  • PR #512: 修复包含“有趣”字符的块标签

  • PR #511: 废弃使用别名的 memset/memcpy

  • PR #510: 添加 fp16 内联函数

  • PR #509: 添加半精度类型

  • PR #502: 为 manylinux1 wheel 构建添加 -fPIC 标志

  • PR #491: 修复 ir.Constant 文档中不正确的层次结构。

  • PR #474: 更新文档

  • PR #470: 修复字符串返回 API 上的内存泄漏。

v0.29.0 (2019年5月29日)

此版本将所有支持平台的 LLVM 升级到 8.0,但 PPC64LE 除外。由于 LLVM 8.0 在 PPC64LE 上运行存在诸多问题,我们决定使用在 PPC64LE 上更稳定的 LLVM 7.1。此外,非主机 LLVM 目标、AMDGPU、NVPTX 和 WebAssembly 已启用,并在我们的 llvmlite 构建中可用。

  • PR #484: 恢复“LLVM 7 更改了 memset 内联函数签名,调整它”

  • PR #483: 使用 PEP 508 环境标记依赖 enum34

  • PR #478: 升级到 llvm8

  • PR #469: 支持从当前目录和 egg 文件加载

  • PR #467: 添加 LLVM 7 中缺失的快速数学标志

  • PR #460: LLVM 7 更改了 memset 内联函数签名,调整它

v0.28.0 (2019年3月12日)

此版本增加了许多社区贡献的功能,包括对向量类型以及原子加载和存储的支持。

  • PR #322: 添加向量类型

  • PR #389: 从静态目标文件中添加符号

  • PR #417: 添加对原子加载/存储的支持

  • PR #422: 规范化 replace_* 行为并添加文档

  • PR #426: 修复 IR 函数的 pickle 化并添加测试

  • PR #444: 设置 manylinux1 构建脚本和 CI

  • PR #446: 文档化 patch 命令需要 -p1 参数

  • PR #448: 修复“SyntaxWarning: invalid escape sequence d”

  • PR #449: 合并两个向量类型 PR

  • PR #452: 对 pr426 的一些调整

  • PR #454: 添加标签后缀时截断长标签名称。

  • PR #458: 添加关于 v0.27.1 的变更日志信息

v0.27.1 (2019年2月1日)

针对 OSX 包无效 wheel 哈希的 bug 修复版本。源代码未更改。

v0.27.0 (2018年12月28日)

此版本将 llvmlite 更新到 LLVM 7。请注意,LLVM 7.0.0 包含一个关键 bug,该 bug 已通过 llvmdev conda package recipe 中包含的补丁解决。LLVM 7.0.1 的最终版本也可能解决此问题。

  • PR #434: 为 RPi 构建添加另一个线程。

  • PR #430: llvm lld 集成,合并 #428

  • PR #428: 将 LLD 作为 llvmdev 包的一部分构建

  • PR #413: 使用 Azure Pipelines 设置 CI

  • PR #412: LLVM 7 支持

v0.26.0 (2018年11月27日)

此版本的主要新功能是支持生成 Intel JIT 事件,这使得在 Intel VTune 中对 JIT 编译代码进行分析成为可能。此版本还包含一些针对 ARMv7 的次要构建改进和一些小修复。

LLVM 7 支持最初计划在此版本中发布,但在测试中出现一些问题后不得不推迟。llvmlite 仍需要 LLVM 6。

  • PR #409: 在 armv7l 上使用原生 cmake

  • PR #407: 限制 armv7l 上 llvm 构建的线程数。

  • PR #403: 为 ObjectRef __del__ 方法添加关闭检测。

  • PR #400: conda recipe: 添加 make 作为构建依赖

  • PR #399: 将 get_element_offset 添加到 TargetData

  • PR #398: 修复 Constant 对象上的 gep 方法调用

  • PR #395: 修复 irbuilder 文档中的拼写错误

  • PR #394: 为 LLVM 启用 IntelJIT 事件以支持 VTune

v0.25.0 (2018年9月18日)

此版本增加了对 FMA 指令的支持,并对文档和构建进行了改进。从本版本开始,我们的 CI 流程中包含了 ARMv8 (AArch64) 测试。

  • PR #391: 修复损坏的 win32 py2.7 构建。

  • PR #387: 防止列表中出现空特性

  • PR #384: 读取 conda-build 设置的 CMAKE_GENERATOR

  • PR #382: 重写安装说明,指出 LLVM 构建挑战

  • PR #380: 添加 FMA 内联函数支持

  • PR #379: Jetson tx2 上的 ARM aarch64 测试

  • PR #378: 添加 slack,删除 flowdock

v0.24.0 (2018年7月6日)

此版本新增对 Python 3.7 的支持,并修复了一些构建问题。它还包含一个更新的 llvmdev 包的 SVML 补丁,该补丁解决了某些向量化问题。它还为 ppc64le 架构添加了一个选择性 LLVM 6.0.1 llvmdev 构建。

  • PR #374: 修复损坏的补丁选择器

  • PR #373: 从 readme 添加长描述

  • PR #371: 基于 RC 的 LLVM 6.0.1 构建和 PPC64LE 的修复

  • PR #369: Conda Build 3 的 Recipe 修复

  • PR #363: 针对 SVML 函数计算不正确向量化因子的解决方法

  • PR #356: 修复 OpenBSD 上的构建。

  • PR #351: Python 3.7 兼容:在 re.sub 中正确转义 repl

v0.23.2 (2018年6月1日)

这是一个 bug 修复版本,旨在帮助解决一个关键的 Numba 问题,该问题可能影响从 PyPI (pip)、Anaconda 或 Intel Python 以外的来源下载 llvmlite 包的用户:https://github.com/numba/numba/issues/3006

SVML 支持现在在编译时检测并烘焙到一个由 llvmlite 暴露的函数中。此函数可以在运行时查询,以了解 llvmlite 编译所针对的 LLVM 是否支持 SVML,然后可以相应地调整代码生成路径。

以下 PR 已在此版本中关闭

  • PR #361: 添加 SVML 检测和声明支持的函数。

v0.23.1 (2018年5月17日)

这是一个次要补丁版本,不包含代码更改。它的发布是为了修复 llvmdev(llvmlite 依赖于此)的构建配方中的几个问题。

以下 PR 已在此版本中关闭

  • PR #353: PR 修复 llvmdev 构建配方。

  • PR #348: llvmdev: conda recipe 增强

v0.23.0 (2018年4月24日)

在此版本中,我们升级到 LLVM 6。添加了两个 LLVM 补丁

  1. 一个补丁用于修复 LLVM bug (https://bugs.llvm.org/show_bug.cgi?id=37019),该 bug 导致在 CFG 打印期间出现未定义行为。

  2. 一个补丁用于启用 Intel SVML 超越函数的自动向量化。

以下 PR 已在此版本中关闭

  • PR #343: 修复由于 LLVM 中 Twine 使用导致的未定义行为 bug

  • PR #340: 这使 llvmlite 使用 LLVM 6.0.0 作为其后端。

  • PR #339: 添加 cttz & ctlz

  • PR #338: 添加 3 个位操作内联函数

  • PR #330: 添加对 LLVM fence 指令的支持

  • PR #326: 为所有超越函数启用 Intel SVML 增强的自动向量化

    超越函数

v0.22.0 (2018年2月15日)

在此版本中,我们更改了保护 LLVM 免受竞争条件的锁定策略。以前,llvmlite 用户(如 Numba)负责此锁定。现在,llvmlite 对所有对 LLVM API 的调用强制执行全局线程锁。这应该会显著减少错误。未来的 llvmlite 版本在确定某些函数是线程安全的后,可能会手动将其从锁定中豁免。

以下 PR 已在此版本中关闭

  • PR#318: 确保 LLVM C-API 并发使用的线程安全性

  • PR#221: 添加 LLVM 3.9 中的所有函数/返回值属性

  • PR#304: 暴露对静态构造函数/析构函数的支持

v0.21.0 (2017年12月6日)

在此版本中,我们升级到 LLVM 5。我们的构建脚本现在使用 conda-build 3。对于我们的预构建二进制文件,在类 Unix 系统上使用 GCC 7 工具链,并且 OSX 最低部署目标是 10.9。

以下 PR 已在此版本中关闭

  • PR #315: conda build 3 的更新。

  • PR #307: LLVM5 的修复。

  • PR #306: 为 LLVM 5.0 支持努力。

v0.20.0 (2017年9月6日)

从这个次要版本开始,我们支持 Linux、OSX 和 Windows 的 wheels。与启用 wheels 相关的拉取请求是 #294、#295、#296 和 #297。文档也有修复(#283 和 #289)。

v0.19.0 (2017年7月6日)

这是一个次要版本,包含以下修复。

  • PR #281, 问题 #280: 修复 GEP 地址空间问题

  • PR #279: 修复 #274 gep 中的地址空间

  • PR #278: 添加 Readthedocs 徽章

  • PR #275: 添加在进行 conda-build 时传递的变量

  • PR #273: 修复 module.get_global 的行为

  • PR #272: cmpop 包含比较类型,而不是 lhs

  • PR #268, 修复 #267: 支持 packed struct

以下是 CI 构建相关的更改

  • PR #277: 为 llvmdev 添加传递 gcc 标志

  • PR #276: 移除 jenkins 构建脚本

v0.18.0 (2017年5月4日)

这是一个次要版本,修复了 wheel 构建的几个问题(#263、#262、#258、#237)。此外,我们还对在 PPC64LE 平台上运行进行了一些小修复(#261)。并且,我们添加了针对 PyPy 的 CI 测试(#253)。

v0.17.1 (2017年4月12日)

这是一个 bug 修复版本,解决了问题 #258,即我们的 LLVM 绑定共享库在 wheel 构建中缺失。

v0.17.0 (2017年4月9日)

在此版本中,我们正在升级到 LLVM 4.0。我们还开始为 64 位 Linux 平台 (manylinux) 提供 wheel 包。

修复

  • 问题 #249, PR #250: 默认禁用 libstdc++ 的静态链接。

增强

  • PR #246: 为 pip 依赖解析添加 requirements.txt

  • PR #238: LLVM 4.0

  • PR #222: 启用 wheel 构建

v0.16.0 (2017年2月16日)

API 变更

  • 从 LLVM 3.8 切换到 3.9

  • LLVM 3.9 中移除了 TargetData.add_pass

增强

  • PR #239: 启用 fastmath 标志

  • PR #233: llvm3.9.1 的更新

  • PR #199: 更新以适应 LLVM 3.9 中的更改

修复

  • PR #236: 修复带有长值的元数据

  • PR #231: 修复 Python2.7 的 setup.py,以便 pip 自动安装依赖项

  • PR #226: 修复 get_host_cpu_features() 以使其正确失败

v0.15.0 (2016年12月20日)

增强

  • PR #213: 添加 ObjectFile 的部分 LLVM 绑定。

  • PR #215: 在构建器中添加内联汇编助手。

  • PR #216: 允许在 alloca 指令中指定对齐方式。

  • PR #219: 移除模块链接中不必要的验证。

修复

  • PR #209, 问题 #208: 修复库文件名过于严格的测试。

v0.14.0 (2016年10月17日)

增强

  • PR #104: 添加绑定以获取和查看函数控制流图。

  • PR #210: 改进 llvmdev recipe。

  • PR #212: 为原生汇编解析器添加初始化器。

v0.13.0 (2016年8月24日)

增强

  • PR #176: 从 LLVM 3.7 切换到 LLVM 3.8。

  • PR #191: 允许设置全局变量的对齐方式。

  • PR #198: 添加缺失的函数属性。

  • PR #160: 转义元数据字符串的内容,以允许嵌入任何字符。

  • PR #162: 添加对创建调试信息节点的支持。

  • PR #200: 改进元数据发射 API 的可用性。

  • PR #200: 允许调用带有元数据参数的函数(例如 @llvm.dbg.declare)。

修复

  • PR #190: 抑制 LLVM 在某些情况下打印的优化备注。

  • PR #200: 允许将元数据附加到 ret 指令。

v0.12.1 (2016年7月12日)

新版本,用于修复 PyPI 上的包。与 v0.12.0 相同。

v0.12.0 (2016年7月6日)

增强

  • PR #179: 允许 llvmlite 在 armv7l Linux 上构建。

  • PR #161: 允许向函数添加元数据。

  • PR #163: 允许发出快速数学 fcmp 指令。

  • PR #159: 允许在 TargetMachine 中发出详细汇编。

修复

  • 问题 #177: 使 setup.py 与 pip install 兼容。

v0.11.0 (2016年5月19日)

增强

  • PR #175: 在构建时检查 LLVM 版本

  • PR #169: 非外部全局变量的默认初始化器

  • PR #168: 添加 ir.Constant.literal_array()

v0.10.0 (2016年3月31日)

增强

  • PR #146: 改进 setup.py clean 以清除更多残留物。

  • PR #135: 移除部分 llvmpy 兼容 API。

  • PR #151: 始终在添加到 pass manager 时复制 TargetData。

  • PR #148: 使加载绑定 DLL 时的错误更明确。

  • PR #144: 允许覆盖 Linux 构建中的 -flto

  • PR #136: 移除 Python 2.6 和 3.3 兼容性。

  • 问题 #131: 通过使类型实例可调用来简化常量的创建。

  • 问题 #130: 测试套件现在确保运行时 DLL 依赖项在某个预期集合中。

  • 问题 #121: 简化 Unix 上的构建过程并移除与 LLVMOProfileJIT 的硬编码链接。

  • 问题 #125: 加快原始数组常量的格式化。

修复

  • PR #155: 正确发出元数据 null 的 IR。

  • PR #153: 移除 TargetMachine::getDataLayout() 的已废弃用法。

  • PR #156: 将 personality 从 LandingPadInstr 移到 FunctionAttributes。它在 LLVM 3.7 中被移动。

  • PR #149: 正确实现 LLVM 作用域。

  • PR #141: 确保 sdist 中不包含 CMakeCache.txt 文件。

  • PR #132: 纠正 llvmir.py 示例中的常量。

v0.9.0 (2016年2月29日)

增强

  • PR #73: 添加 get_process_triple() 和 get_host_cpu_features()

  • 从 LLVM 3.6 切换到 LLVM 3.7。某些内存操作生成的 IR 已更改。

  • 提高了 IR 序列化性能。

  • 问题 #116: 改进当二元操作数的类型不同时报错信息。

  • PR #113: 允许 Type.get_abi_{size,alignment} 不受识别类型的影响。

  • PR #112: 支持类型名称中的非字母数字字符。

修复

  • 移除 Linux 上的 libcurses 依赖。

v0.8.0 (2015年10月23日)

  • 更新 LLVM 到 3.6.2

  • 为 IRBuilder.load() 和 IRBuilder.store() 添加 align 参数。

  • 允许设置 ValueRef 的可见性、DLL 存储类

  • 支持使用 OProfile 进行性能分析

v0.7.0 (2015年8月31日)

  • PR #88: 提供 MCJIT 对象缓存的钩子

  • PR #87: 为 ir.Builder 添加间接分支和异常处理 API。

  • PR #86: 添加带有溢出功能的整数算术的 ir.Builder API

  • 问题 #76: 修复 LLVM 使用 CMake 构建时非 Windows 构建的问题

  • 废弃 ExecutionEngine 中的 .get_pointer_to_global() 并添加 .get_function_address() 和 .get_global_value_address()。

v0.6.0 (2015年6月30日)

增强

  • 从 LLVM 3.5 切换到 LLVM 3.6。元数据节点生成的 IR 略有变化,并且“旧 JIT”引擎已被移除(现在只有 MCJIT 可用)。

  • 为 IRBuilder 上的算术指令添加可选的 flags 参数。

  • 支持函数返回类型的属性。

v0.5.1 (2015年6月8日)

修复

  • 修复嵌套 if_then() 中基本块的隐式终止问题

v0.5.0 (2015年5月27日)

新文档托管于 https://llvmlite.pydata.org.cn

增强

  • 添加来自 numba.cgutils 的代码生成助手

  • 支持 memset, memcpy, memmove 内联函数

修复

  • 修复 round-trip parse_assembly() 时的字符串编码问题

v0.4.0 (2015年3月30日)

增强

  • 添加 Module.get_global()

  • 将 Module.global_variables 重命名为 Module.global_values

  • 支持永久加载库

  • 添加 Type.get_abi_alignment()

修复

  • 将 LLVM 版本作为元组暴露

已打补丁的 LLVM 3.5.1:更新到 3.5.1,带有与 v0.2.2 相同的 ELF 重定位补丁。

v0.2.2 (2015年1月29日)

增强

  • 支持 addrspacescast

  • 支持尾调用、调用约定属性

  • 支持 IdentifiedStructType

修复

  • GEP 地址空间传播

  • 各种安装过程修复

已打补丁的 LLVM 3.5:来自 numba binstar 通道的二进制文件使用已打补丁的 LLVM3.5 来修复 LLVM ELF 重定位 bug,该 bug 是由在 64 位二进制文件中使用 32 位相对偏移引起的。该问题似乎在 CentOS 等强化内核上更常发生。已打补丁的源代码可在以下位置获取:https://github.com/numba/llvm-mirror/releases/tag/3.5p1

v0.2.0 (2014年12月16日)

这是第一个正式版本。它包含一些功能添加和 bug 修复。它满足了在 numba 和 numbapro 中替换 llvmpy 的所有要求。

v0.1.0 (2014年11月13日)

这是第一个版本。此版本发布用于 llvmlite 和 numba 在正式发布前的 Beta 测试。