mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-02-10 14:50:17 +00:00
temporary fix for tetratelabs/wazero#2365 armv8 compiler support bug (#3741)
This commit is contained in:
parent
1a8e42eeb3
commit
1276cde4b3
|
@ -22,12 +22,14 @@
|
|||
import (
|
||||
"context"
|
||||
"os"
|
||||
"runtime"
|
||||
"sync/atomic"
|
||||
"unsafe"
|
||||
|
||||
"codeberg.org/gruf/go-ffmpreg/embed"
|
||||
"codeberg.org/gruf/go-ffmpreg/wasm"
|
||||
"github.com/tetratelabs/wazero"
|
||||
"golang.org/x/sys/cpu"
|
||||
)
|
||||
|
||||
// ffmpreg is a concurrency-safe pointer
|
||||
|
@ -46,8 +48,17 @@ func initWASM(ctx context.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Create new runtime config.
|
||||
cfg := wazero.NewRuntimeConfig()
|
||||
var cfg wazero.RuntimeConfig
|
||||
|
||||
// Create new runtime config, taking bug into account:
|
||||
// taking https://github.com/tetratelabs/wazero/pull/2365
|
||||
//
|
||||
// Thanks @ncruces (of go-sqlite3) for the fix!
|
||||
if compilerSupported() {
|
||||
cfg = wazero.NewRuntimeConfigCompiler()
|
||||
} else {
|
||||
cfg = wazero.NewRuntimeConfigInterpreter()
|
||||
}
|
||||
|
||||
if dir := os.Getenv("GTS_WAZERO_COMPILATION_CACHE"); dir != "" {
|
||||
// Use on-filesystem compilation cache given by env.
|
||||
|
@ -110,6 +121,26 @@ func initWASM(ctx context.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func compilerSupported() bool {
|
||||
switch runtime.GOOS {
|
||||
case "linux", "android",
|
||||
"windows", "darwin",
|
||||
"freebsd", "netbsd", "dragonfly",
|
||||
"solaris", "illumos":
|
||||
break
|
||||
default:
|
||||
return false
|
||||
}
|
||||
switch runtime.GOARCH {
|
||||
case "amd64":
|
||||
return cpu.X86.HasSSE41
|
||||
case "arm64":
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// isNil will safely check if 'v' is nil without
|
||||
// dealing with weird Go interface nil bullshit.
|
||||
func isNil(i interface{}) bool {
|
||||
|
|
Loading…
Reference in a new issue