Rope优化,第一部分

2024-11-21

本文介绍了Zed编辑器中Rope数据结构的性能优化。Rope是一种类似B树的字符串存储结构,用于高效地处理文本。文章重点介绍了如何通过位掩码索引换行符和制表符的位置,从而将原本需要遍历字符的 `offset_to_point` 方法优化为只需进行位运算,大幅提升了性能。通过使用 `count_ones` 和 `leading_zeros` 等CPU指令,避免了循环和分支,最终实现了70%的性能提升。文章还讨论了制表符索引的添加,为后续的优化工作奠定了基础。

阅读更多
8
未分类 Rope

Zed:面向未来的代码编辑器

2024-11-03

Zed是一款专为人类与AI高效协作而设计的下一代代码编辑器。它使用Rust编写,速度快,能充分利用多核CPU和GPU。Zed支持集成大型语言模型(LLM),进行代码生成、转换和分析,并提供协作功能,如团队聊天、共享笔记和屏幕。它具有多缓冲区编辑、交互式编程、多语言支持、终端和任务运行器以及Vim模式等特性。Zed拥有丰富的扩展生态系统,并注重细节设计,提供语言服务器支持、代码大纲视图、文本和行操作等功能。

阅读更多
21

Zed 推出 SSH 远程开发功能

2024-10-31

Zed 编辑器现已支持 SSH 远程开发。用户可以在远程服务器上运行语言服务器、任务和终端等,充分利用云硬件资源,而 UI 则在本地运行,提供流畅的图形体验。该功能支持一次性项目和长期连接配置,并已解决 SSH 连接维护、远程服务器构建以及与现有 Zed 功能集成等问题。 Zed 使用 ControlMaster 保持单一 SSH 连接,避免重复身份验证;远程服务器采用 musl 编译,增强兼容性;守护进程模式确保连接中断后远程服务器继续运行;本地备份未保存的更改,防止数据丢失;此外,SSH 远程开发也支持协作功能。

阅读更多
23
未分类

Zed Decoded: 为什么不直接嵌入 Neovim?

2024-06-14

这篇文章探讨了 Zed 编辑器为何选择构建自己的 Vim 模式,而不是直接嵌入 Neovim。作者详细解释了 Zed 的 Vim 模式提供的功能,包括对各种动作、操作符和计数的支持,以及与 Zed 特有功能的集成。作者还深入探讨了 Zed 和 Vim 在底层架构上的差异,例如字符寻址和换行符处理,这使得直接嵌入 Neovim 变得复杂。文章强调,Zed 的目标是提供高度协作和高性能的文本编辑体验,而直接嵌入 Neovim 会导致代码库重复、开发工作量加倍,并可能影响 Zed 的核心优势。最后,文章还透露了一个有趣的事实:Zed 在测试中使用 Neovim 生成“黄金文件”,用于验证 Zed Vim 模式的行为。

阅读更多
53
未分类

Zed 解码:Linux 何时到来?

2024-05-07

本文介绍了 Zed 编辑器在 Linux 上的开发进展。Zed 是用 Rust 编写的,虽然 Rust 具有跨平台特性,但 Zed 为了实现高性能和原生体验,需要深入集成到各个平台的 API 中。因此,Zed 开发了一个名为 GPUI 的框架,用于抽象化平台差异。文章详细介绍了 Linux 平台的多样性带来的挑战,包括发行版、桌面环境、显示服务器等方面的差异。Zed 团队选择支持 Ubuntu 发行版、X11 和 Wayland 显示服务器,并使用 Blade 渲染引擎来实现图形渲染。文章还强调了开源社区对 Zed on Linux 开发的巨大贡献,并展望了未来的开发路线图,包括完善功能、提高性能和稳定性等。

阅读更多
48

Zed 解码:Rope Sumtree

2024-04-28

本文详细解释了 Rope Sumtree 的工作原理,这是一种用于分布式日志系统中的轻量级、高效且可并发的哈希表。它深入探讨了 Rope Sumtree 的数据结构、并发控制和性能优势。这篇文章适合对分布式系统、数据结构和性能优化感兴趣的技术人员。

阅读更多
43