Skip to content

Support matrix

Nuno Cruces edited this page May 19, 2026 · 1 revision

Tested configurations

The following configurations are tested in CI.

GOOS GOARCH Tags File locks Shm WAL
linux amd64 🟒 🟒
linux arm64 🟒 🟒
linux 386 🟒 🟒
linux arm 🟒 🟒
linux riscv64 🟒 🟒
linux loong64 🟒 🟒
linux ppc64le 🟒 🟒
linux s390x 🟒 🟠
darwin arm64 🟒 🟒
darwin amd64 🟒 🟒
windows amd64 🟒 🟑
windows arm64 🟒 🟑
freebsd amd64 🟑 🟒
freebsd arm64 🟑 🟒
netbsd amd64 🟑 🟒
netbsd arm64 🟑 🟒
openbsd amd64 🟑 🟒
illumos amd64 🟑 🟒
dragonfly amd64 🟑 🟒
darwin arm64 sqlite3_flock 🟑 🟒
darwin arm64 sqlite3_dotlk 🟠 🟠
linux amd64 sqlite3_flock 🟠 🟒
linux amd64 sqlite3_dotlk 🟠 🟠
solaris amd64 sqlite3_dotlk 🟠 🟠
wasip1 wasm sqlite3_dotlk 🟠 🟠

Other configurations

The following configurations are not tested but are expected to work.

GOOS GOARCH Tags File locks Shm WAL
windows 386 🟒 🟑
linux other 🟒 🟠
other other πŸ”΄ πŸ”΄
any any sqlite3_dotlk 🟠 🟠

GOOS and GOARCH

You need a working Go toolchain.

Build tags

These customize the Go SQLite VFS.

File locking

Use vfs.SupportsFileLocking to check if your build supports file locking:

  • 🟒 full support
  • 🟑 reduced concurrency: BEGIN IMMEDIATE behaves like BEGIN EXCLUSIVE (docs)
  • 🟠 incompatible locking: accessing databases concurrently with other SQLite libraries risks data corruption
  • πŸ”΄ no support: can only open databases with nolock=1 (or immutable=1); WAL mode not supported

Shared memory WAL

Use vfs.SupportsSharedMemory to check if your build supports shared memory:

  • 🟒 full support
  • 🟑 reduced performance: memory sharing through copying, which reduces performance under write-heavy workloads
  • 🟠 in-process: WAL databases can only be accessed by a single proccess; other processes fail with SQLITE_PROTOCOL, SQLITE_IOERR, or SQLITE_CANTOPEN
  • πŸ”΄ no support: can only open WAL databases with EXCLUSIVE locking mode

Clone this wiki locally