diff --git a/waroot/src/math/rand/rand_1wasi.wa b/waroot/src/math/rand/rand_1wasi.wa new file mode 100644 index 0000000..08eb2b2 --- /dev/null +++ b/waroot/src/math/rand/rand_1wasi.wa @@ -0,0 +1,7 @@ +// 版权 @2023 凹语言 作者。保留所有权利。 + +#wa:build !wasi + +func getRandomData(r: []byte) => error { + return errors.New("rand.GetRandomData: unsupport") +} diff --git a/waroot/src/math/rand/rand_wasi.wa b/waroot/src/math/rand/rand_wasi.wa new file mode 100644 index 0000000..f2b11a9 --- /dev/null +++ b/waroot/src/math/rand/rand_wasi.wa @@ -0,0 +1,16 @@ +// 版权 @2023 凹语言 作者。保留所有权利。 + +import ( + "errors" + "runtime" +) + +#wa:import wasi_snapshot_preview1 random_get +func wasi_random_get(buf: i32, bufLen: i32) => (errno: i32) + +func getRandomData(r: []byte) => error { + if wasi_random_get(runtime.WaBytesToPtr(r), i32(len(r))) != 0 { + return errors.New("wasi_random_get failed") + } + return nil +} diff --git a/waroot/src/math/rand/reader.wa b/waroot/src/math/rand/reader.wa new file mode 100644 index 0000000..850ac15 --- /dev/null +++ b/waroot/src/math/rand/reader.wa @@ -0,0 +1,5 @@ +// 版权 @2023 凹语言 作者。保留所有权利。 + +func GetRandomData(r: []byte) => error { + return getRandomData(r) +}