A CGo-free port of SQLite/SQLite3
gitlab.com
gitlab.com
1. gitlab.com/cznic/sqlite is the primary repo
2. github.com/cznic/sqlite was the github mirror but it moved
3. github.com/mordernc-org/sqlite is the read-only mirror of the primary repo
Cheers!
Typo, should be: github.com/modernc-org/sqlite
It's a somewhat less faithful translation, since I manually ported the VFS (SQLite OS abstraction layer).
OTOH, each SQLite connection is sandboxed (can't access/corrupt Go memory, or other SQLite connections). And it should run everywhere Go runs.
2023: Go port of SQLite without CGo (255 points, 118 comments) https://news.ycombinator.com/item?id=35488980
2020: Cznic/sqlite: Sqlite in pure Golang (no CGO) (6 points, not interesting for discussion.. this project is old) https://news.ycombinator.com/item?id=24358826
(7 other similar submissions)
-tags netgo,osusergo -linkmode external -extldflags -static
I regularly compile (cross-compile, even) static Go binaries that use the cgo sqlite package. But it's certainly a lot simpler if you can avoid cgo.
but the overheads also stack up, the database/sql api is fairly allocation heavy too unless you do a lot of work and that friction increases quite a bit with the ffi boundary.
this is not to suggest “modernc is faster” - it’s not for a lot a workloads.
there are opportunities for optimization all over both approaches.