-
-
Notifications
You must be signed in to change notification settings - Fork 11
Test matrix
Nuno Cruces edited this page Jun 26, 2024
·
1 revision
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 |
Require Go toolchain support.
These customize the Go SQLite VFS.
Requires wazero support:
- ✅ compiler supported
- ❌ interpreter only
The interpreter is significantly slower (but the compiler introduces startup latency).
Use vfs.SupportsFileLocking
to check if your build supports file locking:
- ✅ full support
- 🟡 reduced concurrency:
BEGIN IMMEDIATE
behaves likeBEGIN EXCLUSIVE
(docs) ⚠️ incompatible locking: accessing databases concurrently with other SQLite libraries will eventually corrupt data- ❌ no support:
can only open databases with
nolock=1
(orimmutable=1
); WAL mode not supported
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
-
linux
/riscv64
: tests a 64-bit Linux with no compiler; all syscalls should work. -
linux
/386
: tests 32-bit compatibility; shared memory is not supported. -
*bsd
/amd64
: tests BSD. -
illumos
/amd64
: acts like a BSD, unlike Solaris. -
solaris
/amd64
: tests an unsupported Unix (VM is flaky, expect failures). -
linux
/amd64
/sqlite3_noshm
: disables shared memory. -
linux
/amd64
/sqlite3_nosys
: tests OS independence. -
linux
/s390x
/sqlite3_flock
: tests big-endian compatibility, emulates z/OS. -
darwin
/sqlite3_flock
: acts like a BSD.