微软总工程师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
