Subject: Re: [PATCH v2 00/18] Introduce rust: In xdiff

From: Patrick Steinhardt <[email-masked]>
Date: Mon, 22 Sep 2025 15:01:23 +0200

On Fri, Sep 19, 2025 at 02:57:58PM -0600, Ezekiel Newren wrote:
> On Tue, Sep 16, 2025 at 11:58 PM Patrick Steinhardt <[email-masked]> wrote:
> > Given that this isn't yet ready and given that this patch series is way
> > bigger than the one I have in flight that focusses on introducing the
> > policy [1]: how about we first merge that one down and then rebase your
> > patches on top of it to iterate? It would reduce the scope of your patch
> > series and allow us to make smaller steps towards our goal.
> >
> > To be clear: I very much think that most of the steps here are quite
> > sensible. We definitely want to introduce cbindgen, we obviously need to
> > introduce support on Windows, and I guess having multiple different
> > workspaces is also something that could provide benefit.
> >
> > But there is no reason to have that all at once, so hence my suggestion
> > to build out the infra one step at a time.
> >
> > What do you think?
> 
> I think I made a big mistake of not making it clear that I intended v2
> as more of an RFC. My worry (that I expressed very poorly or not at
> all) is how hard will it be to apply my patches on top of your
> foundation? I don't know if minor or major changes to your current
> path would be needed, so I proposed a different way to Introduce Rust
> while trying to incorporate work from others.

Ah, fair enough. Thanks for clarifying your intentions!

I don't think there'd have to be major changes to the current version
of my patch series. The idea of that patch series is very much getting
buy-in regarding our roadmap and focus less on the actual build infra.
So the changes introduced are mostly an MVC, and I very much think that
we'll have to iterate quite a bit on it, but that's intended.

I think that a lot of the steps you outline below are logical next steps
to get there. If I can change anything to make these next steps easier
for you I'm happy to do so. But I also don't think it's too bad if we
have to change the current infra quite significantly to get there.

> I wanted feedback on:
>   * Cleaning up Rust type name collisions
>     * People don't like it, so I'll drop that

I don't have a strong opinion on this. If it creates issues I personally
don't mind fixing it.

>   * Have Makefile produce libgit.a correctly.
>     * I think this is a good idea, but it doesn't belong in this patch series.
>   * Adding Rust unit test which required fixing Make and adding
> build-helper to reduce boilerplate code
>     * I think this is a good idea, but should be added later.
>   * Introduce cbindgen to avoid desync errors between Rust and C.
>     * LIke other points above; This should be added later.

Agreed, these all make sense to me.

>   * What should we call the crate that will be the new home for .c and
> .h files in the root of Git?

We could call this something like "libgit-ffi", but I don't care too
much.

Thanks!

Patrick