Support matrix (original) (raw)
Tested configurations
The following configurations are tested in CI.
| GOOS | GOARCH | Tags | Compiler | File locks | Shm WAL |
|---|---|---|---|---|---|
| linux | amd64 | 🟢 | 🟢 | 🟢 | |
| linux | arm64 | 🟢 | 🟢 | 🟢 | |
| linux | 386 | 🔴 | 🟢 | 🟢 | |
| linux | arm | 🔴 | 🟢 | 🟢 | |
| linux | riscv64 | 🔴 | 🟢 | 🟢 | |
| linux | ppc64le | 🔴 | 🟢 | 🟢 | |
| linux | loong64 | 🔴 | 🟢 | 🟢 | |
| darwin | arm64 | 🟢 | 🟢 | 🟢 | |
| darwin | amd64 | 🟢 | 🟢 | 🟢 | |
| windows | amd64 | 🟢 | 🟢 | 🟡 | |
| windows | arm64 | 🟢 | 🟢 | 🟡 | |
| 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 | 🟢 | 🟠| 🟠|
Other configurations
The following configurations are not tested but are expected to work.
| GOOS | GOARCH | Tags | Compiler | File locks | Shm WAL |
|---|---|---|---|---|---|
| windows | 386 | 🔴 | 🟢 | 🟡 | |
| linux | other | 🔴 | 🟢 | 🔴 | |
| any | any | 🔴 | 🔴 | 🔴 | |
| any | any | sqlite3_dotlk | 🔴 | 🟠| 🟠|
GOOS and GOARCH
You need a working Go toolchain.
Build tags
These customize the Go SQLite VFS.
Compiler
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.
File locking
Use vfs.SupportsFileLockingto check if your build supports file locking:
- 🟢 full support
- 🟡 reduced concurrency:
BEGIN IMMEDIATEbehaves likeBEGIN EXCLUSIVE(docs) - 🟠incompatible locking: accessing databases concurrently with other SQLite libraries risks data corruption
- 🔴 no support: can only open databases withnolock=1(or immutable=1); WAL mode not supported
Shared memory WAL
Use vfs.SupportsSharedMemoryto 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, orSQLITE_CANTOPEN - 🔴 no support: can only open WAL databases with EXCLUSIVE locking mode