Skip to content

Commit

Permalink
all: replace target=wasi with target=wasip1
Browse files Browse the repository at this point in the history
This eliminates the 'wasi' build tag in favor of 'GOOS=wasip1', introduced in Go 1.21.

For backwards compatablity, -target=wasi is a synonym for -target=wasip1.
  • Loading branch information
ydnar committed Mar 4, 2024
1 parent 377415a commit 5a698e2
Show file tree
Hide file tree
Showing 28 changed files with 51 additions and 38 deletions.
10 changes: 5 additions & 5 deletions GNUmakefile
Original file line number Diff line number Diff line change
Expand Up @@ -426,25 +426,25 @@ tinygo-bench-fast:

# Same thing, except for wasi rather than the current platform.
tinygo-test-wasi:
$(TINYGO) test -target wasi $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW) ./tests/runtime_wasi
$(TINYGO) test -target wasip1 $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW) ./tests/runtime_wasi
tinygo-test-wasip1:
GOOS=wasip1 GOARCH=wasm $(TINYGO) test $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW) ./tests/runtime_wasi
tinygo-test-wasi-fast:
$(TINYGO) test -target wasi $(TEST_PACKAGES_FAST) ./tests/runtime_wasi
$(TINYGO) test -target wasip1 $(TEST_PACKAGES_FAST) ./tests/runtime_wasi
tinygo-test-wasip1-fast:
GOOS=wasip1 GOARCH=wasm $(TINYGO) test $(TEST_PACKAGES_FAST) ./tests/runtime_wasi
tinygo-bench-wasi:
$(TINYGO) test -target wasi -bench . $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW)
$(TINYGO) test -target wasip1 -bench . $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW)
tinygo-bench-wasi-fast:
$(TINYGO) test -target wasi -bench . $(TEST_PACKAGES_FAST)
$(TINYGO) test -target wasip1 -bench . $(TEST_PACKAGES_FAST)

# Test external packages in a large corpus.
test-corpus:
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags byollvm -run TestCorpus . -corpus=testdata/corpus.yaml
test-corpus-fast:
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags byollvm -run TestCorpus -short . -corpus=testdata/corpus.yaml
test-corpus-wasi: wasi-libc
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags byollvm -run TestCorpus . -corpus=testdata/corpus.yaml -target=wasi
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags byollvm -run TestCorpus . -corpus=testdata/corpus.yaml -target=wasip1

tinygo-baremetal:
# Regression tests that run on a baremetal target and don't fit in either main_test.go or smoketest.
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ tinygo flash -target arduino examples/blinky1

TinyGo is very useful for compiling programs both for use in browsers (WASM) as well as for use on servers and other edge devices (WASI).

TinyGo programs can run in Fastly Compute@Edge (https://developer.fastly.com/learning/compute/go/), Fermyon Spin (https://developer.fermyon.com/spin/go-components), wazero (https://wazero.io/languages/tinygo/) and many other WebAssembly runtimes.
TinyGo programs can run in [Fastly Compute](https://www.fastly.com/documentation/guides/compute/go/), [Fermyon Spin](https://developer.fermyon.com/spin/go-components), [wazero](https://wazero.io/languages/tinygo/) and many other WebAssembly runtimes.

Here is a small TinyGo program for use by a WASI host application:

Expand All @@ -54,14 +54,14 @@ func add(x, y uint32) uint32 {
return x + y
}

// main is required for the `wasi` target, even if it isn't used.
// main is required for the `wasip1` target, even if it isn't used.
func main() {}
```

This compiles the above TinyGo program for use on any WASI runtime:

```shell
tinygo build -o main.wasm -target=wasi main.go
tinygo build -o main.wasm -target=wasip1 main.go
```

## Installation
Expand Down
7 changes: 6 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ func Test(pkgName string, stdout, stderr io.Writer, options *compileopts.Options
// Tests are always run in the package directory.
cmd.Dir = result.MainDir

// wasmtime is the default emulator used for `-target=wasi`. wasmtime
// wasmtime is the default emulator used for `-target=wasip1`. wasmtime
// is a WebAssembly runtime CLI with WASI enabled by default. However,
// only stdio are allowed by default. For example, while STDOUT routes
// to the host, other files don't. It also does not inherit environment
Expand Down Expand Up @@ -1548,6 +1548,11 @@ func main() {
options.PrintCommands = printCommand
}

// Compatibility with legacy -target=wasi
if options.Target == "wasi" {
options.Target = "wasip1"
}

err = options.Verify()
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
Expand Down
2 changes: 1 addition & 1 deletion src/crypto/rand/rand_urandom.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build linux && !baremetal && !wasi
//go:build linux && !baremetal && !wasip1

// This implementation of crypto/rand uses the /dev/urandom pseudo-file to
// generate random numbers.
Expand Down
2 changes: 1 addition & 1 deletion src/os/dir_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build darwin || (linux && !baremetal && !js && !wasi && !386 && !arm)
//go:build darwin || (linux && !baremetal && !js && !wasip1 && !386 && !arm)

package os_test

Expand Down
2 changes: 1 addition & 1 deletion src/os/dir_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 linux && !baremetal && !wasi && !wasip1
//go:build linux && !baremetal && !wasip1

package os

Expand Down
4 changes: 2 additions & 2 deletions src/os/dir_wasi.go → src/os/dir_wasip1.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file was derived from src/os/dir_darwin.go since the logic for wasi is
// This file was derived from src/os/dir_darwin.go since the logic for WASI is
// fairly similar: we use fdopendir, fdclosedir, and readdir from wasi-libc in
// a similar way that the darwin code uses functions from libc.

//go:build wasi || wasip1
//go:build wasip1

package os

Expand Down
2 changes: 1 addition & 1 deletion src/os/dirent_linux.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build !baremetal && !js && !wasi
//go:build !baremetal && !js && !wasip1

// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
Expand Down
2 changes: 1 addition & 1 deletion src/os/file_other.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build baremetal || (wasm && !wasi && !wasip1)
//go:build baremetal || (wasm && !wasip1)

package os

Expand Down
2 changes: 1 addition & 1 deletion src/os/is_wasi_no_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build !wasi && !wasip1
//go:build !wasip1

package os_test

Expand Down
2 changes: 1 addition & 1 deletion src/os/is_wasi_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build wasi || wasip1
//go:build wasip1

package os_test

Expand Down
2 changes: 1 addition & 1 deletion src/os/os_chmod_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build !baremetal && !js && !wasi && !wasip1
//go:build !baremetal && !js && !wasip1

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
Expand Down
2 changes: 1 addition & 1 deletion src/os/os_symlink_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build !windows && !baremetal && !js && !wasi && !wasip1
//go:build !windows && !baremetal && !js && !wasip1

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
Expand Down
2 changes: 1 addition & 1 deletion src/os/read_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build !baremetal && !js && !wasi && !wasip1
//go:build !baremetal && !js && !wasip1

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
Expand Down
2 changes: 1 addition & 1 deletion src/os/removeall_noat.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 && !js && !wasi && !wasip1
//go:build !baremetal && !js && !wasip1

package os

Expand Down
2 changes: 1 addition & 1 deletion src/os/stat_other.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build baremetal || (wasm && !wasi && !wasip1)
//go:build baremetal || (wasm && !wasip1)

// Copyright 2016 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
Expand Down
2 changes: 1 addition & 1 deletion src/os/tempfile_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 && !js && !wasi && !wasip1
//go:build !baremetal && !js && !wasip1

package os_test

Expand Down
2 changes: 1 addition & 1 deletion src/runtime/memhash_fnv.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build (!wasi && !runtime_memhash_tsip && !runtime_memhash_leveldb) || (wasi && runtime_memhash_fnv)
//go:build (!wasip1 && !runtime_memhash_tsip && !runtime_memhash_leveldb) || (wasip1 && runtime_memhash_fnv)

// This is the default for all targets except WASI, unless a more specific build
// tag is set.
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/memhash_leveldb.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build runtime_memhash_leveldb || (wasi && !runtime_memhash_fnv && !runtime_memhash_tsip)
//go:build runtime_memhash_leveldb || (wasip1 && !runtime_memhash_fnv && !runtime_memhash_tsip)

// This is the default for WASI, but can also be used on other targets with the
// right build tag.
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/os_linux.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build linux && !baremetal && !nintendoswitch && !wasi && !wasm_unknown
//go:build linux && !baremetal && !nintendoswitch && !wasip1 && !wasm_unknown

package runtime

Expand Down
2 changes: 1 addition & 1 deletion src/runtime/runtime_unix.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build (darwin || (linux && !baremetal && !wasi && !wasm_unknown)) && !nintendoswitch
//go:build (darwin || (linux && !baremetal && !wasip1 && !wasm_unknown)) && !nintendoswitch

package runtime

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build tinygo.wasm && (wasi || wasip1)
//go:build wasip1

package runtime

Expand Down
2 changes: 1 addition & 1 deletion src/runtime/runtime_wasm_js.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build wasm && !wasi && !wasip1
//go:build wasm && !wasip1

package runtime

Expand Down
2 changes: 1 addition & 1 deletion src/syscall/errno_other.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build !wasi && !wasip1 && !darwin
//go:build !wasip1 && !darwin

package syscall

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build wasi || wasip1
//go:build wasip1

package syscall

Expand Down Expand Up @@ -397,8 +397,16 @@ func Chmod(path string, mode uint32) (err error) {
return Lstat(path, &stat)
}

// wasmPageSize is the size of a page in WebAssembly's 32-bit memory. This
// is also its only unit of change.
//
// See https://www.w3.org/TR/wasm-core-1/#page-size
//
// FIXME: this is also defined in package runtime.
const wasmPageSize = 64 * 1024

func Getpagesize() int {
return libc_getpagesize()
return wasmPageSize
}

type Utsname struct {
Expand Down
2 changes: 1 addition & 1 deletion src/testing/is_wasi_no_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 !wasi && !wasip1
//go:build !wasip1

package testing_test

Expand Down
2 changes: 1 addition & 1 deletion src/testing/is_wasi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 wasi || wasip1
//go:build wasip1

package testing_test

Expand Down
6 changes: 3 additions & 3 deletions targets/wasi.json → targets/wasip1.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"llvm-target": "wasm32-unknown-wasi",
"cpu": "generic",
"features": "+bulk-memory,+mutable-globals,+nontrapping-fptoint,+sign-ext",
"build-tags": ["tinygo.wasm", "wasi"],
"goos": "linux",
"goarch": "arm",
"build-tags": ["tinygo.wasm"],
"goos": "wasip1",
"goarch": "wasm",
"linker": "wasm-ld",
"libc": "wasi-libc",
"rtlib": "compiler-rt",
Expand Down

0 comments on commit 5a698e2

Please sign in to comment.