But as I said, this benchmark doesn't include any meaningful marshalling. Julia is the second fastest here when a single int is passed. Julia is very unlikely to still be second fastest when an array (or string) is passed.
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.