[Rust Daily] 2023-09-19 Add aarch64 SIMD implementation to aho-corasick

Add aarch64 SIMD implementation to aho-corasick

The main purpose of this PR is to add aarch64 SIMD implementation to Teddy (a key data structure). Previously, Teddy used x86-64 SIMD instructions, specifically SSSE3 and AVX2.

This PR reorganizes the main implementation of Teddy into a new Vector trait and provides implementations of the Vector trait for x86-64 and aarch64 vector types.

This actually significantly speeds up automated pattern searches on aarch64 (i.e. Apple's new M1 and M2 chips).

In addition, this PR also uses rebar instead of criterion for benchmark testing, and shows the before and after comparison of the AhoCorasick benchmark test. Overall, there are 2-10x improvements in every aspect. For x86_64, there may be some minor latency improvements.

PR link aho-corasick warehouse address https://github.com/BurntSushi/aho-corasick

Nushell + Uutils = ❤️

The Nushell team announced that it will start integrating uutils/coreutils into Nushell in the Nushell 0.85.0 version planned to be released on September 19, 2023. The first command integrated is cp, which was located in ucp during testing. Therefore, when you use ucp in this version, you are actually using the same code used in coreutils.

The Nushell team thinks, why should we reinvent the wheel? Let Nushell keep its features, parse arguments, provide good command completion and beautiful help and error messages, and integrate crates from top developers, is a better solution Way.

So the Nushell team worked with the Uutils team to discuss what they wanted to do and implement it.

Through this incident, we can have the following experience:

  1. By collaborating between the Nushell and Uutils teams, both projects can benefit. This collaboration sets a great example for the open source community.
  2. Not reinventing the wheel: The author's decision highlights a core belief in the open source community that there is no need to reinvent what already exists. By integrating already existing solutions, value can be delivered to users faster.

nushell warehouse address https://github.com/nushell/nushell

uutils/coreutils warehouse address

Thoughts on Rust’s core principle of “stability without stagnation”

One of Rust's core principles is: "Stability without stagnation." Rust uses a "release train" model, releasing a new version every 6 weeks. This model enables smooth releases of new versions rather than feature-based releases.

Niko observed that despite this release model, stabilizing a feature in Rust can still be a stressful process. The blog further explores why this is the case and how to adjust our processes and habits to address this issue.

Niko summarizes his main points in the article:

  1. Rust's stable designs are a source of stress because they confuse two different things: whether a feature works as expected (semver-stability) and whether the feature is ready for all expected use cases (recommended-for-use).
  2. Open source work is incremental: in order to achieve the perfection we want, we need users to encounter the feature; incremental milestones help us achieve this.
  3. Nightly builds are effective for getting some types of feedback, but not all; in particular, production users and library authors generally don't use it. This leaves us with less data to use when making high-stakes decisions, which is a problem.
  4. We should modify our process to distinguish four stages: Accepted RFC, Preview, Stable and Recommended.

Original link https://smallcultfollowing.com/babysteps/blog/2023/09/18/stability-without-stressing-the-out/

-- From Daily Team RustPlumber

Community learning exchange platform subscription:

  • Rust.cc Forum: support rss
  • WeChat public account: Rust language Chinese community

Je suppose que tu aimes

Origine blog.csdn.net/u012067469/article/details/133109135
conseillé
Classement