I have the following C file, which I have compiled into a `.wasm` module, and then translated to C using `wasm2c`:

```c
#include <stdio.h>
#include <unistd.h>
#include <emscripten.h>

int EMSCRIPTEN_KEEPALIVE unsafe_printf() {
  printf("Hello World\n");
  return 0;
}

int EMSCRIPTEN_KEEPALIVE unsafe_unlink() {
  unlink("/tmp/thisshouldnotexistatall");
  return 0;
}
```

When linking, I get the following errors:

```
ld: error: undefined symbol: w2c_env_0x5F_syscall_unlinkat
>>> referenced by unsafe.wasm.c
>>>               unsafe.wasm.o:(w2c_unsafe_unsafe_unlink)

ld: error: undefined symbol: w2c_wasi__snapshot__preview1_fd_write
>>> referenced by unsafe.wasm.c
>>>               unsafe.wasm.o:(w2c_unsafe_f7)
>>> referenced by unsafe.wasm.c
>>>               unsafe.wasm.o:(w2c_unsafe_f7)
clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
gmake: *** [Makefile:24: programme] Error 1
```

It's my understanding that the `w2c_wasi__snapshot__preview1_fd_write` error is because I need to provide an implementation of the WASI API. What does the `__snapshot__preview1` aspect mean in the function call name?

And what about `w2c_env_0x5F_syscall_unlinkat`? Why is this not translated into the `path_unlink_file` WASI call?

Furthermore, the signature for the instantiate function is as follows:

```c
void wasm2c_unsafe_instantiate(w2c_unsafe*, struct w2c_env*, struct w2c_wasi__snapshot__preview1*);
````

What is `struct w2c_env` and `struct w2c_wasi__snapshot__preview1`? How are these initialised? Are they documented anywhere?
`w2c_env` and `w2c_wasi`: what are they?
This is a GitHub Issue
repo:wabt
owner:WebAssembly
Title : `w2c_env` and `w2c_wasi`: what are they?
Issue date:

--- start body ---
I have the following C file, which I have compiled into a `.wasm` module, and then translated to C using `wasm2c`:

```c
#include <stdio.h>
#include <unistd.h>
#include <emscripten.h>

int EMSCRIPTEN_KEEPALIVE unsafe_printf() {
  printf("Hello World\n");
  return 0;
}

int EMSCRIPTEN_KEEPALIVE unsafe_unlink() {
  unlink("/tmp/thisshouldnotexistatall");
  return 0;
}
```

When linking, I get the following errors:

```
ld: error: undefined symbol: w2c_env_0x5F_syscall_unlinkat
>>> referenced by unsafe.wasm.c
>>>               unsafe.wasm.o:(w2c_unsafe_unsafe_unlink)

ld: error: undefined symbol: w2c_wasi__snapshot__preview1_fd_write
>>> referenced by unsafe.wasm.c
>>>               unsafe.wasm.o:(w2c_unsafe_f7)
>>> referenced by unsafe.wasm.c
>>>               unsafe.wasm.o:(w2c_unsafe_f7)
clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
gmake: *** [Makefile:24: programme] Error 1
```

It's my understanding that the `w2c_wasi__snapshot__preview1_fd_write` error is because I need to provide an implementation of the WASI API. What does the `__snapshot__preview1` aspect mean in the function call name?

And what about `w2c_env_0x5F_syscall_unlinkat`? Why is this not translated into the `path_unlink_file` WASI call?

Furthermore, the signature for the instantiate function is as follows:

```c
void wasm2c_unsafe_instantiate(w2c_unsafe*, struct w2c_env*, struct w2c_wasi__snapshot__preview1*);
````

What is `struct w2c_env` and `struct w2c_wasi__snapshot__preview1`? How are these initialised? Are they documented anywhere?
--- end body ---
