【Rust日报】BuFFI - 简化Rust和C++之间的互操作性

科技   2024-11-16 16:12   加拿大  

BuFFI - 简化Rust和C++之间的互操作性

这篇文章介绍了一个名为BuFFI的新工具,用于为Rust代码生成人性化和安全的C++API。BuFFI将所有类型替换为字节缓冲区,从而简化了Rust和C++两端的外部函数。作者在工作中使用该工具删除了数百行样板代码,并消除了许多可能的内存泄漏或错误指针处理。

文章提供了BuFFI的链接、幻灯片和一个基本示例。该工具目前支持Rust 1.82.0工具链,未来每次Rust发布新版本时,BuFFI也会发布新版本以保持兼容性。作者希望能与社区一起解决任何潜在的兼容性问题。

总的来说,BuFFI旨在简化Rust和C++之间的互操作性,提高安全性和工作效率。

https://old.reddit.com/r/rust/comments/1gouxoc/buffi_generate_ergonomic_c_apis_for_your_rust_code/

在编写Rust代码时,为什么经常会遇到一些令人困惑的编译器错误和限制

这个视频是Jon Gjengset在EuroRust 2024大会上的演讲。他指出在编写Rust代码时,我们经常会遇到一些令人困惑的编译器错误和限制,例如为什么某些类型需要实现Send trait、为什么某些生命周期注解看起来很复杂、异步代码为何只使用单核等等。这些问题源于对Rust底层原理和机制缺乏理解。演讲的目的是解释这些深层次概念,帮助开发者自行诊断和避免80%的常见挑战。

Jon自2015年开始使用Rust,曾在麻省理工学院构建一个快速SQL数据库作为博士论文。他现在是Helsing公司的首席工程师,也是Rust教学书籍"Rust for Rustaceans"的作者。他热衷于教学,自2018年以来一直制作Rust实时编码和教育视频,还是"Rustacean Station"播客的合伙人。EuroRust是一年一度为欧洲Rust社区举办的为期两天的大会。

https://youtu.be/8-KLX1PGg8Q?si=rqkSm2fHVafnF-cO

ipass  - 用于与 Apple macOS 密码(iCloud密钥链)进行交互

ipass 命令行工具,用于与 Apple macOS 密码(iCloud密钥链)进行交互。它是使用 Rust 语言重写的 apw 项目,因为原先的 apw 项目在作者的 M3 macOS 15.0.1 系统上无法运行。

ipass 利用 macOS 14 及更高版本中的内置辅助工具来实现此功能。你可以通过发行页面下载二进制文件,或使用 cargo 命令从源码安装。使用前需要先通过 ipass start 启动后台守护进程,并使用 ipass auth 进行身份验证。

它允许你列出特定域名的可用密码、获取密码等操作。

https://github.com/kezhenxu94/ipass

Wild - 一个新的链接器

Wild 是一个新的链接器,目标是在迭代开发过程中实现非常快速的链接。它目前还是一个正在进行的工作,不应该被用于生产环境的二进制文件链接。

Wild链接器主要的动机是现有的mold链接器虽然很快,但不支持增量链接,而作者也没有计划添加这个功能。Wild虽然目前还没有增量链接,但这是最终目标。通过用Rust编写,希望能够解决增量链接的复杂性。

目前Wild支持在Linux上对x86-64架构进行静态链接、静态PIE链接、动态链接和共享对象链接,并支持Rust proc-macro。但还缺少很多功能,如增量链接、其他架构支持、更多链接器参数支持、链接脚本支持、Mac和Windows支持以及LTO支持等。

该项目进行了一些基准测试,表明在非增量链接场景下,Wild的速度相当高效并能较好利用多线程。但测试还非常初步,对其他场景如大型二进制文件链接等性能还未可知。

作者欢迎贡献,并提供了使用Wild链接Rust代码的cargo命令示例。该项目取名"Wild"是因为链接器的名称通常以"ld"结尾,加上期望实现增量(Incremental)链接的"I",再加上开源项目习惯使用递归首字母缩略词,所以就叫Wild。

https://github.com/davidlattimore/wild

--

From 日报小组 Mike

社区学习交流平台订阅:

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


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