Compare commits

..

1 Commits

Author SHA1 Message Date
Ayke van Laethem 67b45dd14d wasm/js: use standard library syscall package
This switches -target=wasm (browser wasm) over from our own syscall
package to the one used in the Go standard library.

While this doesn't remove any code (so we can't simplify anything), the
idea is that this improves compatibility with existing code a bit more.
So It's a similar reasoning as for
https://github.com/tinygo-org/tinygo/pull/4417.
2024-10-02 22:16:23 +02:00
7 changed files with 7 additions and 34 deletions
-28
View File
@@ -299,39 +299,30 @@ test: wasi-libc check-nodejs-version
TEST_PACKAGES_SLOW = \
compress/bzip2 \
crypto/dsa \
crypto/ecdsa \
index/suffixarray \
# Standard library packages that pass tests quickly on darwin, linux, wasi, and windows
TEST_PACKAGES_FAST = \
cmp \
compress/lzw \
compress/zlib \
container/heap \
container/list \
container/ring \
crypto/des \
crypto/elliptic \
crypto/md5 \
crypto/rc4 \
crypto/sha1 \
crypto/sha256 \
crypto/sha512 \
database/sql/driver \
debug/macho \
embed \
embed/internal/embedtest \
encoding \
encoding/ascii85 \
encoding/asn1 \
encoding/base32 \
encoding/base64 \
encoding/csv \
encoding/hex \
go/ast \
go/format \
go/scanner \
go/version \
hash \
hash/adler32 \
hash/crc64 \
@@ -343,7 +334,6 @@ TEST_PACKAGES_FAST = \
math/cmplx \
net/http/internal/ascii \
net/mail \
net/textproto \
os \
path \
reflect \
@@ -367,17 +357,11 @@ endif
# archive/zip requires os.ReadAt, which is not yet supported on windows
# bytes requires mmap
# compress/flate appears to hang on wasi
# context requires recover(), which is not yet supported on wasi
# crypto/aes requires recover(), which is not yet supported on wasi
# crypto/hmac fails on wasi, it exits with a "slice out of range" panic
# debug/plan9obj requires os.ReadAt, which is not yet supported on windows
# go/build/constraint requires recover(), which is not yet supported on wasi
# image requires recover(), which is not yet supported on wasi
# io/ioutil requires os.ReadDir, which is not yet supported on windows or wasi
# mime exits with "bufio.Scanner: Read returned impossible count" on wasi
# mime/multipart has a nil pointer dereference (stack overflow?)
# mime/quotedprintable requires syscall.Faccessat
# regexp/syntax requires recover() which is not yet supported on wasi
# strconv requires recover() which is not yet supported on wasi
# text/tabwriter requires recover(), which is not yet supported on wasi
# text/template/parse requires recover(), which is not yet supported on wasi
@@ -387,20 +371,14 @@ endif
TEST_PACKAGES_LINUX := \
archive/zip \
compress/flate \
context \
crypto/aes \
crypto/hmac \
debug/dwarf \
debug/plan9obj \
go/build/constraint \
image \
io/ioutil \
mime \
mime/multipart \
mime/quotedprintable \
net \
os/user \
regexp/syntax \
strconv \
text/tabwriter \
text/template/parse
@@ -409,14 +387,8 @@ TEST_PACKAGES_DARWIN := $(TEST_PACKAGES_LINUX)
TEST_PACKAGES_WINDOWS := \
compress/flate \
context \
crypto/aes \
crypto/hmac \
go/build/constraint \
mime \
mime/multipart \
os/user \
regexp/syntax \
strconv \
text/template/parse \
$(nil)
+2 -1
View File
@@ -239,7 +239,8 @@ func (r *runner) run(fn *function, params []value, parentMem *memoryView, indent
// already be emitted in initAll.
continue
case strings.HasPrefix(callFn.name, "runtime.print") || callFn.name == "runtime._panic" || callFn.name == "runtime.hashmapGet" || callFn.name == "runtime.hashmapInterfaceHash" ||
callFn.name == "os.runtime_args" || callFn.name == "internal/task.start" || callFn.name == "internal/task.Current" ||
callFn.name == "os.runtime_args" || callFn.name == "syscall.runtime_envs" ||
callFn.name == "internal/task.start" || callFn.name == "internal/task.Current" ||
callFn.name == "time.startTimer" || callFn.name == "time.stopTimer" || callFn.name == "time.resetTimer":
// These functions should be run at runtime. Specifically:
// * Print and panic functions are best emitted directly without
+1 -1
View File
@@ -218,7 +218,7 @@ func listGorootMergeLinks(goroot, tinygoroot string, overrides map[string]bool)
// with the TinyGo version. This is the case on some targets.
func needsSyscallPackage(buildTags []string) bool {
for _, tag := range buildTags {
if tag == "baremetal" || tag == "nintendoswitch" || tag == "tinygo.wasm" {
if tag == "baremetal" || tag == "nintendoswitch" || tag == "wasip1" || tag == "wasip2" || tag == "wasm_unknown" {
return true
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
//go:build baremetal || (wasm && !wasip1 && !wasip2) || wasm_unknown
//go:build baremetal || wasm_unknown
// This file emulates some file-related functions that are only available
// under a real operating system.
+1 -1
View File
@@ -1,4 +1,4 @@
//go:build !(baremetal || (wasm && !wasip1 && !wasip2) || wasm_unknown)
//go:build !(baremetal || wasm_unknown)
// This file assumes there is a libc available that runs on a real operating
// system.
+1 -1
View File
@@ -1,4 +1,4 @@
//go:build baremetal || js || wasm_unknown
//go:build baremetal || wasm_unknown
package syscall
+1 -1
View File
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build baremetal || nintendoswitch || js || wasm_unknown
//go:build baremetal || nintendoswitch || wasm_unknown
package syscall