为 aho-corasick 添加 aarch64 的 SIMD 实现
此次 PR 主要目的是为 Teddy(一个关键的数据结构) 添加 aarch64 的 SIMD 实现。之前,Teddy 使用了 x86-64 SIMD 指令,特别是 SSSE3 和 AVX2。
这个 PR 将 Teddy 的主要实现重组为一个新的 Vector trait,并为 x86-64 以及 aarch64 的向量类型提供了 Vector trait 的实现。
这实际上大大加快了在 aarch64 上(即Apple的新M1和M2芯片上)自动进行模式搜索的速度。
此外,这个 PR 还用 rebar 代替了 criterion 进行基准测试,并展示了 AhoCorasick 基准测试的前后对比。总的来说,各方面都有2-10倍的改进。对于 x86_64,可能会有一些小的延迟改进。
Nushell + Uutils = ❤️
Nushell 团队宣布在2023年9月19日计划发布的 Nushell 0.85.0版本中,开始将 uutils/coreutils 集成到 Nushell 中。首先集成的命令是 cp,它在测试期间位于 ucp 中。因此,当您在此版本中使用 ucp 时,您实际上使用的是 coreutils 中使用的相同代码。
Nushell 团队认为,为什么我们要重新发明轮子呢? 让 Nushell 保持其特性,解析参数,提供良好的命令补全和美观的帮助和错误消息,并从顶级开发人员那里集成 crates,是一个更好的解决方式。
因此,Nushell 团队与 Uutils 团队进行了合作,讨论了他们想要做的事情,并加以实现。
通过这件事,我们可以有如下体会:
- 通过 Nushell 和 Uutils团队的合作,两个项目都能从中受益。这种合作为开源社区树立了一个很好的榜样。
- 不重新发明轮子: 作者的决策突显了开源社区的一个核心理念,即不需要重新发明已经存在的东西。通过集成已经存在的解决方案,可以更快地为用户提供价值。
对 Rust的核心原则 “稳定性而不停滞” 的思考
Rust 的核心原则之一是:“稳定性而不停滞”。Rust 采用了“发布列车”模型,每6周发布一次新版本。这种模型使得新版本的发布变得平稳,而不是基于特性的发布。
Niko 观察到,尽管有这种发布模型,但在 Rust 中稳定一个特性仍然可能是一个压力很大的过程。博客进一步探讨了为什么会出现这种情况,以及如何调整我们的流程和习惯来解决这个问题。
Niko 在文中总结了他的主要观点:
- Rust 的稳定化设计是压力源,因为它们混淆了两件不同的事情:特性是否按预期工作(semver-stability)和特性是否准备好供所有预期的用例使用(recommended-for-use)。
- 开源工作是逐步的:为了完成我们想要的完善,我们需要用户遇到这个特性;增量里程碑帮助我们实现这一点。
- Nightly版本对于获取某些类型的反馈是有效的,但不是所有的;尤其是生产用户和库作者通常不会使用它。这使我们在做高风险决策时可用的数据更少,这是一个问题。
- 我们应该修改我们的流程,区分四个阶段:Accepted RFC、Preview、Stable 和 Recommended。
-- From 日报小组 RustPlumber
社区学习交流平台订阅:
评论区
写评论还没有评论