< 返回版块

Koalr 发表于 2023-04-26 10:46

Tags:rust,日报

微软在使用 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

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页