官方博客:Atom 1.3 发布(2015.12.11)

原文:Atom 1.3

Atom 1.3 和 1.4-beta 已经发布了。Atom 1.3 优化了启动速度、优化了查找和替换的性能、新增了便携模式。

1.3.0 中的主要改进

你可以在 Release 页面 中找到所有的修改。

启动速度优化

Atom 团队的工作重点之一就是优化性能,而今天我们又取得了一些新的进展。简而言之,在你安装了很多插件的情况下,1.3 版本会让你的启动速度提升 20% 到 30%. 这篇日志就不详细介绍背后的工作了,但如果你感兴趣的话可以看一下下面这些 Pull Request:

标记(Marker)的性能优化(直接影响查找和替换)

为了改进 Atom 的性能,我们一直在致力于改进 Marker 相关的数据结构。Marker 是 Atom 的核心概念之一 —— 光标、选择文本、自动补全建议、查找和替换都是基于 Marker 实现的。更快地标记这些元素,会显著地提高前面提到的这些功能的性能,尤其是存在非常多的标记的情况下。

我们将原来基于 B+ Tree 的索引实现(在之前的日志中有介绍过)替换成了一种叫做 treap 的随机平衡二叉树的数据结构。除了更高效的算法和更易用之外,我们解决了 V8 的堆实现可能会造成 treap 表现不稳定的问题。Treap 被证明是一种有效的索引追踪缓冲区的内容的状态的手段,我们正在尝试将屏幕坐标和缓冲区坐标的映射替换为类似的数据结构,包括自定义 Tab 对应的空格数量、代码折叠、自动折行都会用到这种映射。

标记层(Marker Layer)

同样是算法优化,我们还提供了一组名为 Marker Layer 的新 API. 我们发现在一个含有大量标记且较长的文件里广播一个事物被创建的事件有着非常大的开销。但大部分监听事物被创造事件的函数仅仅关心很多标记中的衣袖奥部分。Marker Layer 则允许你显式地指定你所关心的那一小部分标记。有了它,我们可以控制创建标记的开销,还可以让插件有选择性地向其他插件暴露它们的标记,让你可以选择让一部分标记成为你的 API, 或让一部分标记作为被隐藏的实现细节。

值得注意的是,查找和替换以及光标选择不会再被包含在默认的 Marker Layer 里了,如果你需要访问搜索结果,你可以使用 find-and-replace 插件新暴露出来的 服务. 而光标选择则有它们自己的 API, 所以你也不需要再通过标记去访问它们。如果你不同意这个改动,请告诉我们

便携模式

Windows 版本的便携模式很长时间以来一直是一个 呼声很高的功能。Atom 1.3.0 开始为 Windows 和 Linux 提供了一个便携模式(Mac 还要再等等)。

在缓冲区中移动行的更新

现在当自动缩进(Auto Indent)选项被启用时,上下移动行时会自动地缩进到正确的位置,详见 这个 Pull Request.

此外,现在也可以在存在多个光标的情况下移动行了,感谢 @lpommers@abe33 在这个改进上长时间的努力。详见 这个 Pull Request, 它有 86 个评论,跨度长达 3 个月。

更新至 Electron 0.34.3

Atom 1.3 更新到了 Electron 0.34.3, 这个版本修复了一些 Windows 上的 Bug.

Atom 1.4.0-beta0 现在可以下载了

与新版本一起发布的是新的 Beta 分支,你可以通过安装 Beta 版本来提前得到下面的功能。

值得注意的改动包括:

  • 未命名或未保存的缓冲区在 Atom 窗口被关闭或重启时会被自动保存到一个临时文件夹,详见这个 Pull Request.
  • OS X 的 Dock 图标新增了一个「新建窗口」的选项,详见这个 Pull Request.

现在你可以在 这里 看到所有将要进入 1.4-beta 的 Pull Request.