From: Junio C Hamano <gitster@pobox.com>
To: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 0/4] Add a compile-time option to use the new, very fast sha1dc Rust crate
Date: Tue, 29 Sep 2026 00:30:10 -0700 [thread overview]
Message-ID: <xmqqa4p0jz0d.fsf@gitster.g> (raw)
In-Reply-To: <pull.2240.git.1790610691.gitgitgadget@gmail.com> (Johannes Schindelin via GitGitGadget's message of "Mon, 28 Sep 2026 15:51:27 +0000")
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:
> 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?
next prev parent reply other threads:[~2026-09-29 7:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-28 15:51 [PATCH 0/4] Add a compile-time option to use the new, very fast sha1dc Rust crate Johannes Schindelin via GitGitGadget
2026-09-28 15:51 ` [PATCH 1/4] libgitcore: add `sha1dc` as an optional feature Johannes Schindelin via GitGitGadget
2026-10-03 21:01 ` brian m. carlson
2026-09-28 15:51 ` [PATCH 2/4] sha1dc: allow selecting the C backend without rebuilding Johannes Schindelin via GitGitGadget
2026-09-28 15:51 ` [PATCH 3/4] pthread: provide `pthread_once()` shims for Windows and for NO_PTHREADS Johannes Schindelin via GitGitGadget
2026-09-28 15:51 ` [PATCH 4/4] sha1dc: make `sha1dc_init()` thread-safe Johannes Schindelin via GitGitGadget
2026-09-28 16:20 ` [PATCH 0/4] Add a compile-time option to use the new, very fast sha1dc Rust crate Johannes Schindelin
2026-09-29 7:30 ` Junio C Hamano [this message]
2026-10-03 10:23 ` Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqa4p0jz0d.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=johannes.schindelin@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox