< 返回版块

苦瓜小仔 发表于 2025-08-21 13:34

Tags:日报

文章《使用 #[derive(Arbitrary)] 提高 fuzzing 的速度》

作者:nnethercote

这篇文章讨论了如何通过更新 Rust 的 arbitraryderive_arbitrary crate 到 v1.4.2 来减少编译时间和可能提高模糊测试的速度。

作者通过三个改进减少了生成代码的大小和编译时间:将每种类型的计数器标记为 const,移除了无字段枚举的计数器代码,以及优化了计数器更新代码的重复性。

这些改进在实际项目中将增量重建时间从 4.0 秒减少到 3.8 秒,约减少了 5%。作者建议立即更新到 v1.4.2,并检查 Cargo.lock 确保更新成功。

阅读:https://nnethercote.github.io/2025/08/16/speed-wins-when-fuzzing-rust-code-with-derive-arbitrary.html

Reddit:https://www.reddit.com/r/rust/comments/1mrmdft/speed_wins_when_fuzzing_rust_code_with/

极简 FAT32 文件系统驱动程序,用于 SDCard

这段旅程始于我开发一个新的嵌入式系统项目,当时我想将一些数据记录到 SD 卡上,然后在电脑上进行分析。多年来,我一直在致力于开发一套自己的工具套件等,用于使用定制设计的 STM32 开发板(运行 Rust 语言)构建机器人项目。

到目前为止,stm32f4xx-hal库在这方面表现出色。当我发现这个库支持硬件级 SDIO 用于 SD 卡通信时,我非常高兴。然而,问题在于,这只是非常底层的,并且仅提供从特定块地址一次读写 512 字节块的功能。

我决定是时候开始一个副业了:编写我自己的 FAT32 驱动程序,该驱动程序专门在上述 HAL 库的限制下运行。我首先在本地机器上运行的 Python 原型中实现了所有逻辑。之后,我将所有逻辑移植到 no_std rust 中,并再次确保它们在本地机器上运行正常。

关键在于确保在使用机器底层文件 IO 时,将其抽象出来,以便每次以 512 字节为单位进行读写操作。我的设想是,当我在嵌入式平台上运行 Rust 代码时,只需将 IO 函数替换为 HAL 库提供的函数即可。

长话短说,第一次就成功了!!我发布了我的 crate,将其导入到我的嵌入式项目中,编译后,它就完美运行了。说实话,我当时很震惊,我非常确定它一定会成功,但同时我也有点紧张,因为我花了几周时间,利用仅有的一点空闲时间,来做这件事,所以当它成功的时候,我松了一口气!

无论如何,我只是想与大家分享我所构建的东西,希望有人觉得这个项目很有趣。

我也一直在我的 YouTube 频道上记录这个过程,如果有人想跟着一起看,你可以在这里找到到目前为止的工作:

Crate: https://crates.io/crates/fat32rs

示例:https://github.com/careyi3/sd_card_logger

视频:https://www.youtube.com/playlist?list=PLMqshdJjWZdmSuhXz-m0tcMFl2EB7CK6R

Reddit:https://www.reddit.com/r/rust/comments/1mrz2lu/i_just_published_a_minimal_fat32_file_system/

Montage:基于 Tauri 的轻量级、跨平台的视频编辑器

image

montage 是一个轻量级、跨平台的视频剪辑编辑器,适合需要快速进行视频剪辑的用户。它结合了 Tauri 的高性能和 Rust 的后端处理能力,提供了一个简单易用的界面和基本的剪辑功能。

功能特点:

  • 基本剪辑功能:支持视频剪辑、裁剪、拼接等常见操作。
  • 用户友好界面:提供直观的拖拽操作和时间轴编辑功能。
  • 跨平台支持:能够在 Windows、macOS 和 Linux 上运行。
  • 轻量级设计:注重性能优化,减少资源占用。

项目结构:

  • 前端:使用 HTML/CSS/JavaScript 构建用户界面。
  • 后端:使用 Rust 编写,处理视频处理逻辑和系统交互。
  • Tauri:作为桥梁,连接前端和后端,提供跨平台支持。

仓库:https://github.com/MatijaNovosel/montage

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页