diff --git a/imports.md b/imports.md index e99ef31..dce2c7a 100644 --- a/imports.md +++ b/imports.md @@ -4,20 +4,173 @@ It is intended to be included in other worlds.

+

Import interface wasi:io/poll@0.2.0

+

A poll API intended to let users wait for I/O events on multiple handles +at once.

+
+

Types

+

resource pollable

+

pollable represents a single I/O event which may be ready, or not.

+

Functions

+

[method]pollable.ready: func

+

Return the readiness of a pollable. This function never blocks.

+

Returns true when the pollable is ready, and false otherwise.

+
Params
+ +
Return values
+ +

[method]pollable.block: func

+

block returns immediately if the pollable is ready, and otherwise +blocks until ready.

+

This function is equivalent to calling poll.poll on a list +containing only this pollable.

+
Params
+ +

poll: func

+

Poll for completion on a set of pollables.

+

This function takes a list of pollables, which identify I/O sources of +interest, and waits until one or more of the events is ready for I/O.

+

The result list<u32> contains one or more indices of handles in the +argument list that is ready for I/O.

+

This function traps if either:

+ +

A timeout can be implemented by adding a pollable from the +wasi-clocks API to the list.

+

This function does not return a result; polling in itself does not +do any I/O so it doesn't fail. If any of the I/O sources identified by +the pollables has an error, it is indicated by marking the source as +being ready for I/O.

+
Params
+ +
Return values
+ +

Import interface wasi:clocks/monotonic-clock@0.2.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.

+
+

Types

+

type pollable

+

pollable

+

+#### `type instant` +`u64` +

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. +

type duration

+

u64

+

A duration of time, in nanoseconds. +


+

Functions

+

now: func

+

Read the current value of the clock.

+

The clock is monotonic, therefore calling this function repeatedly will +produce a sequence of non-decreasing values.

+
Return values
+ +

resolution: func

+

Query the resolution of the clock. Returns the duration of time +corresponding to a clock tick.

+
Return values
+ +

subscribe-instant: func

+

Create a pollable which will resolve once the specified instant +has occurred.

+
Params
+ +
Return values
+ +

subscribe-duration: func

+

Create a pollable that will resolve after the specified duration has +elapsed from the time this function is invoked.

+
Params
+ +
Return values
+ +

Import interface wasi:clocks/wall-clock@0.2.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.

+
+

Types

+

record datetime

+

A time and date in seconds plus nanoseconds.

+
Record Fields
+ +
+

Functions

+

now: func

+

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.

+
Return values
+ +

resolution: func

+

Query the resolution of the clock.

+

The nanoseconds field of the output is always less than 1000000000.

+
Return values
+

Import interface wasi:random/random@0.2.0

WASI Random is a random data API.

It is intended to be portable at least between Unix-family platforms and @@ -84,59 +237,6 @@ hazard.

-

Import interface wasi:io/poll@0.2.0

-

A poll API intended to let users wait for I/O events on multiple handles -at once.

-
-

Types

-

resource pollable

-

pollable represents a single I/O event which may be ready, or not.

-

Functions

-

[method]pollable.ready: func

-

Return the readiness of a pollable. This function never blocks.

-

Returns true when the pollable is ready, and false otherwise.

-
Params
- -
Return values
- -

[method]pollable.block: func

-

block returns immediately if the pollable is ready, and otherwise -blocks until ready.

-

This function is equivalent to calling poll.poll on a list -containing only this pollable.

-
Params
- -

poll: func

-

Poll for completion on a set of pollables.

-

This function takes a list of pollables, which identify I/O sources of -interest, and waits until one or more of the events is ready for I/O.

-

The result list<u32> contains one or more indices of handles in the -argument list that is ready for I/O.

-

This function traps if either:

- -

A timeout can be implemented by adding a pollable from the -wasi-clocks API to the list.

-

This function does not return a result; polling in itself does not -do any I/O so it doesn't fail. If any of the I/O sources identified by -the pollables has an error, it is indicated by marking the source as -being ready for I/O.

-
Params
- -
Return values
-

Import interface wasi:io/streams@0.2.0

WASI I/O is an I/O abstraction API which is currently focused on providing stream types.

@@ -504,65 +604,6 @@ is ready for reading, before performing the splice.

-

Import interface wasi:clocks/monotonic-clock@0.2.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.

-
-

Types

-

type pollable

-

pollable

-

-#### `type instant` -`u64` -

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. -

type duration

-

u64

-

A duration of time, in nanoseconds. -


-

Functions

-

now: func

-

Read the current value of the clock.

-

The clock is monotonic, therefore calling this function repeatedly will -produce a sequence of non-decreasing values.

-
Return values
- -

resolution: func

-

Query the resolution of the clock. Returns the duration of time -corresponding to a clock tick.

-
Return values
- -

subscribe-instant: func

-

Create a pollable which will resolve once the specified instant -has occurred.

-
Params
- -
Return values
- -

subscribe-duration: func

-

Create a pollable that will resolve after the specified duration has -elapsed from the time this function is invoked.

-
Params
- -
Return values
-

Import interface wasi:http/types@0.2.0

This interface defines all of the types and methods for implementing HTTP Requests and Responses, both incoming and outgoing, as well as @@ -1490,44 +1531,3 @@ through the future-incoming-response

  • result<own<future-incoming-response>, error-code>
  • -

    Import interface wasi:clocks/wall-clock@0.2.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.

    -
    -

    Types

    -

    record datetime

    -

    A time and date in seconds plus nanoseconds.

    -
    Record Fields
    - -
    -

    Functions

    -

    now: func

    -

    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.

    -
    Return values
    - -

    resolution: func

    -

    Query the resolution of the clock.

    -

    The nanoseconds field of the output is always less than 1000000000.

    -
    Return values
    - diff --git a/proxy.md b/proxy.md index ac879d4..528ba1c 100644 --- a/proxy.md +++ b/proxy.md @@ -11,12 +11,12 @@ outgoing HTTP requests.

  • interface wasi:io/error@0.2.0
  • interface wasi:io/streams@0.2.0
  • interface wasi:http/types@0.2.0
  • +
  • interface wasi:clocks/wall-clock@0.2.0
  • interface wasi:random/random@0.2.0
  • interface wasi:cli/stdout@0.2.0
  • interface wasi:cli/stderr@0.2.0
  • interface wasi:cli/stdin@0.2.0
  • interface wasi:http/outgoing-handler@0.2.0
  • -
  • interface wasi:clocks/wall-clock@0.2.0
  • Exports: @@ -1388,6 +1388,47 @@ but those will be reported by the incoming-body
  • option<result<result<own<incoming-response>, error-code>>>
  • +

    Import interface wasi:clocks/wall-clock@0.2.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.

    +
    +

    Types

    +

    record datetime

    +

    A time and date in seconds plus nanoseconds.

    +
    Record Fields
    + +
    +

    Functions

    +

    now: func

    +

    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.

    +
    Return values
    + +

    resolution: func

    +

    Query the resolution of the clock.

    +

    The nanoseconds field of the output is always less than 1000000000.

    +
    Return values
    +

    Import interface wasi:random/random@0.2.0

    WASI Random is a random data API.

    It is intended to be portable at least between Unix-family platforms and @@ -1497,47 +1538,6 @@ through the future-incoming-response

  • result<own<future-incoming-response>, error-code>
  • -

    Import interface wasi:clocks/wall-clock@0.2.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.

    -
    -

    Types

    -

    record datetime

    -

    A time and date in seconds plus nanoseconds.

    -
    Record Fields
    -
      -
    • seconds: u64
    • -
    • nanoseconds: u32
    • -
    -
    -

    Functions

    -

    now: func

    -

    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.

    -
    Return values
    - -

    resolution: func

    -

    Query the resolution of the clock.

    -

    The nanoseconds field of the output is always less than 1000000000.

    -
    Return values
    -

    Export interface wasi:http/incoming-handler@0.2.0


    Types

    diff --git a/wit/proxy.wit b/wit/proxy.wit index e8966b0..8480248 100644 --- a/wit/proxy.wit +++ b/wit/proxy.wit @@ -6,7 +6,9 @@ package wasi:http@0.2.0; world imports { /// HTTP proxies have access to time and randomness. @since(version = 0.2.0) - include wasi:clocks/imports@0.2.0; + import wasi:clocks/monotonic-clock@0.2.0; + @since(version = 0.2.0) + import wasi:clocks/wall-clock@0.2.0; @since(version = 0.2.0) import wasi:random/random@0.2.0;