Open hexfusion opened 4 months ago
Curious if instead of creating go client as a os exec wrapper, exposing some of the Rust functionality via CGO
My experience with CGO has not been great. We don't have strong high performance needs here right? An IPC framework of any form is almost certainly going to be dramatically safer and easier to maintain.
I would start with a simple "stable CLI with --json output" as the lowest common denominator to start, which is almost what we have - we just need to stabilize the CLI and json schema.
But, if we needed to go to IPC, my preferences would be one of:
This issue also intersects with https://github.com/containers/bootc/issues/2
As the popularity of bootc grows a central location for go types/examples would be useful for projects. Speaking with @cgwalters he is willing to consider something similar to rpmostree-client-go[1] for bootc but there is some intersection with [2].
Curious if instead of creating go client as a os exec wrapper, exposing some of the Rust functionality via CGO? Please include me in future conversations on the topic if possible :pray: Wasmtime CGO examples as ref. [3],[4]. I understand that CGO is not ideal but in terms of interaction with Rust over FFI, I don't believe there is another option.
[1] https://github.com/coreos/rpmostree-client-go/ [2] https://github.com/containers/bootc/issues/518 [3] https://github.com/bytecodealliance/wasmtime/blob/b869b66bce8a57c9e83db4e3bcd6809d88e94a5f/crates/c-api/src/types/extern.rs#L39 [4] https://github.com/bytecodealliance/wasmtime-go/blob/cabc733f95623fb897b2c35266124192ffca94b4/externtype.go#L9C12-L9C29