为什么用 Rust 构建原生 UI 程序这么困难
Rust 正被用于构建 Linux 内核和 Android 操作系统,也被 AWS 用于关键基础设施,以及用于 ChromeOS 和Firefox。尽管 Rust 很有前景,但它在 GUI 原生开发领域还有所欠缺。在 2019 年,GUI 是阻碍采用 Rust 的第六大原因。这其实与语言本身的设计有关,Rust 使得构建 UI 的常见方法进行建模很困难。
在Warp,我们一直在用 Rust 构建一个自定义的UI框架,用来在 GPU 上渲染。构建这个框架是非常棘手的,也是一项巨大的投资,但它在构建一个拥有丰富 UI 元素的终端时发挥了很好的作用,其速度不亚于地球上的任何其他终端。如果我们使用 Electron 或 Flutter 这样的非原生方式来运行,这种水平的性能几乎是不可能的。
在这篇文章中,我将讨论为什么Rust独特的内存管理模型和缺乏继承性使得传统的技术难以建立一个 UI 框架,以及我们一直在解决这个问题的一些方法。我相信这些方法中的一种,或者它们的某种组合,最终将构成一个稳定的跨平台 UI 工具包,用于高性能 UI 渲染,最终给每个人使用。
ReadMore: https://www.warp.dev/blog/why-is-building-a-ui-in-rust-so-hard
Rust 和 WASM 如何驱动 1.1.1.1
2018年4月1日,Cloudflare 宣布推出 1.1.1.1 公共DNS解析器。多年来,我们在平台上添加了用于故障排除的调试页面、全局缓存清除、Cloudflare上区域的0 TTL模式、上游TLS和家庭用的的1.1.1.1。在这篇文章中,我们想分享一些幕后的细节和变化。
当项目开始时,Knot Resolver
被选为DNS解析器。我们开始在它的基础上构建一个完整的系统,以便它能适合Cloudflare的使用情况。拥有一个经过实战检验的DNS递归解析器,以及一个DNSSEC验证器,真是太棒了,因为我们可以把精力放在其他地方,而不是担心DNS协议的实现。Knot Resolver
在其基于 Lua 的插件系统方面相当灵活。它允许我们快速扩展核心功能,以支持各种产品特性,如 DoH/DoT、日志、基于 BPF 的攻击缓解、缓存共享和迭代逻辑覆盖。但是随着流量的增长,我们遇到了某些限制难以突破。终于,我们下定决心重新实现一套 DNS 解析器,基于 Rust 和 WASM 来实现。
ReadMore: https://blog.cloudflare.com/big-pineapple-intro/
From 日报小组 Koalr
社区学习交流平台订阅:
Rustcc论坛: 支持rss
微信公众号:Rust语言中文社区