From: Ezekiel Newren Date: Tue, 16 Sep 2025 02:03:29 GMT Subject: Re: [PATCH v5 0/9] Introduce Rust and announce that it will become mandatory Message-ID: In-Reply-To: <20250915-b4-pks-rust-breaking-change-v5-0-dc3a32fbb216@pks.im> 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