git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 0/4] Add a compile-time option to use the new, very fast sha1dc Rust crate

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 29, 2026, 07:30 UTC
Message-ID
<xmqqa4p0jz0d.fsf@gitster.g>
In-Reply-To
<pull.2240.git.1790610691.gitgitgadget@gmail.com>

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> writes:

Show 18 quoted lines
> I stumbled across this new Rust crate last week. Its performance numbers are
> quite impressive. Naturally, I want to make use of this and get for Windows,
> which is used on many monorepos where this makes a real difference: In a
> pretty fast and loose test, I verified that a git index-pack runs roughly
> three times faster solely due to using those SIMD-based optimizations!
>
> As a safety precaution, because this sha1dc crate is quite new, I wanted to
> introduce an escape hatch: core.sha1dcBackend=c, but turn it on by default,
> which is the reason for the three additional patches. Should these patches
> be undesirable for the Git project? I would not be mad at all if they were
> simply dropped.
>
> Johannes Schindelin (4):
>   libgitcore: add `sha1dc` as an optional feature
>   sha1dc: allow selecting the C backend without rebuilding
>   pthread: provide `pthread_once()` shims for Windows and for
>     NO_PTHREADS
>   sha1dc: make `sha1dc_init()` thread-safe

The feature sha1dc_choose() means that you can between Rust and C implementations of sha1dc pick at runtime and I was confused by the "compile-time" in the topic title, which is misleading. From the end-user's point of view, being able to choose between the two at runtime gives them a lot bigger value, even though from the point of view of the developer who added the feature to allow users to do so, that feature being a compile-time choice might matter more.

How close are these two implementations? Do they implement the same idea but the details may differ? Do they both faithfully implement what the same paper wrote and given the same fudged input they will always detect the attempted attack the same way?

Previous: Johannes SchindelinNext: Johannes Schindelin
Message 8 of 9 in “Add a compile-time option to use the new, very fast sha1dc Rust crate”
  1. 0/4 Add a compile-time option to use the new, very fast sha1dc Rust crateJohannes Schindelin via GitGitGadget, Sep 28, 2026
  2. 1/4 libgitcore: add `sha1dc` as an optional featureJohannes Schindelin via GitGitGadget, Sep 28, 2026
  3. brian m. carlsonOct 3, 2026
  4. 2/4 sha1dc: allow selecting the C backend without rebuildingJohannes Schindelin via GitGitGadget, Sep 28, 2026
  5. 3/4 pthread: provide `pthread_once()` shims for Windows and for NO_PTHREADSJohannes Schindelin via GitGitGadget, Sep 28, 2026
  6. 4/4 sha1dc: make `sha1dc_init()` thread-safeJohannes Schindelin via GitGitGadget, Sep 28, 2026
  7. Johannes SchindelinSep 28, 2026
  8. Junio C HamanoSep 29, 2026
  9. Johannes SchindelinOct 3, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.