tsoding / wasi-stream

WASI Tsoding Stream Artifacts
MIT License
14 stars 2 forks source link

Если ещё как-нибудь будешь пробовать wasi, попробуй С. #1

Open fsb4000 opened 3 years ago

fsb4000 commented 3 years ago

После твоего стрима, я попробовал собрать hello world с С.

#include <stdio.h>

int main() {
  puts("Hello, World!");
}

Я использовал обычный clang который у меня был в системе(установился с Visual Studio). И https://github.com/WebAssembly/wasi-sdk/releases/tag/wasi-sdk-12 (просто распаковал в папку, хотя там есть и свой clang если с системным не будет собираться)

$ clang --sysroot="C:\tools\wasi-sdk\share\wasi-sysroot" -target wasm32-wasi main.c -O3 -o main.wasm

размер wasm программы всего 4433 байта:

4 433 main.wasm

и она также запускается с помощью wasmtime.

$ wasmtime main.wasm
Hello, World!

Удачи в деятельности!

fsb4000 commented 3 years ago

А если использовать свою функцию вместо puts, то вообще 2554 байта:

int print(FILE* file, const char* s) {
  if (s == NULL) {
    return 1;
  }
  while (*s != '\0') {
    putc(*s, file);
    ++s;
  }
  return 0;
}

Так что WASI может быть очень компактным...