I am currently working on a patch series that makes Rust optional and
addresses several concerns that this series does not:
* Rust calling C: Makefile has no way to build or run Rust so it
would have to call cargo test, but that doesn't work unless build.rs
tells cargo where libgit.a is (among other things).
* Build tooling alignment: My build_rust.sh is called by make and
meson which eliminates defining how to build Rust in 2 places.
* Cargo vs Meson: Meson is adding support for Rust and it's getting
better, but Cargo is the canonical build system for Rust. cargo is
released in lockstep with rustc, and we _have_ to use cargo when
building with make because Meson won't be available in that case.
* Crates: Patrick's series assumes the Git codebase is _the_ crate
* cbindgen: Cbindgen outputs a single header file for each crate,
with only 1 we'll have an unmanageably large auto generated header
file.
* Modularity: Using multiple crates makes Git more modular. Elijah
told me that there was some desire to make Git more modular.
* Cargo Dependencies: Patrick wrote his series with Meson first in
mind which doesn't address how we'll be able to use crates from
crates.io
* CI:
* Sparse coverage: I think there's only one target that tests his changes.
* With vs Without Rust: I don't see anywhere that he covers
building with vs without Rust in CI
* Build integration: Meson has to have every .rs file specified
where as the default layout of a Rust project allows Cargo to just
know where to look for .rs files