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