专栏名称: Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,社区交流。信息来源是整个全球Rust社区。
目录
相关文章推荐
91产品  ·  抖音电商商品卡直播培训资料(95P) ·  14 小时前  
人人都是产品经理  ·  转岗B端产品涨薪40%后,我明白了这个职场真相 ·  23 小时前  
51好读  ›  专栏  ›  Rust语言中文社区

【Rust日报】2024-04-29 wgpu: v0.20.0 发布

Rust语言中文社区  · 公众号  ·  · 2024-04-30 23:10

正文

Zed 解析: Rope 和 SumTree

Zed是 Rust 构建的文本编辑器, 本文将介绍他的核心数据结构——Rope和SumTree。

Rope和传统字符串比较:

  • Rope是一种二叉树结构,每个叶节点储存一个字符串和其长度,而树上的其他节点则存储所有左子树叶节点长度的总和。与字符串相比,在编辑大型文件或进行频繁编辑时,Rope更内存和性能高效,因为可以避免大量内存分配和字符移动。

Zed的Rope实现——SumTree:

  • Zed没有选择典型的Rope实现,而是采用了SumTree,这是一种特殊的B+树,允许在O(log N)时间内进行高效的数据遍历。SumTree中的每个节点都包含一个摘要(Summary),这个摘要可以是任何信息,如文本的UTF-8和UTF-16的长度、行数等。

使用SumTree的好处:
SumTree不仅支持并发访问和多线程操作,还能快速生成文本的快照,非常适合进行异步保存、备份或多用户编辑等操作。

Zed中有超过20个功能使用了SumTree结构,如项目中的文件列表、git blame信息、聊天消息、诊断信息等。总结来说,SumTree作为Zed的核心组件,不但具备了常规Rope的优势,还赋予了Zed极高的性能和灵活性,使其成为一个高效的代码编辑器。

原文链接 https://zed.dev/blog/zed-decoded-rope-sumtree

wgpu: v0.20.0 发布

wgpu 是 跨平台、安全、纯Rust 的图形 API, 目前 v0.20.0 版本发布了,主要变化:

  • 现在Wgpu支持在管道中覆写常量
  • 许多数字内建函数增加了常量求值实现
  • Wgsl添加了一些仅限本地的新特性,如子组操作
  • Shaders中支持64位有符号和无符号整数
  • 等等...

更多特性见 原文链接 https://github.com/gfx-rs/wgpu/releases/tag/v0.20.0

--

From 日报小组 BobQ, FBI小白

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区