diff --git a/projects/valkyrie-std/source/io/InputStream.vk b/projects/valkyrie-std/source/io/InputStream.vk new file mode 100644 index 0000000..1b9f065 --- /dev/null +++ b/projects/valkyrie-std/source/io/InputStream.vk @@ -0,0 +1,9 @@ +namespace package.io; + + +#ffi("wasi:io/streams", "input-stream") +resource class InputStream {} + +#ffi("wasi:cli/stdout", "get-stderr") +function standard_input() -> InputStream {} + diff --git a/projects/valkyrie-std/source/io/IoError.vk b/projects/valkyrie-std/source/io/IoError.vk new file mode 100644 index 0000000..0fabceb --- /dev/null +++ b/projects/valkyrie-std/source/io/IoError.vk @@ -0,0 +1,11 @@ +namespace package.io; + +#ffi("wasi:io/error", "error") +resource class IoError {} + +extends IoError { + #ffi("wasi:io/error", "[method]to-debug-string") + private to_debug_string(self) -> String { + + } +} diff --git a/projects/valkyrie-std/source/io/OutputStream.vk b/projects/valkyrie-std/source/io/OutputStream.vk new file mode 100644 index 0000000..bbc9bda --- /dev/null +++ b/projects/valkyrie-std/source/io/OutputStream.vk @@ -0,0 +1,18 @@ +namespace package.io; + + +#ffi("wasi:io/streams", "output-stream") +resource class OutputStream {} + +extends OutputStream { + #ffi("wasi:io/streams", "write") + function write(data: String) -> void {} +} + + +#ffi("wasi:cli/stdout", "get-stdout") +function standard_output() -> OutputStream {} + +#ffi("wasi:cli/stdout", "get-stdin") +function standard_error() -> OutputStream {} + diff --git a/projects/valkyrie-std/source/io/_.vk b/projects/valkyrie-std/source/io/_.vk new file mode 100644 index 0000000..7b88e1c --- /dev/null +++ b/projects/valkyrie-std/source/io/_.vk @@ -0,0 +1,30 @@ +namespace package.io; + +#ffi("wasi:io/error", "error") +resource class IoError {} + +extends IoError { + #ffi("wasi:io/error", "[method]to-debug-string") + private to_debug_string(self) -> String { + + } +} + +#ffi("wasi:io/streams", "input-stream") +resource class InputStream {} + +#ffi("wasi:cli/stdout", "get-stderr") +function standard_input() -> InputStream {} + + +#ffi("wasi:io/streams", "output-stream") +resource class OutputStream {} + + +#ffi("wasi:cli/stdout", "get-stdout") +function standard_output() -> OutputStream {} + + + +#ffi("wasi:cli/stdout", "get-stdin") +function standard_error() -> OutputStream {} diff --git a/projects/valkyrie-std/source/random/generator/LinearCongruential.vk b/projects/valkyrie-std/source/random/generator/LinearCongruential.vk index 178925b..ab95d4a 100644 --- a/projects/valkyrie-std/source/random/generator/LinearCongruential.vk +++ b/projects/valkyrie-std/source/random/generator/LinearCongruential.vk @@ -8,7 +8,7 @@ structure LinearCongruential { } extends LinearCongruential { - constructor(seed: u64?, a: u64 = 25214903917, b: u64 = 11, c: u64 = 2^48) { + constructor(seed: u64? = null, a: u64 = 25214903917, b: u64 = 11, c: u64 = 2^48) { self.seed = seed ?? random_seed_safe(); self.a = a; self.b = b; diff --git a/projects/valkyrie-std/source/random/seeds.vk b/projects/valkyrie-std/source/random/seeds.vk index 2242dcd..6ffdd63 100644 --- a/projects/valkyrie-std/source/random/seeds.vk +++ b/projects/valkyrie-std/source/random/seeds.vk @@ -1,25 +1,25 @@ namespace package.random; 🗨 Get a cryptographically secure random number as a random seed -#ffi("wasi:random", "get-insecure-random-u64") -micro random_seed_fast() : u64 { +#ffi("wasi:random/random", "get-random-u64") +micro random_seed_safe() : u64 { } -~ Get a cryptographically secure random number as a random seed -#ffi("wasi:random", "get-random-u64") -micro random_seed_safe() : u64 { +🗨 Get a cryptographically secure random number as a random seed +#ffi("wasi:random/random", "get-insecure-random-u64") +micro random_seed_fast() : u64 { } 🗨 Get a cryptographically secure random number as a random seed -#ffi("wasi:random", "get-random-bytes") -micro random_bytes_safe(length: u64) : Vector { +#ffi("wasi:random/random", "get-random-bytes") +micro random_bytes_safe(length: u64): Array { } 🗨 Get a fast random number seed -#ffi("wasi:random", "get-insecure-random-bytes") -micro random_bytes_fast(length: u64) : Vector { +#ffi("wasi:random/random", "get-insecure-random-bytes") +micro random_bytes_fast(length: u64): Array { } \ No newline at end of file diff --git a/projects/valkyrie-std/source/time/Duration.vk b/projects/valkyrie-std/source/time/Duration.vk index e061ed5..f197abf 100644 --- a/projects/valkyrie-std/source/time/Duration.vk +++ b/projects/valkyrie-std/source/time/Duration.vk @@ -48,49 +48,49 @@ extends Duration { new Self { seconds, nanoseconds: 0 } } second(seconds: f64): Duration { - cast_seconds(nanoseconds, 1) + cast_seconds(nanoseconds, 1.0) } millisecond(milliseconds: u64): Duration { cast_seconds(nanoseconds, 1_000) } millisecond(milliseconds: f64): Duration { - cast_seconds(nanoseconds, 1_000) + cast_seconds(nanoseconds, 1_000.0) } microsecond(microseconds: u64): Duration { cast_seconds(nanoseconds, 1_000_000) } microsecond(microseconds: f64): Duration { - cast_seconds(nanoseconds, 1_000_000) + cast_seconds(nanoseconds, 1_000_000.0) } nanosecond(nanoseconds: u64): Duration { cast_seconds(nanoseconds, 1_000_000_000) } nanosecond(nanoseconds: f64): Duration { - cast_seconds(nanoseconds, 1_000_000_000) + cast_seconds(nanoseconds, 1_000_000_000.0) } } -private function cast_seconds(time: u32, rate: u32): Duration { - let seconds = time.floor_divide(rate) as u64; +private micro cast_seconds(time: u32, rate: u32): Duration { + let seconds = (time // rate) as u64; let nanoseconds = time % rate; new Duration { seconds, nanoseconds }; } -private function cast_seconds(time: u64, rate: u64): Duration { - let seconds = time.floor_divide(rate); - let nanoseconds = (time % rate) as u32; +private micro cast_seconds(time: u64, rate: u64): Duration { + let seconds = time // rate; + let nanoseconds = (time % rate) as 64; new Duration { seconds, nanoseconds }; } -private function cast_seconds(time: f32, rate: f32): Duration { - let seconds = time.floor_divide(rate) as u64; - let nanoseconds = (nanoseconds % rate).fraction() as u32; +private micro cast_seconds(time: f32, rate: f32): Duration { + let seconds = (time // rate) as u32; + let nanoseconds = (nanoseconds % rate).fraction() as u64; new Duration { seconds, nanoseconds }; } -private function cast_seconds(time: f64, rate: f64): Duration { - let seconds = time.floor_divide(rate) as u64; - let nanoseconds = (nanoseconds % rate).fraction() as u32; +private micro cast_seconds(time: f64, rate: f64): Duration { + let seconds = (time // rate) as u32; + let nanoseconds = (nanoseconds % rate).fraction() as u64; new Duration { seconds, nanoseconds }; } diff --git a/projects/valkyrie-std/source/time/time.vk b/projects/valkyrie-std/source/time/time.vk index d8b46ff..e69de29 100644 --- a/projects/valkyrie-std/source/time/time.vk +++ b/projects/valkyrie-std/source/time/time.vk @@ -1,4 +0,0 @@ -#external class Time { - _secs: u64, - _nanos: u32, -} \ No newline at end of file diff --git a/projects/valkyrie-std/source/time/timezone.vk b/projects/valkyrie-std/source/time/timezone.vk index 6b38575..e69de29 100644 --- a/projects/valkyrie-std/source/time/timezone.vk +++ b/projects/valkyrie-std/source/time/timezone.vk @@ -1,4 +0,0 @@ -#native class Duration { - _secs: u64, - _nanos: u32, -} \ No newline at end of file