diff --git a/core/crypto/rand_js.odin b/core/crypto/rand_js.odin index 99a5bbcbc..353b1e6b9 100644 --- a/core/crypto/rand_js.odin +++ b/core/crypto/rand_js.odin @@ -6,7 +6,7 @@ foreign odin_env { env_rand_bytes :: proc "contextless" (buf: []byte) --- } -_MAX_PER_CALL_BYTES :: 65536 +_MAX_PER_CALL_BYTES :: 65536 // 64kiB _rand_bytes :: proc(dst: []byte) { dst := dst diff --git a/core/math/rand/system_js.odin b/core/math/rand/system_js.odin index 14949000e..b9b71c4a6 100644 --- a/core/math/rand/system_js.odin +++ b/core/math/rand/system_js.odin @@ -2,11 +2,13 @@ package rand foreign import "odin_env" foreign odin_env { - @(link_name = "rand") - rand_f64 :: proc "contextless" () -> f64 --- + @(link_name = "rand_bytes") + env_rand_bytes :: proc "contextless" (buf: []byte) --- } @(require_results) _system_random :: proc() -> u64 { - return u64(rand_f64() * 0x1fffffffffffff) + buf: [8]u8 + env_rand_bytes(buf[:]) + return transmute(u64)buf } diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 16ef5d3aa..78fdcca18 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -1350,7 +1350,6 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { exp: Math.exp, ldexp: (x, exp) => x * Math.pow(2, exp), - rand: Math.random, rand_bytes: (ptr, len) => { const view = new Uint8Array(wasmMemoryInterface.memory.buffer, ptr, len) crypto.getRandomValues(view)