|
| 1 | +package wasi:clocks@0.2.0-rc-2023-11-10; |
| 2 | +/// WASI Wall Clock is a clock API intended to let users query the current |
| 3 | +/// time. The name "wall" makes an analogy to a "clock on the wall", which |
| 4 | +/// is not necessarily monotonic as it may be reset. |
| 5 | +/// |
| 6 | +/// It is intended to be portable at least between Unix-family platforms and |
| 7 | +/// Windows. |
| 8 | +/// |
| 9 | +/// A wall clock is a clock which measures the date and time according to |
| 10 | +/// some external reference. |
| 11 | +/// |
| 12 | +/// External references may be reset, so this clock is not necessarily |
| 13 | +/// monotonic, making it unsuitable for measuring elapsed time. |
| 14 | +/// |
| 15 | +/// It is intended for reporting the current date and time for humans. |
| 16 | +interface wall-clock { |
| 17 | + /// A time and date in seconds plus nanoseconds. |
| 18 | + record datetime { |
| 19 | + seconds: u64, |
| 20 | + nanoseconds: u32, |
| 21 | + } |
| 22 | + |
| 23 | + /// Read the current value of the clock. |
| 24 | + /// |
| 25 | + /// This clock is not monotonic, therefore calling this function repeatedly |
| 26 | + /// will not necessarily produce a sequence of non-decreasing values. |
| 27 | + /// |
| 28 | + /// The returned timestamps represent the number of seconds since |
| 29 | + /// 1970-01-01T00:00:00Z, also known as [POSIX's Seconds Since the Epoch], |
| 30 | + /// also known as [Unix Time]. |
| 31 | + /// |
| 32 | + /// The nanoseconds field of the output is always less than 1000000000. |
| 33 | + /// |
| 34 | + /// [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 |
| 35 | + /// [Unix Time]: https://en.wikipedia.org/wiki/Unix_time |
| 36 | + now: func() -> datetime; |
| 37 | + |
| 38 | + /// Query the resolution of the clock. |
| 39 | + /// |
| 40 | + /// The nanoseconds field of the output is always less than 1000000000. |
| 41 | + resolution: func() -> datetime; |
| 42 | +} |
0 commit comments