Skip to content

Test matrix

Nuno Cruces edited this page Jun 26, 2024 · 1 revision

Tested configurations

The following configurations are tested in CI.

GOOS GOARCH Tags Compiler File locks Shm WAL Comments
linux amd64  
linux arm64  
linux riscv64   1
linux 386   2
darwin arm64  
darwin amd64  
windows amd64  
freebsd amd64 🟡 🟡 3
openbsd amd64 🟡 🟡 3
netbsd amd64 🟡 🟡 3
illumos amd64   🟡 🟡 4
solaris amd64 5
linux amd64 sqlite3_noshm 6
linux amd64 sqlite3_nosys 7
linux s390x sqlite3_flock ⚠️ 8
darwin arm64 sqlite3_flock 🟡 🟡 9
darwin amd64 sqlite3_flock 🟡 🟡 9

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 fail with SQLITE_PROTOCOL
  • no support: can only open WAL databases with EXCLUSIVE locking mode

Comments

  1. linux/riscv64: tests a 64-bit Linux with no compiler; all syscalls should work.
  2. linux/386: tests 32-bit compatibility; shared memory is not supported.
  3. *bsd/amd64: tests BSD.
  4. illumos/amd64: acts like a BSD, unlike Solaris.
  5. solaris/amd64: tests an unsupported Unix (VM is flaky, expect failures).
  6. linux/amd64/sqlite3_noshm: disables shared memory.
  7. linux/amd64/sqlite3_nosys: tests OS independence.
  8. linux/s390x/sqlite3_flock: tests big-endian compatibility, emulates z/OS.
  9. darwin/sqlite3_flock: acts like a BSD.
Clone this wiki locally