2025 年 6 月 Rust Jobs Report
阅读:https://filtra.io/rust/jobs-report/jun-25
Rust-Analyzer 更新日志
- 新功能:支持折叠多行参数列表;函数体、在全局符号中包含枚举变体;为元组结构体启用
generate_new
功能。 - 修复:修复文档渲染中的崩溃、解析器错误、
dyn
提示显示问题、naked_asm!
和global_asm!
的安全性问题等。 - 内部改进:重构
ExpressionStore
,将多个辅助功能迁移到SyntaxEditor
。 这些更新提升了功能性和稳定性,优化了用户体验。
阅读:https://rust-analyzer.github.io/thisweek/2025/07/14/changelog-294.html
Rust 语言功能:使特征方法在 const 上下文中可调用
[const] trait Default {
fn default() -> Self;
}
impl const Default for () {
fn default() {}
}
struct Thing<T>(T);
impl<T: [const] Default> const Default for Thing<T> {
fn default() -> Self { Self(T::default()) }
}
const fn default<T: [const] Default>() -> T {
T::default()
}
fn compile_time_default<T: const Default>() -> T {
const { T::default() }
}
const _: () = Default::default();
fn main() {
let () = default();
let () = compile_time_default();
let () = Default::default();
}
RFC3762:https://github.com/rust-lang/rfcs/pull/3762
Reddit:https://www.reddit.com/r/rust/comments/1lzacp2/upcoming_const_breakthrough/
GPT-rs:用 Rust 实现和训练 Transformer & Tokenizer
gpt-rs
是一个用 Rust 编写的开源库,旨在为 OpenAI 的 GPT 模型提供简单易用的接口。
它允许开发者通过 Rust 代码轻松调用 GPT 模型,生成文本、对话或执行其他自然语言处理任务。该库支持多种 GPT 模型,并提供了灵活的配置选项,如设置温度、最大长度等参数。它还支持异步编程,方便与其他 Rust 项目集成。
gpt-rs
的目标是让 Rust 开发者能够快速上手并利用 GPT 模型的强大功能,同时保持代码的简洁和高效。
仓库:https://github.com/liam-ilan/gpt-rs
Uzu:用于 Apple Silicon 的高性能 AI 模型推理引擎
其主要特点如下:
- 简单易用的高级 API:提供简洁明了的接口,方便开发者快速上手。
- 混合架构:支持在 GPU 上以内核形式运行,或通过 MPSGraph(CoreML 之下的低级 API,支持访问 ANE)进行计算。
- 统一的模型配置:便于为新模型添加支持。
- 可追溯的计算:确保与源代码实现的一致性,保证正确性。
- 利用 Apple 设备的统一内存:优化内存使用,提升性能。
基准测试:
仓库:https://github.com/trymirai/uzu
Reddit:https://www.reddit.com/r/rust/comments/1m0fk31/we_made_our_own_inference_engine_for_apple/
Zerofs:基于 SlateDB 的 NFS 服务器实现
ZeroFS 是一款基于 SlateDB 的 NFS 服务器实现,与传统的 S3FS 实现相比,它采用了一种完全不同的存储架构。
ZeroFS 使用 SlateDB(一种基于日志结构合并树的数据库)作为存储后端,将文件切分为 64KB 的块以优化小文件操作和随机 I/O 性能,支持原子批量操作,并通过 B - tree 索引实现快速目录操作。它还支持通过环境变量配置 S3 兼容端点和缓存大小。
未来计划支持硬链接和快照功能。ZeroFS 以数据库原生方式实现文件系统语义,牺牲了与 S3 的直接兼容性,但显著提升了性能。
仓库:https://github.com/Barre/zerofs
Reddit:https://www.reddit.com/r/rust/comments/1m0c1s9/zerofs_the_s3fs_that_does_not_suck/
Thunk:在 Windows XP 上运行的 Rust 程序
Thunk 主要帮你做了下面两件事:
- 将 VC-LTL5 添加到库搜索路径中
- 额外链接 YY-Thunks,以弥补 Vista 和 XP 上没有的 API
注意:Thunk 并不能保证所编译的软件可以成功编译或者编译后正常运行。
仓库:https://github.com/felixmaker/thunk
Edgelinkd:Node-RED 的 Rust 实现
EdgeLinkd 是一个基于 Rust 的运行时,与 Node-RED 流程完全兼容,现在集成了完整的 Node-RED Web UI。
您可以直接在浏览器中打开、设计和运行工作流,所有这些都由高性能 Rust 后端提供支持,无需安装外部 Node-RED。
Node-RED 是一个流行的开源平台,用于连接硬件设备、API 和在线服务,尤其适用于物联网和自动化领域。它拥有强大的基于浏览器的编辑器和庞大的生态系统,但其 Node.js 基础对于边缘设备来说可能会占用大量资源。
仓库:https://github.com/oldrev/edgelinkd
Reddit:https://www.reddit.com/r/rust/comments/1lyuai5/edgelinkd_reimplementing_nodered_in_rust/
Rodio:音频播放库
Rodio 是一款 Rust 生态系统中的音频播放库,已有 9 年历史。
0.21 更新引入了许多改进:
- 易用性提升:API 更加友好,不再对样本类型泛型化,添加了开发者意图警告。
- 功能增强:支持通过构建器配置解码器和输出流,新增了分贝放大、失真效果、限制器以及更多噪声生成器。
- 独立使用:无需依赖 cpal,即可分析音频或生成 WAV 文件。
仓库:https://github.com/RustAudio/rodio
讨论:直接使用 Rust 和 x86_64 汇编语言练习 Linux 系统调用
在学习汇编语言的过程中,我决定将其与 Rust 集成——结果出乎意料地兼容。我可以用汇编语言编写直接的系统调用指令,将它们暴露给 Rust,并在代码中自然地使用它们。
换句话说,这开启了很多可能性:我可以不依赖外部库与内核交互。主要优点是拥有完全的控制权,且没有任何抽象开销——直接按照我想要的方式去做我想做的事情。
Reddit:https://www.reddit.com/r/rust/comments/1lyxyoa/practicing_linux_syscalls_with_rust_and_x86_64/
Intern-mint:切片 intern 库
intern-mint
是一个 Rust 库,用于实现字节切片的共享内存管理技术(interning)。
它通过将相同的字节切片存储在全局静态池中,避免重复分配,节省内存。
该库使用 Arc<[u8]>
存储切片,利用分片哈希表(基于 hashbrown
和 DashMap
)实现高效的并发访问。
它提供了 Interned
类型用于管理共享切片,以及 BorrowedInterned
类型用于避免不必要的克隆。
此外,它还支持与 HashMap
和 BTreeMap
的无缝集成,并提供了可选的 bstr
、serde
和 databuf
扩展功能。
仓库:https://github.com/sweet-security/intern-mint
Reddit:https://www.reddit.com/r/rust/comments/1lzj6fo/yet_another_slice_interning_crate/
讨论:为什么 Rust 选择 *const
而不是 *
“这是 RFC68,它主要是为了避免不安全的 FFI 与 C 世界的混淆,这是使用原始指针最常见的用例”
RFC68:https://rust-lang.github.io/rfcs/0068-const-unsafe-pointers.html
Reddit:https://www.reddit.com/r/rust/comments/1lzoavc/why_did_rust_opt_for_const_instead_of_just/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论