Without additional configuration cgo breaks cross-compilation.
Oh right how could I forget that.
Yes. It doesn’t play nice with goroutines and Go’s concurrency model, from what I understand.
Yes, function calls across the boundary are slow. It's fine if the functions do lots of work, it's very expensive for function calls that should be cheap.
For sqlite it might not matter too much, since any query does quite a bit of work.
Agreed. I wouldn't be surprised if a pure-Go alternative would be slower. Someone remarked upthread that the same author wrote a C-to-Go transpiler specifically to make a pure-Go sqlite and it was (somewhat unsurprisingly) considerably slower than the CGo version. It's possible (and to an extent, likely) that the transpolar was generating suboptimal Go code, but I would wager that a hand-written version would also be slower.
A query may do a lot of work but iterating over many results could be very slow.
Yes, the API is probably suboptimal for Go. It's better to make a wrapper that does the query and fetches many results in one call, into a Go buffer.