文章《使用 #[derive(Arbitrary)]
提高 fuzzing 的速度》
作者:nnethercote
这篇文章讨论了如何通过更新 Rust 的 arbitrary
和 derive_arbitrary
crate 到 v1.4.2 来减少编译时间和可能提高模糊测试的速度。
作者通过三个改进减少了生成代码的大小和编译时间:将每种类型的计数器标记为 const
,移除了无字段枚举的计数器代码,以及优化了计数器更新代码的重复性。
这些改进在实际项目中将增量重建时间从 4.0 秒减少到 3.8 秒,约减少了 5%。作者建议立即更新到 v1.4.2,并检查 Cargo.lock
确保更新成功。
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 的轻量级、跨平台的视频编辑器
montage
是一个轻量级、跨平台的视频剪辑编辑器,适合需要快速进行视频剪辑的用户。它结合了 Tauri 的高性能和 Rust 的后端处理能力,提供了一个简单易用的界面和基本的剪辑功能。
功能特点:
- 基本剪辑功能:支持视频剪辑、裁剪、拼接等常见操作。
- 用户友好界面:提供直观的拖拽操作和时间轴编辑功能。
- 跨平台支持:能够在 Windows、macOS 和 Linux 上运行。
- 轻量级设计:注重性能优化,减少资源占用。
项目结构:
- 前端:使用 HTML/CSS/JavaScript 构建用户界面。
- 后端:使用 Rust 编写,处理视频处理逻辑和系统交互。
- Tauri:作为桥梁,连接前端和后端,提供跨平台支持。
仓库:https://github.com/MatijaNovosel/montage
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论