On 2024.08.07 19:51, rsbecker@xxxxxxxxxxxxx wrote: > On Wednesday, August 7, 2024 7:08 PM, Josh Steadmon wrote: > >On 2024.08.07 17:40, rsbecker@xxxxxxxxxxxxx wrote: > >> On Wednesday, August 7, 2024 5:21 PM, brian m. carlson wrote: > >> >On 2024-08-07 at 18:21:28, Josh Steadmon wrote: > >> >> Introduce cgit-rs, a Rust wrapper crate that allows Rust code to > >> >> call functions in libgit.a. This initial patch defines build rules > >> >> and an interface that exposes user agent string getter functions as > >> >> a proof of concept. A proof-of-concept library consumer is provided > >> >> in contrib/cgit-rs/src/main.rs. This executable can be run with > >> >> `cargo run` > >> >> > >> >> Symbols in cgit can collide with symbols from other libraries such > >> >> as libgit2. We avoid this by first exposing library symbols in > >> >> public_symbol_export.[ch]. These symbols are prepended with "libgit_" > >> >> to avoid collisions and set to visible using a visibility pragma. > >> >> In build.rs, Rust builds contrib/cgit-rs/libcgit.a, which also > >> >> contains libgit.a and other dependent libraries, with > >> >> -fvisibility=hidden to hide all symbols within those libraries that > >> >> haven't been exposed with a visibility pragma. > >> > > >> >I think this is a good idea. It's optional and it allows us to add > >> >functionality as we go along. Platforms that don't have Rust can just > omit > >building it. > >> > > >> >> +[dependencies] > >> >> +libc = "0.2.155" > >> > > >> >I don't love that we're using libc here. It would be better to use > >> >rustix because that provides safe APIs that are compatible with > >> >POSIX, but I think for now we need this because rustix doesn't offer > >> >memory management like free(3). I'd really prefer that we didn't > >> >have to do memory management in Rust, but maybe that can come in with a > >future series. > >> > >> This is a good point. Libc is not portable, but because I can't build > >> with RUST anyway, I hope that libc is restricted to this facility if > >> used. It should not be included in the git C build. It is probably > >> moot for me anyway for this series, but I have to mention it in case > anyone else > >gets the idea to include it as a dependency for git C. > > > >I know you don't have access to Rust, but would you be able to test the > symbol > >visibility steps with `make contrib/cgit-rs/libcgit.a`? > > Of course. Branch? URI? https://github.com/steadmon/git/tree/cgit-dev