徽章失效与23,000个功能的故事

徽章失效与23,000个功能的故事

💡 原文英文,约800词,阅读约需3分钟。
📝

内容提要

crates.io限制每个crate版本最多只能有300个features,以避免影响依赖解析和下载速度。团队希望用户参与解决这些问题的讨论。

🎯

关键要点

  • crates.io限制每个crate版本最多只能有300个features,以避免影响依赖解析和下载速度。
  • 用户报告shields.io徽章停止工作,问题出在API请求上,导致响应负载过大。
  • 某个crate使用了近23000个features,每个图标对应一个feature,导致API响应超过20MB。
  • crates.io API没有对已发布版本进行分页,导致响应数据过大。
  • 包索引文件也变得庞大,9个版本的索引文件已达到11MB。
  • features影响依赖解析,cargo依赖于features的可用性,无法删除空的feature声明。
  • 大多数Rust用户使用稀疏包索引,只有使用该图标crate的用户需要下载所有元数据。
  • crates.io团队在2023年10月16日实施了限制,新的crate/版本最多只能有300个features。
  • 团队邀请用户参与讨论解决方案,最佳讨论地点为crates.io Zulip流。
  • 感谢用户Charles Edward Gagnon提出问题,强调责任在于crates.io团队未能提前设限。
➡️

继续阅读