微软在使用 Rust 重写部分核心 Windows 库
David Weston 在 BlueHat IL 2023 上发表了一场名为“默认安全性”的演讲。他涵盖了很多领域,而演讲的最后部分(约10分钟)则是关于微软在 Windows 的某些领域中引入 Rust 的介绍。
以下是一些亮点:
- 他们的重点是"消灭漏洞类" (killing bug classes)。更多的背景信息可以在微软2019年的研究文章中找到:一种更为积极的方法来保证更安全的代码。
- 他们希望通过内存安全的语言、CPU架构变更以及更安全的语言子集来实现这一点。这次演讲专注于内存安全语言,特别是Rust。
- 他们首先将Rust引入的领域是一个名为
DWriteCore
的字体解析器的跨平台重写。团队报告称解析非常容易。与C++版本相比,字体成形性能提高了5-15%。 - 完成这个项目大约需要两个开发人员半年时间。演讲者表示,这是一个非常有价值的项目,因为这个领域以安全漏洞而著称。
第二个领域是 Win32k GDI 中的 REGION
数据类型。目前在 Windows 消费版中,该功能还未启用。该功能将很快在内部版本中启用。Rust版本的性能很好,有一些小的优势。
总之,Rust已经进入了Windows内核,很快就会得到广泛的应用。
Readmore: https://www.youtube.com/watch?v=8T6ClX-y2AE
Rust Never(!) 类型在模式匹配中的简单尝试
最近,我一直在开发一个用于操作以太坊虚拟机(EVM)字节码和汇编语言的工具。我希望使用相同的数据类型来描述低级字节码和汇编语言。同时,我希望一些指令只能在汇编语言中使用,而不能在字节码中使用(例如,标签只在汇编语言层级上有意义)。我希望在稳定版本的Rust中精确地编码这一点,但是我没有成功。然而,事实证明,你可以在夜间版中(其中RFC1872已经合并)实现这一点。
#![feature(never_type)]
#![feature(exhaustive_patterns)]
enum Insn<T,L> {
PUSH(usize),
LABEL(L),
JUMP(T),
RET
}
type Bytecode = Insn<usize,!>;
type Assembly = Insn<String,String>;
ReadMore: https://whileydave.com/2023/04/16/pattern-matching-in-rusts-neverland/
rustic:一个用 Rust 编写的备份工具
起初我只是想用Rust重新写一下备份工具,但现在已经成为了一款功能齐全的备份工具。我用它来备份我本地的文件到外部硬盘上的本地存储库,以及使用极便宜的冷存储云服务提供商备份到远程存储库。
这个备份工具还有很多特点:
- 备份数据是去重的和加密的。
- 备份存储可以是本地存储或云存储,包括冷存储。
- 可以让多个客户端同时使用无锁操作来访问备份存储库。
- 默认情况下,备份是追加模式在存储库中。
- 操作很强大,可以安全地中止和高效地恢复。
- 可以按主机名、备份路径、标签和标记来组织快照。每个快照也保存了很多元数据。
- 保留策略和旧备份的清理可以高度自定义。
- 后续备份只会处理已更改的文件,但仍会创建完整的备份快照。
- 原地还原只修改已更改的文件。
- 还可以使用配置文件轻松配置所有日常命令。
欢迎尝试使用!我非常乐意听取任何反馈意见。如果有人愿意帮助编码、测试、文档编写或提出功能请求,请加入这个项目!
ReadMore: https://github.com/rustic-rs/rustic
From 日报小组 Koalr
社区学习交流平台订阅:
评论区
写评论还没有评论