Skip to content

Commit

Permalink
feat: add wit-0.3.0-draft
Browse files Browse the repository at this point in the history
Signed-off-by: Roman Volosatovs <[email protected]>
  • Loading branch information
rvolosatovs committed Jan 17, 2025
1 parent ad73dea commit 1311434
Show file tree
Hide file tree
Showing 23 changed files with 1,802 additions and 0 deletions.
10 changes: 10 additions & 0 deletions wit-0.3.0-draft/command.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package wasi:cli@0.3.0;

@since(version = 0.3.0)
world command {
@since(version = 0.3.0)
include imports;

@since(version = 0.3.0)
export run;
}
23 changes: 23 additions & 0 deletions wit-0.3.0-draft/deps.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[clocks]
sha256 = "26e315db0d371495f8834edfc0e479042f94152ce677d96d54d3623d0e4ffb1e"
sha512 = "e1c76f499435841316f9287b88d8173558e64f277c321ff390556de8707a0b18dd6c1749bbb17bbbba8d523da246ef6eb05c990ceddb762e03efb2ae30cacc76"

[filesystem]
url = "https://github.com/rvolosatovs/wasi-filesystem/archive/feat/0.3.0-draft.tar.gz"
subdir = "wit-0.3.0-draft"
sha256 = "8a7234cf22132a2f63dc628ccb41b3e0b78a79139678c6a8a3cea39a7479c82d"
sha512 = "43018eb0c2541dd29062744366d7d63f1e38c669752eb26972ffbd760c8bae28f2b220f972fc4a3c2ee4b64c1085819dddc14163ea7833ea153fa7fe19312661"
deps = ["clocks"]

[random]
url = "https://github.com/WebAssembly/wasi-random/archive/main.tar.gz"
subdir = "wit-0.3.0-draft"
sha256 = "7a483077cc23fc9dc7a3f067d62795663cceee7dbbd23f205934282b1164a83e"
sha512 = "b99280fd60699f781f20209659e94c0058ce6b9e973ddbd0b8865d752f88c74633485d486d5a86b709385b6e60357470d1c6fbcb3a2769af210c0b1f52417506"

[sockets]
url = "https://github.com/rvolosatovs/wasi-sockets/archive/feat/0.3.0-draft.tar.gz"
subdir = "wit-0.3.0-draft"
sha256 = "7f4355de7797f1621900138833efb9c8e271d86c4feec90368c730eff8843f9c"
sha512 = "ecc2f74bfb02d71f9b107a0d14112d1321a9a8fdfb19b2df78b7f07cd2cff89c9739b43d50548df5cec15e803887a3baa184d32d1a472e037353c512c4769441"
deps = ["clocks"]
3 changes: 3 additions & 0 deletions wit-0.3.0-draft/deps.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
filesystem = { url = "https://github.com/rvolosatovs/wasi-filesystem/archive/feat/0.3.0-draft.tar.gz", subdir = "wit-0.3.0-draft" }
random = { url = "https://github.com/WebAssembly/wasi-random/archive/main.tar.gz", subdir = "wit-0.3.0-draft" }
sockets = { url = "https://github.com/rvolosatovs/wasi-sockets/archive/feat/0.3.0-draft.tar.gz", subdir = "wit-0.3.0-draft" }
45 changes: 45 additions & 0 deletions wit-0.3.0-draft/deps/clocks/monotonic-clock.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package wasi:clocks@0.3.0;
/// WASI Monotonic Clock is a clock API intended to let users measure elapsed
/// time.
///
/// It is intended to be portable at least between Unix-family platforms and
/// Windows.
///
/// A monotonic clock is a clock which has an unspecified initial value, and
/// successive reads of the clock will produce non-decreasing values.
@since(version = 0.3.0)
interface monotonic-clock {
/// 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.
@since(version = 0.3.0)
type instant = u64;

/// A duration of time, in nanoseconds.
@since(version = 0.3.0)
type 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.
@since(version = 0.3.0)
now: func() -> instant;

/// Query the resolution of the clock. Returns the duration of time
/// corresponding to a clock tick.
@since(version = 0.3.0)
resolution: func() -> duration;

/// Wait until the specified instant has occurred.
@since(version = 0.3.0)
wait-until: func(
when: instant,
);

/// Wait for the specified duration has elapsed.
@since(version = 0.3.0)
wait-for: func(
how-long: duration,
);
}
55 changes: 55 additions & 0 deletions wit-0.3.0-draft/deps/clocks/timezone.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package wasi:clocks@0.3.0;

@unstable(feature = clocks-timezone)
interface timezone {
@unstable(feature = clocks-timezone)
use wall-clock.{datetime};

/// Return information needed to display the given `datetime`. This includes
/// the UTC offset, the time zone name, and a flag indicating whether
/// daylight saving time is active.
///
/// If the timezone cannot be determined for the given `datetime`, return a
/// `timezone-display` for `UTC` with a `utc-offset` of 0 and no daylight
/// saving time.
@unstable(feature = clocks-timezone)
display: func(when: datetime) -> timezone-display;

/// The same as `display`, but only return the UTC offset.
@unstable(feature = clocks-timezone)
utc-offset: func(when: datetime) -> s32;

/// Information useful for displaying the timezone of a specific `datetime`.
///
/// This information may vary within a single `timezone` to reflect daylight
/// saving time adjustments.
@unstable(feature = clocks-timezone)
record timezone-display {
/// The number of seconds difference between UTC time and the local
/// time of the timezone.
///
/// The returned value will always be less than 86400 which is the
/// number of seconds in a day (24*60*60).
///
/// In implementations that do not expose an actual time zone, this
/// should return 0.
utc-offset: s32,

/// The abbreviated name of the timezone to display to a user. The name
/// `UTC` indicates Coordinated Universal Time. Otherwise, this should
/// reference local standards for the name of the time zone.
///
/// In implementations that do not expose an actual time zone, this
/// should be the string `UTC`.
///
/// In time zones that do not have an applicable name, a formatted
/// representation of the UTC offset may be returned, such as `-04:00`.
name: string,

/// Whether daylight saving time is active.
///
/// In implementations that do not expose an actual time zone, this
/// should return false.
in-daylight-saving-time: bool,
}
}
46 changes: 46 additions & 0 deletions wit-0.3.0-draft/deps/clocks/wall-clock.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package wasi:clocks@0.3.0;
/// WASI Wall Clock is a clock API intended to let users query the current
/// time. The name "wall" makes an analogy to a "clock on the wall", which
/// is not necessarily monotonic as it may be reset.
///
/// It is intended to be portable at least between Unix-family platforms and
/// Windows.
///
/// A wall clock is a clock which measures the date and time according to
/// some external reference.
///
/// External references may be reset, so this clock is not necessarily
/// monotonic, making it unsuitable for measuring elapsed time.
///
/// It is intended for reporting the current date and time for humans.
@since(version = 0.3.0)
interface wall-clock {
/// A time and date in seconds plus nanoseconds.
@since(version = 0.3.0)
record 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
@since(version = 0.3.0)
now: func() -> datetime;

/// Query the resolution of the clock.
///
/// The nanoseconds field of the output is always less than 1000000000.
@since(version = 0.3.0)
resolution: func() -> datetime;
}
11 changes: 11 additions & 0 deletions wit-0.3.0-draft/deps/clocks/world.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package wasi:clocks@0.3.0;

@since(version = 0.3.0)
world imports {
@since(version = 0.3.0)
import monotonic-clock;
@since(version = 0.3.0)
import wall-clock;
@unstable(feature = clocks-timezone)
import timezone;
}
11 changes: 11 additions & 0 deletions wit-0.3.0-draft/deps/filesystem/preopens.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package wasi:filesystem@0.3.0;

@since(version = 0.3.0)
interface preopens {
@since(version = 0.3.0)
use types.{descriptor};

/// Return the set of preopened directories, and their paths.
@since(version = 0.3.0)
get-directories: func() -> list<tuple<descriptor, string>>;
}
Loading

0 comments on commit 1311434

Please sign in to comment.