← 最新论文
💻 computer science

Optimizing an IDE for an Evolving Language Ecosystem

本文概述了一种通过利用语言服务器协议和现有核心编译器,为不断演进的 Move 智能合约语言构建高性能集成开发环境的策略,同时详述了支持生态系统发展所必需的基础设施优化与经验教训。

原作者: Adam Welc, Todd Nowacki, Dario Russi, Cameron Swords, Timothy A. K. Zakian

发布于 2026-05-19
📖 1 分钟阅读☕ 轻松阅读

原作者: Adam Welc, Todd Nowacki, Dario Russi, Cameron Swords, Timothy A. K. Zakian

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在从零开始建造一座全新的城市。你拥有建筑的蓝图(编程语言)和施工队(编译器)。但在任何人能够真正入住或建造任何有用的东西之前,他们需要一位超级智能助手,帮助他们导航街道、查找具体地址,并在建造过程中修正错误。在编码世界中,这位助手被称为IDE(集成开发环境)。

Mysten Labs 团队撰写的论文描述了他们如何为名为Move(一种用于智能合约的语言)的新城市建造这位“超级智能助手”。以下是他们如何做到的故事,使用了简单的类比。

重大困境:建造新引擎还是使用现有的?

当你需要为这位新助手配备一个汽车引擎时,你有两个选择:

  1. 从零开始为助手建造一个全新的引擎。这就像雇佣一位专门的机械师,定制一个只完成一件事的引擎:帮助驾驶员。它可能完美胜任工作,但耗时且昂贵。
  2. 使用你已有的引擎。城市建造者们已经拥有一个庞大而强大的引擎(编译器),旨在将蓝图转化为成品建筑。

团队选择了选项 2。他们决定将助手连接到现有的城市引擎上。

  • 风险:该引擎是为完成建筑而建造的,而非在人们仍在绘制蓝图时提供帮助。它可能太慢或太笨重。
  • 回报:由于引擎已经存在,他们几乎可以立即让助手运行起来,而无需等待数年去建造一个新的。

问题:引擎太慢了

起初,助手能工作,但反应迟钝。想象一下,你请图书管理员找一本书。如果图书管理员必须走到图书馆后方,检查每一排书架,并通读每一本书的封面到封底,只为找到一页内容,那么你将等待很久。

随着 Move 城市的发展,图书馆变得更大。每当开发人员对其代码进行微小更改时,助手都必须从头开始重新阅读整个图书馆(代码及其所有依赖项)。这花费了超过一秒钟,对开发人员来说感觉像是一辈子。

解决方案:他们如何加速

团队意识到,他们必须在不过度重建引擎的情况下对其进行优化。他们应用了三个主要的“微调”:

1. “预读”图书馆(预编译依赖项)

问题:每当开发人员更改自己的故事时,助手都会重新阅读标准图书馆书籍(如字典或数学指南)。
解决:他们意识到:“嘿,没人会更改字典!”因此,他们创建了一个预读书架。他们一次性阅读了标准图书馆书籍,记下重要笔记,并将它们放在一个特殊的书架上。现在,当助手需要检查一个单词时,它只需从书架上抓取笔记,而无需走到图书馆后方。

  • 结果:这将等待时间从近一秒缩短到几分之一毫秒。

2. “抽查”策略(增量编译)

问题:即使有了预读书架,如果开发人员更改了一个 100 页的故事,助手仍然试图重新阅读整个故事,包括那些未更改的部分。
解决:他们教导助手要“懒惰”(以好的方式)。如果开发人员只更改了第 50 页,助手就只重新阅读第 50 页。对于其他 99 页,它只需说:“我已经知道这部分,它没有变化。”

  • 结果:即使在巨大的代码库中,这也让助手感觉是即时的。

3. “共享背包”(内存优化)

问题:助手背着一个巨大的背包。它太重了,以至于如果开发人员打开了三个不同的项目,助手的背包会变得太重而无法携带,导致计算机变慢或崩溃。它携带了每本书的每一个细节,甚至是助手此刻不需要看到的细节。
解决:他们重新组织了背包。他们扔掉了沉重且不必要的细节,只保留了必要的笔记。此外,他们意识到,如果三位开发人员正在处理使用相同字典的项目,他们就不需要三个独立的字典。他们在所有三个项目中共享一个字典。

  • 结果:背包变得轻得多,使助手能够同时处理多个项目而毫不费力。

经验教训

该论文总结了一些“经验法则”,供任何试图为新语言构建类似助手的人参考:

  • 不要一次性构建所有内容:你不需要在第一天就拥有完美的引擎。从你拥有的东西开始,并随着城市的发展进行微调。
  • 预期要缓存内容:始终计划保存你的工作(如预读书架),这样你就不必重复做同样的事情。
  • 注意你的负重:小心你携带的“东西”(内存)。仅仅因为你背起沉重的背包,并不意味着你应该这样做。
  • 保持韧性:如果开发人员犯了拼写错误,助手不应放弃并停止工作。它应该说:“我看到了一个错误,但我将继续帮助你完成句子的其余部分。”

核心结论

团队通过明智地利用现有机器,成功地将一个缓慢、笨重的施工引擎转变为一个快速、灵活的助手。他们没有建造新引擎;他们只是让旧引擎运行得更加高效。这使得开发人员能够快速且无挫折地构建他们的智能合约城市。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →