-
-
Notifications
You must be signed in to change notification settings - Fork 16
Support matrix
Nuno Cruces edited this page Jan 7, 2025
·
1 revision
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 | π’ | π‘ | π’ | |
freebsd | arm64 | π’ | π‘ | π’ | |
netbsd | amd64 | π’ | π‘ | π’ | |
netbsd | arm64 | π’ | π‘ | π’ | |
openbsd | amd64 | π΄ | π‘ | π’ | |
dragonfly | amd64 | π’ | π‘ | π’ | |
illumos | amd64 | π’ | π‘ | π’ | |
darwin | arm64 | sqlite3_flock | π’ | π‘ | π’ |
darwin | arm64 | sqlite3_dotlk | π’ | π | π |
linux | amd64 | sqlite3_flock | π’ | π | π’ |
linux | amd64 | sqlite3_dotlk | π’ | π | π |
linux | s390x | sqlite3_dotlk | π΄ | π | π |
wasip1 | wasm | sqlite3_dotlk | π΄ | π | π |
solaris | amd64 | sqlite3_dotlk | π’ | π | π |
The following configurations are not tested but are expected to work.
GOOS | GOARCH | Tags | Compiler | File locks | Shm WAL |
---|---|---|---|---|---|
windows | arm64 | π’ | π’ | π’ | |
windows | 386 | π΄ | π’ | π’ | |
linux | other | π΄ | π’ | π΄ | |
other | any | π΄ | π΄ | π΄ | |
other | any | sqlite3_dotlk | π΄ | π | π |
You need a working Go toolchain.
These customize the Go SQLite VFS.
We automatically use wazero's:
- π’ compiler: on an SSE4.1 or ARMv8 processor, on supported OSes
- π΄ interpreter
The interpreter is significantly slower (but the compiler introduces startup latency).
Use wazero.NewRuntimeConfigInterpreter()
to always use the interpreter.
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 risks data corruption
- π΄ 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 may fail with
SQLITE_PROTOCOL
,SQLITE_IOERR
, orSQLITE_CANTOPEN
- π΄ no support:
can only open WAL databases with
EXCLUSIVE
locking mode