由于 crates.io 没有传统意义上的发布版本,因此也没有发布说明。但是,crates.io 团队仍然希望让大家了解 crates.io 的持续开发情况。这篇博文总结了我们在过去几个月对 crates.io 所做的最重大更改。
cargo install
当查看像 ripgrep 这样的 crate 时,你会注意到安装说明现在是 cargo install ripgrep
而不是 cargo add ripgrep
。我们实施此更改是为了让用户更容易安装具有二进制目标的 crate。当将 crate 作为依赖项添加到你的项目时,cargo add
仍然是正确的命令,但对于像 ripgrep 这样的纯二进制 crate,cargo install
是正确的选择。
我们通过分析上传到 crates.io 的 crate 文件来实现这一点。如果一个 crate 有二进制目标,二进制文件的名称现在将保存在我们的数据库中,并方便地显示在 crate 页面上。
在发布此功能后,我们收到通知,一些库 crate 为了本地开发目的使用二进制文件,作者希望不在 crate 页面上列出这些二进制文件。cargo 团队一直在通过使用 exclude
清单字段来 解决 这个问题,该字段很快就会发布。
深色模式
如果你的操作系统设置为深色模式,你可能已经注意到 crates.io 现在会自动切换到深色用户界面主题。如果你不喜欢深色主题,你仍然可以通过单击页面右上角的颜色主题图标切换回浅色主题。默认情况下,主题将根据你操作系统的主题设置进行设置,但你也可以手动覆盖此设置。
与 GitHub 类似,我们现在也为你的 README.md
文件中的图像提供深色/浅色主题支持。
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://test.crates.io/logo_dark.svg">
<img src="https://test.crates.io/logo.svg" alt="logo" width="200">
</picture>
RSS 订阅源
受我们在 Python 包索引 的朋友的启发,我们为 crates.io 引入了几个实验性的 RSS 订阅源
- https://static.crates.io/rss/crates.xml: 在 crates.io 上注册的最新新 crate(过去 60 分钟,但至少 50 个新 crate)。
- https://static.crates.io/rss/updates.xml: crates.io 上的最新版本更新(过去 60 分钟,但至少 100 个版本)。
- 例如 https://static.crates.io/rss/crates/serde.xml:
serde
crate 的最新版本更新(过去 24 小时,但至少 10 个版本)。
这将允许你在你最喜欢的 RSS 阅读器中跟踪最新的 crate 发布和更新。最初的 GitHub 问题请求为你在 crates.io 上“关注”的所有 crate 提供订阅源,但我们认为,目前按 crate 提供的订阅源会更有用。如果你对此功能有任何反馈,请告诉我们!
API 令牌过期通知
我们的 crates.io 团队成员 @hi-rustin 一直非常积极地改进我们的 API 令牌用户体验。如果你创建了带有过期日期的 API 令牌,你现在会在令牌过期前三天收到一封通知电子邮件。这将帮助你记住在令牌过期之前续订令牌,以防止你的脚本停止工作。
在此更改之后,他还实现了一种基于现有令牌配置创建新 API 令牌的方法,这将使续订令牌更加容易,而无需重新配置所有权限。“API 令牌”设置页面上的用户界面现在显示一个“重新生成”按钮,这将允许你复制现有令牌的权限。类似地,令牌过期通知现在还将包含一个直接填写过期令牌权限的链接,因此你可以轻松创建具有相同权限的新令牌。
数据库性能优化
我们 crates.io 团队的最新成员 @eth3lbert 一直致力于优化为 crates.io 提供支持的数据库查询。他一直在进行几个旨在减少数据库服务器负载并使网站对每个人都更快的拉取请求。他所做的一些更改包括
- #7865: 进一步加速反向依赖查询
- #7941: 提高 crates 端点性能
- #8734: 在 versions 表中添加部分索引
- #8737: 使用
default_versions
表提高反向依赖项的性能
除此之外,我们最近已将数据库服务器迁移到具有更多内存和更快存储的新提供商。这也提高了网站的性能,并允许我们运行更复杂的查询,而不会遇到性能问题。之前加载 https://crates.io/crates/syn/reverse_dependencies 需要几秒钟,但现在服务器通常在不到一秒的时间内响应。
另一个难题是存档网站不再需要的旧数据。我们已将 90 天前的下载计数移动到存储在 S3 上的 CSV 文件中,并且很快将通过我们的 CDN 公开下载。这大大减小了数据库的大小,并提高了我们一些后台作业的性能。
反馈
我们希望你喜欢这次关于 crates.io 开发的更新。如果你有任何反馈或问题,请在 Zulip 或 GitHub 上告知我们。我们总是很高兴收到你的来信,并期待你的反馈!