mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-25 13:16:40 +00:00
Compare commits
3 commits
3ba2100b98
...
15d856aa39
Author | SHA1 | Date | |
---|---|---|---|
15d856aa39 | |||
9f6a1f7e79 | |||
3464b39d39 |
2
.gitattributes
vendored
2
.gitattributes
vendored
|
@ -1 +1,3 @@
|
|||
*.go diff=golang
|
||||
go.sum linguist-generated merge=ours
|
||||
/vendor/ linguist-generated
|
||||
|
|
|
@ -23,13 +23,44 @@
|
|||
"context"
|
||||
"database/sql/driver"
|
||||
|
||||
"codeberg.org/gruf/go-bytesize"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/tetratelabs/wazero"
|
||||
|
||||
"github.com/ncruces/go-sqlite3"
|
||||
sqlite3driver "github.com/ncruces/go-sqlite3/driver"
|
||||
_ "github.com/ncruces/go-sqlite3/embed" // embed wasm binary
|
||||
_ "github.com/ncruces/go-sqlite3/vfs/memdb" // include memdb vfs
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Initialize WASM runtime config.
|
||||
cfg := wazero.NewRuntimeConfig()
|
||||
|
||||
// The size of a page in WASM.
|
||||
const pageSize = uint32(^uint16(0))
|
||||
|
||||
// The following check is compile-time:
|
||||
//
|
||||
// Size of a pointer on this platform,
|
||||
// i.e. are we running on 32 / 64 bit.
|
||||
//
|
||||
// See: https://github.com/ncruces/go-sqlite3/issues/168#issuecomment-2412429221
|
||||
const ptrsz = 32 << (^uintptr(0) >> 63)
|
||||
switch ptrsz {
|
||||
case 32:
|
||||
const memoryLimit = uint32(32*bytesize.MiB) / pageSize
|
||||
cfg = cfg.WithMemoryLimitPages(memoryLimit)
|
||||
case 64:
|
||||
const memoryLimit = uint32(256*bytesize.MiB) / pageSize
|
||||
cfg = cfg.WithMemoryLimitPages(memoryLimit)
|
||||
}
|
||||
|
||||
// Set runtime config before
|
||||
// initialize func gets called.
|
||||
sqlite3.RuntimeConfig = cfg
|
||||
}
|
||||
|
||||
// Driver is our own wrapper around the
|
||||
// driver.SQLite{} type in order to wrap
|
||||
// further SQL types with our own
|
||||
|
|
Loading…
Reference in a new issue