From b08ea25c201b6c53661f69a427a9ffd64def8e46 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Wed, 4 Oct 2023 06:45:59 +0800 Subject: [PATCH] =?UTF-8?q?math/rand=20=E5=A2=9E=E5=8A=A0=20GetRandomData?= =?UTF-8?q?=20=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- waroot/src/math/rand/rand_1wasi.wa | 7 +++++++ waroot/src/math/rand/rand_wasi.wa | 16 ++++++++++++++++ waroot/src/math/rand/reader.wa | 5 +++++ 3 files changed, 28 insertions(+) create mode 100644 waroot/src/math/rand/rand_1wasi.wa create mode 100644 waroot/src/math/rand/rand_wasi.wa create mode 100644 waroot/src/math/rand/reader.wa 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) +}