Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions abi-versions/vNEXT/HOST_FEATURES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Host features

| Identifier | Name | Values | Deprecated |
|:----------:|:-------------------------|:---------------------------------------------------------------------------------------------------|:----------:|
| 0x0001 | `HAS_CORE` | When `1`, all baseline functions considered essential are supported. | No |
Comment thread
mpwarres marked this conversation as resolved.
Outdated
| 0x0002 | `HAS_LOGGING` | When `1`, all baseline functions for logging are supported. | No |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are the SDKs expected to track which host features are supported and avoid invoking their hostcalls, or is it up to plugin authors to avoid calling such functions?

@PiotrSikora PiotrSikora Feb 17, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They could (to avoid crossing Wasm<>Host boundary), but for any unsupported hostcalls, they'll receive UNIMPLEMENTED status code anyway, so that's only an optimization.

The main goal is for plugins to verify support for the features they required during configuration phase, and fail to start if some are missing, instead of starting successfully and failing at runtime due to UNIMPLEMENTED errors while processing the real requests.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm going back and forth on this. Should we have a generic catch-all text about UNIMPLEMENTED status that applies to all optional hostcalls, or should we explicitly add it to each hostcall... or both?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added text about NOT_SUPPORTED.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The generic catch-all text makes sense to me.

| 0x0003 | `HAS_HTTP_HEADERS` | When `1`, only baseline functions related to HTTP headers are supported. | No |
| 0x0004 | `HAS_HTTP_WITH_BODY` | When `1`, all baseline functions for HTTP are supported. | No |
Comment thread
PiotrSikora marked this conversation as resolved.
Outdated
| 0x0005 | `HAS_HTTP_CALLS` | When `1`, all baseline functions for HTTP calls are supported. | No |
| 0x0006 | `HAS_GRPC_CALLS` | When `1`, all baseline functions for gRPC calls are supported. | No |
| 0x0007 | `HAS_GRPC_STREAMS` | When `1`, all baseline functions for gRPC streams are supported. | No |
Comment thread
mpwarres marked this conversation as resolved.
Outdated
| 0x0008 | `HAS_TCP_FILTER` | When `1`, only baseline functions related to new TCP connections are supported. | No |
| 0x0009 | `HAS_TCP_WITH_PAYLOAD` | When `1`, all baseline functions for TCP are supported. | No |
| 0x000A | `HAS_KEY_VALUE_STORES` | When `1`, all baseline functions for key-value stores are supported. | No |
| 0x000B | `HAS_SHARED_QUEUES` | When `1`, all baseline functions for shared queues are supported. | No |
| 0x000C | `HAS_TIMERS` | When `1`, all baseline functions for timers are supported. | No |
| 0x000D | `HAS_METRICS` | When `1`, all baseline functions for metrics are supported. | No |
| 0x000E | `HAS_PROPERTIES` | When `1`, all baseline functions for properties are supported. | No |
| 0x000F | `HAS_CUSTOM_FUNCTIONS` | When `1`, all baseline functions for custom functions are supported. | No |
| 0x0F01 | `HAS_WASI_PREVIEW1_CORE` | When `1`, all baseline functions considered essential from WASI Preview1 are supported. | No |
Comment thread
mpwarres marked this conversation as resolved.
Outdated


Identifiers below 0x2000 are reserved for standardized features and options. Random numbers above that range should be used for private extensions.
Comment thread
mpwarres marked this conversation as resolved.
Outdated
Loading