【Rust日报】Rust FFI - 跨越不可能的边界

科技   2024-07-25 23:39   加拿大  

C++必须变得更安全

CrowdStrike 事件后,C++的安全性备受吐槽。Andrew Lilley Brinker 的博客文章《C++ 必须变得更安全》探讨了提高 C++ 内存安全性的必要性,原因在于 C++ 的广泛使用和在软件基础设施中的关键作用。尽管将现有 C++ 代码重写为 Rust 不切实际,但 C++ 社区正通过契约、配置文件、后继语言和借用检查等方法增强安全性。文章强调在提高 C++ 安全性时,应在内存安全性和代码重写的经济和后勤挑战之间找到平衡,并提倡富有同情心和实际的改进方法。

https://www.alilleybrinker.com/blog/cpp-must-become-safer/

Rust FFI - 跨越不可能的边界

这篇文章主要讨论了作者尝试实现Rust和其他语言(特别是C和Vale)之间无缝互操作的过程。以下是文章的主要内容:

  1. 背景介绍:作者提出了一个看似不可能的任务 - 让其他语言能够直接调用Rust代码,包括使用Rust的泛型和复杂类型。

  2. 初步尝试:作者首先尝试使用rustdoc生成的JSON数据来获取Rust代码的结构信息。这种方法虽然可行,但在处理函数重载时遇到了困难。

  3. 复杂解决方案:为了解决重载问题,作者实现了一套复杂的重载解析和泛型解析逻辑,但这导致代码变得非常复杂(约1700行)。

  4. 寻求帮助:作者在Rust社区寻求帮助,最终得到了Alex Kladov (matklad)的建议,使用Rust的反射特性来获取函数信息。

  5. 改进方案:基于Alex的建议,作者开发出了一个更简单的解决方案,可以选择正确的重载函数并获取其信息。

  6. 最终突破:在文章发布后,一位读者(literallyvoid)提供了一个更简洁的一行代码解决方案。

  7. 最终方法:作者描述了最终工具的工作流程,包括读取C文件中的特殊指令,生成临时Rust程序获取类型信息,然后生成允许C调用Rust函数的Rust库。

  8. 未来展望:作者提到下一步是将这个工具集成到Vale语言中,使Vale能够直接调用Rust代码。

  9. 遗留问题:文章最后提出了一些尚未解决的问题,如如何处理跨语言的内存安全保证等。

https://verdagon.dev/blog/exploring-seamless-rust-interop-part-2

Without Boat大佬谈Pin

此篇是对之前 Mojo 语言开发商 Modular 对 Rust Pin的批评的回应。客观地谈了Pin出现的原因,以及现在存在的问题。

https://without.boats/blog/pin/

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区


Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
 最新文章