AIGC在金融场景是如何落地的? 了解详情
写点什么

Rust Analyzer:一款旨在带来优秀 IDE 体验的编译器

  • 2020-02-13
  • 本文字数:1967 字

    阅读完需:约 6 分钟

Rust Analyzer:一款旨在带来优秀IDE体验的编译器

Rust Analyzer是一个实验性的 IDE(面向延迟的 Rust 编译器)。这是 Rust 生态系统的一次新的尝试,旨在带来优秀的 Rust IDE 体验。


编译器性能一直是 Rust 工具开发的主要关注点编译时间在各个版本中都在稳步改善。然而,正如 Igor Matuszewski 在Rust Belt Rust Conference大会演讲中所说的那样,Rust IDE支持是一个活跃的工作领域


尽管在过去的三年中,情况发生了很大的变化,包括新工具的大量出现和工具间集成的改进,但总是感觉 Rust IDE 的故事还没有结束。


这项工作是在RLS 2.0工作组的指导下进行的,其中包括主要组件Rust Analyzer。为了了解更多信息,InfoQ 借机采访了该项目的主要贡献者 Aleksey Kladov,以及 Rust 核心团队成员 Steve Klabnik。


InfoQ:Rust 最近引起了很多人的兴趣,并且该语言的生态系统/工具一直在以非常快的速度演进和发展。Rust 目前的成熟度如何?未来几年我们可以期待什么?


Steve Klabnik:“成熟”可以有很多含义。在我看来,衡量的标准是公司在真正的产品中使用 Rust,像 Facebook、亚马逊、谷歌、微软等公司那样。FAANG五大科技公司占了三家,已经不错了。

一般来说,Rust 的发展速度正在变慢,新特性较少,更多的是对现有特性的改进。例如,async/await 现在已经发布了,更多的工作放在了诸如诊断之类的事情上。在接下来的几年里,Rust 将会获得更多的重要特性,但是与 async/await 主要适用于网络应用程序一样,这些特性也是对特定的领域非常有价值,但并非对所有的 Rust 程序员来说都很重要。例如,“const generics”允许你编写整数上的泛型代码,而不仅仅是类型,这对于数值类库来说非常好。但总的来说,这些特性的添加速度比以前的主要特性要慢。


InfoQ:您能简要解释一下当前的 Rust 编译器在 IDE 集成方面的局限吗?Rust Analyzer 项目的目标是什么?


Aleksey Kladov:这里的局限并不是 Rust 语言所特有的,在比较命令行与 IDE 编译器时,它们都比较常见。

主要的问题是,命令行(或批处理)编译器主要针对吞吐量进行优化(每秒编译 N 千行代码),而 IDE 编译器针对延迟进行优化(在用户键入新代码片段后,在 M 毫秒内显示正确的补全变量)。吞吐量与延迟这两个目标需要的优化(甚至高级架构)差别很大。一般来说,对于开发时只考虑大吞吐量的编译器,很难针对低延迟要求进行改进。

另一个不同的地方是无效代码的处理。传统的编译器前端通常是按阶段组织的,每个阶段接受一个非结构化的输入,检查输入的有效性,如果输入确实有效,则在上面添加更多的结构。具体来说,早期阶段(如解析)的错误通常意味着后期阶段(如类型检查)根本不会运行这段代码。换句话说,“正确的代码”是一种很好的情况,其他的一切都可以看作是错误条件。相反,在 IDE 中代码总是被破坏,因为用户不断地修改它。一旦代码有效,IDE 的工作就结束,批编译器的工作就开始。因此,面向 IDE 的编译器应该能够容纳不完整和被破坏的代码,并为这些代码提供 IDE 特性,比如补全。

Rust -analyzer 项目的首要目标是提供一个在延迟和吞吐量方面都表现优异的 Rust 编译器。实现这一目标的道路是漫长的,我们目前所处的阶段实际上有两个前端:

  • rustc 是一个非常成熟的批编译器;

  • rust-analyzer 是一个尚处于试验阶段的 IDE/面向延迟的编译器。

这些前端目前共享一小段代码,当前的战术目标是在它们之间共享更多容易共享的代码。


InfoQ:这个项目会取代 Rust LSP 实现吗?


Kladov:现在还不行;rust-analyzer 是一个实验,我们还没有准备好推荐它作为正式的 LSP 实现。然而,目前的初步计划是,在不久的将来,rust-analyzer 将取代 RLS。


InfoQ:关于编译器重构将会朝哪个方向发展,您能分享一些细节吗?


Kladov:其主要思想是使编译器更加懒惰。IDE 用来实现低延迟的一个最重要的技巧是尽可能多地避免工作。例如,要提供代码补全,你通常会需要分析屏幕上的代码及其直接依赖项;你不关心在你的项目中其他 500 万行代码编写了什么。这个想法很简单,但是让编译器不去查看额外的代码实际上是相当棘手的,这里有大量的工作要做。我们计划做的一些更具体的事情是:

  • 转换为全保真语法树表示,其中包括空白和注释;

  • 添加“multi-crate”模式,其中单个编译器实例可以同时处理多个编译单元;

  • 使编译器进程持久化,并增加向编译器发送输入文件差异的能力。

所有这些东西都已经在 rust-analyzer 中实现了,但是是以一种概念验证的方式实现的。有一点比较棘手,就是在不破坏用户代码的情况下,将它们全部移到生产编译器中。


Rust Analyzer 尚且只具备内部测试品质,需要从源代码构建:


$ git clone https://github.com/rust-analyzer/rust-analyzer$ cd rust-analyzer$ cargo xtask install
复制代码


感兴趣的读者如果希望开始试验这个新工具,可以查看Rust Analyzer手册


原文链接:


Rust Moving Towards an IDE-Friendly Compiler With Rust Analyzer


2020-02-13 09:005600

评论 1 条评论

发布
用户头像
RA 并不是编译器……应该说是静态检查器才对
2020-07-30 11:30
回复
没有更多了
发现更多内容

软件测试/测试开发丨Selenium Web自动化多浏览器处理

测试人

Python 软件测试 自动化测试 测试开发 selenium

程序员的五种实用工具

这我可不懂

工具 编码 代码库 RegExp

“AI+算力”为出海企业打上了一剂“强心针”

千流出海

媒体 采访 出海

蚂蚁集团混沌工程 ChaosMeta V0.5 版本发布

ChaosMeta

云原生 测试 混沌工程 容灾 攻防演练

麒麟云容器运行时优化之容器停止优化

麒麟云

Kubernetes 云原生 银河麒麟云原生操作系统

UML建模推荐Astah Professional for Mac激活最新

mac大玩家j

Mac软件 建模软件 建模工具

数字先锋|携手九江市自然资源局,天翼云助力自然资源管理走向“智治”新路

天翼云开发者社区

人工智能 云计算

OpenHarmony使用ArkUI Inspector分析布局

OpenHarmony开发者

OpenHarmony

Wolfram Mathematica Mac数学计算软件v13.3.1.0中文激活版 支持M1

Geek_f9e1f3

Wolfram Mathematica 数学计算

重新定义内容创作和教育的新范式

百度开发者中心

人工智能 文心一言 文心大模型‘

CorelDRAW Graphics Suite 2022 矢量图形设计工具 Mac中文版

Geek_c58703

CorelDRAW 2022下载 CorelDRAW 2022中文版

【玩转鲲鹏DevKit系列】如何快速迁移软件包?

华为云开发者联盟

开发 华为云 鲲鹏 华为云开发者联盟 企业号9月PK榜

在线找 K8s 学习搭子,急!

阿里巴巴云原生

阿里云 云原生

服务器显卡:驱动高性能计算和人工智能应用

天翼云开发者社区

服务器

开发指导—利用CSS动画实现HarmonyOS动效(二)

HarmonyOS开发者

HarmonyOS

Kruise Rollout:基于 Lua 脚本的可扩展流量调度方案

阿里巴巴云原生

阿里云 云原生

AutoCAD 2023 for Mac中文版注册激活 附注册机 支持M1

Geek_c58703

CAD绘图 AutoCAD 2023

引领未来,挑战与机遇并存

百度开发者中心

人工智能 图像识别 文心大模型

业务不想停机,就得这么实现MongoDB迁移

NineData

mongodb 数据迁移 NineData MongoDB迁移 全量数据迁移

Mac电脑必备markdown写作软件:Ulysses for Mac激活下载 支持M1

Geek_f9e1f3

markdown编辑器 Ulysses

SnapGene 5 Mac补丁激活 附详细图文安装教程 支持M1

Geek_c58703

mac软件下载 SnapGene 5

做等保测评的公司有多少家?哪里可以查到?

行云管家

网络安全 等级保护 等保测评 等保测评机构 行云堡垒

细数2019-2023年CWE TOP 25 数据,看软件缺陷的防护

华为云开发者联盟

安全 后端 华为云 华为云开发者联盟 企业号9月PK榜

AI应用如何进行测试?

互联网工科生

人工智能 AI

时尚行业的前沿与挑战

百度开发者中心

人工智能 ChatGPT 生成式AI 文心一言

ClickHouse在腾讯游戏营销效果分析中的探索实践

腾讯云大数据

Clickhouse

Bartender 4 Mac菜单应用图标管理工具 完美兼容M1

Geek_f9e1f3

Bartender 4

服务器使用必备条件、操作步骤及实践步骤详解

天翼云开发者社区

服务器

公众期待开放的自然语言处理神器

百度开发者中心

人工智能 ChatGPT 文心一言

文心一言 VS 讯飞星火 VS chatgpt (86)-- 算法导论8.2 3题

福大大架构师每日一题

福大大架构师每日一题

你应该知道的几个大数据平台相关术语

行云管家

数据中台 数据安全 大数据平台

  • 扫码添加小助手
    领取最新资料包
Rust Analyzer:一款旨在带来优秀IDE体验的编译器_语言 & 开发_Sergio De Simone_InfoQ精选文章