Skip to content

Test matrix

Nuno Cruces edited this page Nov 12, 2024 · 2 revisions

Tested configurations

The following configurations are tested in CI.

GOOS GOARCH Tags Compiler File locks Shm WAL
linux amd64  
linux arm64  
linux riscv64  
linux ppc64le  
linux 386  
darwin arm64  
darwin amd64  
windows amd64  
freebsd amd64 🟡 🟡
openbsd amd64 🟡 🟡
netbsd amd64 🟡 🟡
dragonfly amd64 🟡 🟡
illumos amd64   🟡 🟡
darwin arm64 sqlite3_flock 🟡 🟡
darwin arm64 sqlite3_dotlk ⚠️ 🟡
linux amd64 sqlite3_dotlk ⚠️ 🟡
solaris amd64 sqlite3_dotlk ⚠️ 🟡
linux s390x sqlite3_dotlk ⚠️ 🟡
linux amd64 sqlite3_nosys

GOOS and GOARCH

Require Go toolchain support.

Build tags

These customize the Go SQLite VFS.

Compiler

Requires wazero support:

  • compiler supported
  • interpreter only

The interpreter is significantly slower (but the compiler introduces startup latency).

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 will eventually corrupt data
  • 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
  • 🟡 in-process: WAL databases can only be accessed by a single proccess; other processes may fail with SQLITE_PROTOCOL
  • no support: can only open WAL databases with EXCLUSIVE locking mode
Clone this wiki locally