Rust如何在Python的帮助下取代C语言?


Rust如何在Python的帮助下取代C语言?

Rust的支持者们,Mozilla设计的语言为开发人员提供了速度和内存安全,他们正在努力将该语言作为C和C++的长期替代品。

Rust可以在短期内取代C语言的一个地方是在其他语言中使用的传统C库。大部分用于统计和机器学习的Python生态系统是用C语言编写的,这些模块可以被替换或逐步重写。审查。6个Python集成开发环境将被淘汰,以及你可能错过的7个可爱的Python集成开发环境。

在InfoWorld的App Dev Report通讯中,我们可以了解到编程的热点话题。

将Rust代码暴露给Python并不困难。一个Rust库可以将C ABI(应用程序二进制接口)暴露给Python,而不需要做太多的工作。一些Rust crates(如Rust包的名称)已经暴露了Python绑定,使其在Python中有用。

为此,一系列新的项目正在使开发具有方便的Python绑定的Rust库以及部署具有Rust二进制文件的Python包变得更加容易。一组用于 CPython 运行时的 Rust 绑定。它允许 Rust 程序连接到 CPython,使用其 ABI,通过它运行 Python 程序,并在 Rust 中处理 Python 对象的表示。想要连接到 CPython 并从内部控制它的 Rust 程序员。请注意,由于Python对象的管理方式,Rust的安全机制并不总是适用于它们,所以你必须使用一个额外的谨慎措施。对于 Rust 开发者来说,PyO3 项目提供了一种基本的方法来编写 Rust 软件,并在两个方向上与 Python 绑定。

PyO3 对某些 Python 特性的支持仍然是有限的(例如例外),但基本要素已经存在,而且由于 PyO3 对 Rust 特性的习惯性使用,装饰现有的 Rust 代码以使其具有 Python 识别能力相对容易。那些编写与Python运行时密切相关的模块,并且需要与之直接交互的人。

Snaek

它是什么?另一个处于早期阶段的项目,Snaek让开发者创建Rust库,根据需要动态加载到Python中,但不依赖于与Python运行时的静态链接。使用 Snaek 的 Rust 库不需要在编写时特别考虑到 Python,而是简单地暴露出与 C 兼容的方法。

Snaek 的一个潜在缺点是它不使用 ctypes,即与 C 代码接口的标准 Python 库。相反,它使用 cffi,一个由制作 PyPy 的团队开发的替代库。学习 cffi 并不难,但任何已经使用 ctypes 的项目都需要重新设计。

它适合于谁。那些想把用Rust编写的方法暴露给Python脚本的人,或者那些不想或不需要熟悉Python的Rust开发者。

The Cookiecutter模板

它是什么。第四个项目处理了将二进制模块与Python库捆绑时出现的一个常见的机械问题。Cookiecutter 通过模板创建 Python 项目。其中一个可用的模板--Cookiecutter PyPackage Rust跨平台发布--简化了将Rust二进制文件与Python库捆绑的过程。

"这个项目的一个非常重要的目标,"其维护者写道,"就是能够产生一个二进制发布(Wheel),不需要最终用户自己实际编译Rust代码。" Windows用户经常因为缺乏预编译的Windows二进制Python包而感到沮丧,所以任何能够缓解这一问题的东西都会受到欢迎。

它最适合谁。那些创建许多带有Rust绑定的Python项目的人,或者那些试图将这些项目分发给其他人的人。

相关视频。使用Rust开发更安全的软件

快速了解新来的Rust,它被设计用于创建快速的系统级软件。这部两分钟的动画解释片展示了Rust是如何绕过内存和管理等令人困扰的编程问题的。


本文标签

热门标签

会员评论