---
title: "Non-Invasive extensions added to WASI"
url: "https://wasix.org/docs/explanation/extensions-to-wasi/"
markdown: "https://wasix.org/docs/explanation/extensions-to-wasi.md"
---

# Non-Invasive extensions added to WASI

## WASIX extended Functions

- The ability to duplicate file handles
  - [`fd_dup`](https://wasix.org/docs/api-reference/wasix/fd_dup.md)

- polling functions that can be interrupted by libraries such as `tokio` and `mio`
  - [`fd_event`](https://wasix.org/docs/api-reference/wasix/fd_event.md)

- Pipes to stream data to and from subprocesses
  - [`fd_pipe`](https://wasix.org/docs/api-reference/wasix/fd_pipe.md)

- Ability to yield CPU time without the bloat of `poll_oneoff`
  - `sched_yield`

- Getting and setting the TTY properties

  - [`tty_get`](https://wasix.org/docs/api-reference/wasix/tty_get.md)
  - [`tty_set`](https://wasix.org/docs/api-reference/wasix/tty_set.md)

- Changing the current directory is now natively supported

  - [`getcwd`](https://wasix.org/docs/api-reference/wasix/getcwd.md)
  - [`chdir`](https://wasix.org/docs/api-reference/wasix/chdir.md)

- Signals can be blocked (needed by `libc`)
  - [`callback_signal`](https://wasix.org/docs/api-reference/wasix/callback_signal.md)

- Spawning threads as per the experimental threads spec
  - [`thread_spawn`](https://wasix.org/docs/api-reference/wasix/thread_spawn.md)

- Extra thread functions

  - [`thread_sleep`](https://wasix.org/docs/api-reference/wasix/thread_sleep.md)
  - [`thread_id`](https://wasix.org/docs/api-reference/wasix/thread_id.md)
  - [`thread_join`](https://wasix.org/docs/api-reference/wasix/thread_join.md)
  - [`thread_parallelism`](https://wasix.org/docs/api-reference/wasix/thread_parallelism.md)
  - [`thread_signal`](https://wasix.org/docs/api-reference/wasix/thread_signal.md)
  - [`thread_exit`](https://wasix.org/docs/api-reference/wasix/thread_exit.md)

- Operating system futex support used for multithread constructs

  - [`futex_wait`](https://wasix.org/docs/api-reference/wasix/futex_wait.md)
  - [`futex_wake`](https://wasix.org/docs/api-reference/wasix/futex_wake.md)
  - [`futex_wake_all`](https://wasix.org/docs/api-reference/wasix/futex_wake_all.md)

- Longjmp and setjmp used by `libc`

  - [`stack_checkpoint`](https://wasix.org/docs/api-reference/wasix/stack_checkpoint.md)
  - [`stack_restore`](https://wasix.org/docs/api-reference/wasix/stack_restore.md)

- Subprocess support

  - [`proc_raise_interval`](https://wasix.org/docs/api-reference/wasix/proc_raise_interval.md)
  - [`proc_fork`](https://wasix.org/docs/api-reference/wasix/proc_fork.md)
  - [`proc_exec`](https://wasix.org/docs/api-reference/wasix/proc_exec.md)
  - [`proc_spawn`](https://wasix.org/docs/api-reference/wasix/proc_spawn.md)
  - [`proc_id`](https://wasix.org/docs/api-reference/wasix/proc_id.md)
  - [`proc_parent`](https://wasix.org/docs/api-reference/wasix/proc_parent.md)
  - [`proc_join`](https://wasix.org/docs/api-reference/wasix/proc_join.md)
  - [`proc_signal`](https://wasix.org/docs/api-reference/wasix/proc_signal.md)

- Interface support

  - [`port_bridge`](https://wasix.org/docs/api-reference/wasix/port_bridge.md)
  - [`port_unbridge`](https://wasix.org/docs/api-reference/wasix/port_unbridge.md)
  - [`port_dhcp_acquire`](https://wasix.org/docs/api-reference/wasix/port_dhcp_acquire.md)
  - [`port_addr_add`](https://wasix.org/docs/api-reference/wasix/port_addr_add.md)
  - [`port_addr_remove`](https://wasix.org/docs/api-reference/wasix/port_addr_remove.md)
  - [`port_addr_clear`](https://wasix.org/docs/api-reference/wasix/port_addr_clear.md)
  - [`port_mac`](https://wasix.org/docs/api-reference/wasix/port_mac.md)
  - [`port_addr_list`](https://wasix.org/docs/api-reference/wasix/port_addr_list.md)
  - [`port_gateway_set`](https://wasix.org/docs/api-reference/wasix/port_gateway_set.md)
  - [`port_route_add`](https://wasix.org/docs/api-reference/wasix/port_route_add.md)
  - [`port_route_remove`](https://wasix.org/docs/api-reference/wasix/port_route_remove.md)
  - [`port_route_clear`](https://wasix.org/docs/api-reference/wasix/port_route_clear.md)
  - [`port_route_list`](https://wasix.org/docs/api-reference/wasix/port_route_list.md)

- All the missing socket functionality

  - [`sock_status`](https://wasix.org/docs/api-reference/wasix/sock_status.md)
  - [`sock_addr_local`](https://wasix.org/docs/api-reference/wasix/sock_addr_local.md)
  - [`sock_addr_peer`](https://wasix.org/docs/api-reference/wasix/sock_addr_peer.md)
  - [`sock_open`](https://wasix.org/docs/api-reference/wasix/sock_open.md)
  - [`sock_set_opt_flag`](https://wasix.org/docs/api-reference/wasix/sock_set_opt_flag.md)
  - [`sock_get_opt_flag`](https://wasix.org/docs/api-reference/wasix/sock_get_opt_flag.md)
  - [`sock_set_opt_time`](https://wasix.org/docs/api-reference/wasix/sock_set_opt_time.md)
  - [`sock_get_opt_time`](https://wasix.org/docs/api-reference/wasix/sock_get_opt_time.md)
  - [`sock_set_opt_size`](https://wasix.org/docs/api-reference/wasix/sock_set_opt_size.md)
  - [`sock_get_opt_size`](https://wasix.org/docs/api-reference/wasix/sock_get_opt_size.md)
  - [`sock_join_multicast_v4`](https://wasix.org/docs/api-reference/wasix/sock_join_multicast_v4.md)
  - [`sock_leave_multicast_v4`](https://wasix.org/docs/api-reference/wasix/sock_leave_multicast_v4.md)
  - [`sock_join_multicast_v6`](https://wasix.org/docs/api-reference/wasix/sock_join_multicast_v6.md)
  - [`sock_leave_multicast_v6`](https://wasix.org/docs/api-reference/wasix/sock_leave_multicast_v6.md)
  - [`sock_bind`](https://wasix.org/docs/api-reference/wasix/sock_bind.md)
  - [`sock_listen`](https://wasix.org/docs/api-reference/wasix/sock_listen.md)
  - [`sock_accept_v2`](https://wasix.org/docs/api-reference/wasix/sock_accept_v2.md)
  - [`sock_connect`](https://wasix.org/docs/api-reference/wasix/sock_connect.md)
  - [`sock_recv_from`](https://wasix.org/docs/api-reference/wasix/sock_recv_from.md)
  - [`sock_send_to`](https://wasix.org/docs/api-reference/wasix/sock_send_to.md)
  - [`sock_send_file`](https://wasix.org/docs/api-reference/wasix/sock_send_file.md)

- Ability to perform DNS queries
  - [`resolve`](https://wasix.org/docs/api-reference/wasix/resolve.md)

## WASIX extended extra Functions

- [`clock_time_set`](https://wasix.org/docs/api-reference/wasix/clock_time_set.md)

---

[Documentation index](https://wasix.org/llms.txt) · [HTML version](https://wasix.org/docs/explanation/extensions-to-wasi/)
