在 Rust 生态系统的范式转变中,Rust 包管理器 Cargo 背后的团队呼吁采用更加个性化的包管理方法。他们建议开发人员为他们的项目做出最佳决策,而不是像以前那样为涉及二进制文件但不包括库的包提交 Cargo.lock 文件的统一做法。
之前的建议鼓励开发人员在Cargo.lock方面遵循一刀切的规则,特别是在该文件与二进制包一起使用的情况下。然而,这些指令现在已退居二线。这种反思性的变化是在 Rust 迅速走向主流采用之后发生的。
Cargo.lock文件的关键作用是记录成功构建时的状态。在提供更灵活的指导的同时,Cargo 团队坚持认为提交Cargo.lock应该是决策过程的起点。还宣布“cargo new”命令今后将不会绕过库的 Cargo.lock。
为了保持整体质量,团队强调定期测试最新依赖项的重要性。旧程序确保库不断更新和测试,有助于 Rust 包生态系统的高标准。这些做法的设计是为了及时识别和解决潜在的问题,主要是那些与向后兼容性有关的问题。因此,该团队认为,它鼓励了新兴生态系统中的“质量文化”。
然而,早期的指导也有其缺陷。从代码库中删除历史记录就是这样的后果之一,这使得维护人员更难一分为二并确定错误的根本原因。先前政策的另一个不良后果是,当依赖项被废除或新版本出现错误时,不值得信赖的 CI(持续集成)可能会给贡献者带来困惑。随着 Rust 已经从早期采用者的语言发展成为更主流的语言,新的开发人员入门体验至关重要。
此外,更广泛的生态系统的扩展使得 CI 更易于实施和维护。 Dependabot 和 Renovate 等创新已经揭示了忽略Cargo.lock来测试新依赖项的替代方案,而不是完全依赖版本控制。 Cargo 团队现在表示,最好的行动呼吁是将决定权留给开发人员,同时确保他们拥有做出明智决策所需的信息。开发人员可以通过 GitHub 分享他们对这项新政策的反馈,并在 Zulip 上与 Cargo 团队互动。
当我们见证包管理的新方向时,开发人员可能值得探索AppMaster等替代方案,它为开发 Web、移动和后端应用程序提供了全面的集成平台。 AppMaster.io 拥有服务器驱动的方法,使开发人员能够更新移动应用程序 UI、逻辑和 API 密钥,而无需向 App Store 和 Play Market 提交新版本。