alias typus Pollable: Pollable { } ⍝? An instant in time, in nanoseconds. An instant is relative to an ⍝? unspecified initial value, and can only be compared to instances from ⍝? the same monotonic-clock. alias typus Instant: u64 { } ⍝? A duration of time, in nanoseconds. alias typus Duration: u64 { } ⍝? Read the current value of the clock. ⍝? ⍝? The clock is monotonic, therefore calling this function repeatedly will ⍝? produce a sequence of non-decreasing values. #import("wasi:clocks/monotonic-clock", "now") micro now() -> u64 { } ⍝? Query the resolution of the clock. Returns the duration of time ⍝? corresponding to a clock tick. #import("wasi:clocks/monotonic-clock", "resolution") micro resolution() -> u64 { } ⍝? Create a `pollable` which will resolve once the specified instant ⍝? occured. #import("wasi:clocks/monotonic-clock", "subscribe-instant") micro subscribe_instant(`when`: u64) -> Pollable { } ⍝? Create a `pollable` which will resolve once the given duration has ⍝? elapsed, starting at the time at which this function was called. ⍝? occured. #import("wasi:clocks/monotonic-clock", "subscribe-duration") micro subscribe_duration(`when`: u64) -> Pollable { } ⍝? A time and date in seconds plus nanoseconds. class Datetime { seconds: u64, nanoseconds: u32, } ⍝? Read the current value of the clock. ⍝? ⍝? This clock is not monotonic, therefore calling this function repeatedly ⍝? will not necessarily produce a sequence of non-decreasing values. ⍝? ⍝? The returned timestamps represent the number of seconds since ⍝? 1970-01-01T00:00:00Z, also known as [POSIX's Seconds Since the Epoch], ⍝? also known as [Unix Time]. ⍝? ⍝? The nanoseconds field of the output is always less than 1000000000. ⍝? ⍝? [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 ⍝? [Unix Time]: https://en.wikipedia.org/wiki/Unix_time #import("wasi:clocks/wall-clock", "now") micro now() -> Datetime { } ⍝? Query the resolution of the clock. ⍝? ⍝? The nanoseconds field of the output is always less than 1000000000. #import("wasi:clocks/wall-clock", "resolution") micro resolution() -> Datetime { }