Julia (one of the 2 fastest languages here) Is GCed. GC only make C interop hard if you move objects.
julia> a = "hello there!"
"hello there!"
julia> p = pointer(a)
Ptr{UInt8} @0x000000010a431458
julia> ccall(:puts, Int, (Ptr{UInt8},), p)
hello there!
10
For vectors of structs, then of course you'd need to know the layout of each struct when operating on them from the other language, but still doable enough in principle. Vectors of union types would be trickier though.