slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Codon​:IEEE Spectrum 推出新Python编译器
17611538698
webmaster@21cto.com

Codon​:IEEE Spectrum 推出新Python编译器

资讯 0 1601 2023-04-03 06:16:36

IEEE Spectrum最近发布了Codon,这是一种专门开发的 Python 编译器,正如他们所说,“为Python 众所周知的慢速型编译器提供涡轮增压技术”。


图片

“我们在编译过程中进行类型检查,这让我们避免了在运行时进行所有昂贵的类型操作,”麻省理工学院 CSAIL 研究生和 Codon 的作者 Ariya Shajii 说。


Codon在运行时没有任何不必要的数据或类型检查,可以达到零开销。在性能方面,“Codon 可以与 C++ 相当。与 Python 官方解释器相比,我们将看到的是 10 到 100 倍的改进,”他说。但 Codon 的方法有其权衡取舍。“我们进行这种静态类型检查,并且我们不允许 Python 的一些动态特性,比如在运行时动态更改类型,”Shajii 还说:“还有一些 Python 库,我们还没有实现……”


Codon 最初设计用于基因组学和生物信息学。“这些领域的数据集正变得非常大,而像 Python 和 R 这样的高级语言计算速度太慢,无法处理每组测序数据,特别是 TB 级,”Shajii 解释说,“所以我们想要填补的空白——通过训练一种无需编写 C 或 C++ 代码即可处理大数据的方法,为不全是计算机科学家或程序员的领域专家提供帮助。” 


除了基因组学,Codon 还可以应用于处理海量数据集的类似应用,以及 GPU 编程和并行编程等领域,基于 Python 的编译器支持。事实上,Codon 现在正通过初创公司 Exaloop 在生物信息学、深度学习和量化金融领域进行商业应用,Shajii 创立了公司,旨在将 Codon 从学术项目转变为行业应用。


为了使 Codon 能够与这些不同的域一起工作,该团队还开发了一个插件系统。“它就像一个可扩展的编译器,你可以为基因组学或其他领域编写一个插件,这些插件可以有新的库和新的编译器优化......”


关于 Codon 的下一步,Shajii 和团队目前正在研究本地实现广泛使用的 Python 库,以及特定于库的优化,以从这些库中获得更好的性能。他们还计划创建一个广受欢迎的功能:Codon 的 WebAssembly 后端,以支持在 Web 浏览器上运行代码。


安装与实践

首先安装Codon环境

/bin/bash -c "$(curl -fsSL https://exaloop.io/install.sh)"
安装完成后,输入codon查看是否配置好了,如下即可:
error: Available commands: codon 

如果报错找不到codon,请使用如下步骤:

手动配置/root/.bashrc,添加export PATH=/root/.codon/bin:$PATH并source /root/.bashrc激活。

环境修改


Codon默认的Python库是libpython.so,但是Debian使用的是具体的名字,如libpython.3.9.so,所以在编译的时候会报错找不到依赖库,执行以下命令(注意Python版本),软链接一个即可:

ln -s /usr/lib/x86_64-linux-gnu/libpython3.9.so /usr/lib/x86_64-linux-gnu/libpython.so

实际测试

Codon目前还处于原始的状态,比如不支持unicode只能使用ASCII,Python package支持度不足等问题。但是瑕不掩瑜

使用如下编译程序:

codon build -exe -release CheckSysUpgradable.py

可以看到,程序中出现了from python import xxx的内容。

这是因为很多package是不被codon支持的(可以粗略的理解为不兼容),所以‘借用’了Python的功能。此外,在 num = output.count("upgradable")之前还出现了num = 0,这个不常用的初始化是为了符合LLVM的要求,所以Codon也不是那么的Python了。

总结


性能上,比CPython快很多,因为是优化编译的程序,不是解释器这类能比的。


兼容性上,Codon之于Python,更像是Carbon之于C++,已有的Python程序用Codon编译,需要修改的地方不少。


总体而言,Codon更像是借用了Python风格的新语言,从官网上演示的程序后缀是.codon而不是.py就能看出来一二。


作者: 大雄

评论