当前位置: 首页 > 科技观察

微软总工程师:Rust将面临的十大挑战

时间:2023-03-21 20:04:46 科技观察

微软总工程师NickCameron发表博客,指出他认为Rust现在和未来几年将面临的十大挑战,并提出了一些初步的解决思路。目前,NickCameron主要负责公司Rust相关工作;过去,他也是Rust核心团队的成员。Nick指出Rust这些天的发展状况良好;越来越受欢迎,有更多的贡献者,并且在一些重要领域。但在这些变化的时代,从一个研究项目到一个新的、快速变化的语言再到一个流行的、成熟的项目是一个艰难的演变。“在这里我想描述一下我认为Rust现在和未来几年面临的十大挑战。我有一些解决方案的想法,但它们都是大而难的问题,没有简单的答案,所以真正的解决方案都需要迭代、能量和创造力。我的重点是核心项目;社区和生态系统面临许多挑战(例如,如何在Rust中制作GUI,或者如何将更多的箱子放入1.0),我认为这必须是主要的由社区解决。”详情如下:GovernanceChallenge1.如何引导开发并保持Rust开放?在开源工作中,什么对项目最好和志愿者贡献者想做什么之间总是存在一些紧张关系。现在,与Rust社区随着Mozilla终止直接支持,Rust的紧张局势似乎正在加剧。虽然有很多人在做基础维护,但他们往往人手不足;在一些重要领域也缺乏资源、战略工作或领导贡献的努力。Nick认为,在某些方面,采用自上而下的方法可能更容易;但此举也可能导致Rust失去其作为开源项目的一些优势。最大的挑战是确保获得重要的但在不失去项目的某些特征的情况下完成了乏味的工作,使其令人敬畏。尼克说,他们目前正在努力解决一些具体问题,包括:优先考虑眼前的工作而不是开始g新工作,优先考虑工具、图书馆和非技术工作以及语言和编译器,优先考虑低影响、低成本的工作,这些工作总体上会产生很大的影响(除了大型、迷人的工作).“与这一挑战相关的是在面对增长时保持Rust的基本特征。特别是,项目如何在不忽视Rust核心使命的情况下发展并接受新的贡献者和领导者(以及随之而来的不可避免的变化)?随着观察员(和评论员)数量的增加,我们如何在讨论和决策中继续保持公开透明?2.多样性和包容性Rust的多样性情况很糟糕。虽然Rust在成为一个包容性项目方面可能做得很好,但许多贡献者由于一些负面原因不得不离开该项目;避免倦怠也是包容的一部分。”包容的一个重要方面是能够容纳各种意见。如果我们只有在每个人都同意的情况下才能相处,我们就不能多元化或包容。虽然我们对共识的偏好已经在某些领域为我们提供了很好的服务,但它也产生了问题。我们避免冲突而不是解决冲突的文化是不健康的,会导致治理功能失调。这些问题真的很难解决!但我们必须优先考虑它们,即使它们很困难,有时3.避免低效流程的僵化Nick表示,虽然Rust在过去几年发展迅速,但其流程和组织并没有跟上步伐。在任何与治理或流程相关的事情中,都存在巨大的差距。改变惯性。甚至尽管现有流程存在很多摩擦,但似乎除了在其之上进行调整之外别无他法。hange将非常困难。他认为,问题的核心是项目不愿接受“管理”(人员管理、项目管理、产品管理)作为项目领导的重要组成部分。这些事情可以独立于技术领导,但需要真正的授权(不仅仅是工作授权)。该项目面临的挑战是接受授权、支持这些活动并引入更好地支持该项目的新流程。生态系统挑战4.驾驭crate生态系统Rust在最小的标准库和“包含电池”之间由于蓬勃发展的生态系统和易于使用的包管理器而得到很好的平衡。然而,板条箱生态系统一直是一个棘手的问题。箱子有很多,找到合适的需要很多努力,或者好好参与社区。随着越来越多的社区非活跃用户的出现,以及crate数量的增加,这将成为一个更大的问题。5.Theasyncecosystemasynchronousprogramming它对Rust目标的许多领域都很重要,并且与Rust的编程模型配合得很好。但是,它的生态系统在不同的运行时之间有些分裂;正在改进,但进展缓慢,最终能否成功还不确定。“风险在于,我们最终会将未被社区广泛接受的东西引入标准库,并且我们最终会得到一个比开始时更糟糕的生态系统。”技术挑战6.如何在不失去核心重点的情况下构建一个系统,使该语言具有更广泛的吸引力?Nick认为,基于其现有的成功,Rust仍有很大的发展空间。今天的大部分软件都是用更注重性能的语言编写的,而Rust对安全、人体工程学和性能的关注可以带来更好的产品和更高的生产力。然而,Rust的学习难度和成本相对较高,让Rust更容易学习和使用可能会扩大它的影响力。“我不认为支持GC、为Rc>类型使用含糖语法或添加一堆语法糖是解决方案。我们必须在不失去Rust以系统编程为中心的优势的情况下让事情变得更简单更简单。减少对显式生命周期的需求,使借用检查器更强大,不要使特征系统过于复杂,关注用户体验,避免成为一种臃肿的语言都会有所帮助。也许我们会发现我们可以显着简化所有权生命周期和生命周期的新抽象?”7.内存模型和不安全代码安全是Rust的主要特性之一,也是许多人使用它的动机。因此,需要能够为从事不安全工作的程序员提供更多的支持和更好的体验。这样做需要对Rust的内存模型有更清晰的了解,然后是语言特性、库和工具的开发。幸运的是,在这方面有学术研究、出色的社区工作、MIRI、不安全代码指南等。不幸的是,这是一个非常复杂和困难的领域,许多局外人的投入可能会减缓进展并使相关人员的工作更加困难。Nick指出,出于政治和技术原因,一些可能真正具有重大影响的更改根本无法进行。8.标准库的演进标准库除了单调增长(可以弃用但永远不会删除,也不能更改)之外别无他法。就其本身而言,这将导致越来越大且令人困惑的标准库。但也有二阶效应:人们必须对稳定性极为保守,除了“永远稳定”和“仅在夜间可用且完全可能发生变化”之外,API没有其他可能的状态。相关地,标准库是一个全有或全无的交易(技术上还有liballoc)。除了拥有更细粒度的版本控制解决方案之外,更细粒度地使用标准库将是有益的,而不仅仅是核心库或所有标准库。9.大的编译器变化Rustc现在是一个非常大的软件。它有很多内在的复杂性(Rust是一种复杂的语言,很难在提供良好的错误消息的同时快速编译)、很多大型软件的常见问题,以及很多技术债务。存在一些重大挑战,尤其是在编译时(其中增量编译和并行编译是两种正在进行的方法),这些被证明是一项艰巨的工作;想要在未来做出重大改变,只会变得更加困难。幸运的是,编译团队有能力、有活力、资源充足。然而,对rustc进行大规模、高影响的更改仍然具有挑战性。10.宏宏是语言中最不完善的部分之一。声明式宏引入了一种全新的子语言;过程宏很笨重,需要很多依赖项,而且很难掌握。所有宏在编译器(编译时间、增量编译、错误消息)和工具(IDE、rustdoc等的各种问题)中表现不佳。“我认为这是一个巨大的挑战(而不仅仅是可以处理的另一种语言特性)的原因是这些问题是分散的和困难的。(可能)没有好的解决方案,只有大量的工程和设计工作。许多问题(例如,宏卫生)需要社区中不存在的专业知识。宏的优先级也不够高(毕竟它们本质上是有效的)并且没有足够的吸引力来吸引贡献者。”展望Nick总之,他列出的十个所谓的“大”Rust问题可能有点消极;但它们都是现实世界的挑战。幸运的是,项目内部的人员意识到了这些问题并正在积极解决这些问题。“尽管任何解决方案都很困难,但我认为所有这些挑战都有可行且现实的解决方案。如果我们能够专注于解决这些问题(当然还有所有其他日常挑战),那么我认为Rust将继续发展并取得成功。”详情见博客全文本文转自OSCHINA文章标题:微软总工程师:Rust将面临的十大挑战本文地址:https://www.oschina.net/news/210809/ten-生锈挑战