All Projects → WebAssembly → Wasi Sdk

WebAssembly / Wasi Sdk

Licence: apache-2.0
WASI-enabled WebAssembly C/C++ toolchain

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Wasi Sdk

AliveInLean
Formally verified implementation of Alive in Lean
Stars: ✭ 30 (-91.23%)
Mutual labels:  llvm
Clang Power Tools
Bringing clang-tidy magic to Visual Studio C++ developers.
Stars: ✭ 285 (-16.67%)
Mutual labels:  llvm
Smack
SMACK Software Verifier and Verification Toolchain
Stars: ✭ 305 (-10.82%)
Mutual labels:  llvm
KRFAnalysis
Collection of LLVM passes and triage tools for use with the KRF fuzzer
Stars: ✭ 26 (-92.4%)
Mutual labels:  llvm
Deepc
vendor independent deep learning library, compiler and inference framework microcomputers and micro-controllers
Stars: ✭ 260 (-23.98%)
Mutual labels:  llvm
Speedy.js
Accelerate JavaScript Applications by Compiling to WebAssembly
Stars: ✭ 300 (-12.28%)
Mutual labels:  llvm
clang-format-editor
Clang-Format Editor is a tool that helps you find the best Clang-Format Style for your C++, C#, Java, JavaScript, and Objective-C code.
Stars: ✭ 15 (-95.61%)
Mutual labels:  llvm
Staticscript
🎉🎉🎉 A new statically typed programming language, syntactically like TypeScript.
Stars: ✭ 337 (-1.46%)
Mutual labels:  llvm
Seahorn
SeaHorn Verification Framework
Stars: ✭ 270 (-21.05%)
Mutual labels:  llvm
Swiftweekly.github.io
A community-driven weekly newsletter about Swift.org
Stars: ✭ 305 (-10.82%)
Mutual labels:  llvm
Ruscall
自作言語処理系のコンパイラ制作
Stars: ✭ 41 (-88.01%)
Mutual labels:  llvm
Olifant
A simple programming language targeting LLVM
Stars: ✭ 58 (-83.04%)
Mutual labels:  llvm
Awesome Graal
A curated list of awesome resources for Graal, GraalVM, Truffle and related topics
Stars: ✭ 302 (-11.7%)
Mutual labels:  llvm
bl
Simple imperative programming language created for fun.
Stars: ✭ 57 (-83.33%)
Mutual labels:  llvm
Soll
SOLL is a new compiler for generate Ewasm from solidity and yul. See a demo here: https://asciinema.org/a/ezJqNLicn5fya02zwu4VXIo8a
Stars: ✭ 329 (-3.8%)
Mutual labels:  llvm
libebpf
Experiemental userspace eBPF library
Stars: ✭ 14 (-95.91%)
Mutual labels:  llvm
Go Ast Book
📚 《Go语法树入门——开启自制编程语言和编译器之旅》(开源免费图书/Go语言进阶/掌握抽象语法树/Go语言AST/凹语言)
Stars: ✭ 4,034 (+1079.53%)
Mutual labels:  llvm
Bfc
An industrial-grade brainfuck compiler
Stars: ✭ 340 (-0.58%)
Mutual labels:  llvm
Clangkit
ClangKit provides an Objective-C frontend to LibClang. Source tokenization, diagnostics and fix-its are actually implemented.
Stars: ✭ 330 (-3.51%)
Mutual labels:  llvm
Mapping High Level Constructs To Llvm Ir
A guide that explains how high level programming language constructs are mapped to the LLVM intermediate language.
Stars: ✭ 305 (-10.82%)
Mutual labels:  llvm

WASI SDK

Quick Start

Download SDK packages here.

About this repository

This repository contains no compiler or library code itself; it uses git submodules to pull in the upstream Clang and LLVM tree, as well as the wasi-libc tree.

The libc portion of this SDK is the wasi-libc.

Upstream Clang and LLVM (from 9.0 onwards) can compile for WASI out of the box, and WebAssembly support is included in them by default. So, all that's done here is to provide builds configured to set the default target and sysroot for convenience.

One could also use a standard Clang installation, build a sysroot from the sources mentioned above, and compile with "--target=wasm32-wasi --sysroot=/path/to/sysroot".

Install

A typical installation from the release binaries might look like the following:

wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-[VERSION]/wasi-sdk-[VERSION]-linux.tar.gz
tar xvf wasi-sdk-[VERSION]-linux.tar.gz

Use

Use the clang installed in the wasi-sdk directory:

CC="[WASI_SDK_PATH]/bin/clang --sysroot=[WASI_SDK_PATH]/share/wasi-sysroot"
$CC foo.c -o foo.wasm

Note: [WASI_SDK_PATH]/share/wasi-sysroot contains the WASI-specific includes/libraries/etc. The --sysroot=... option is not necessary if WASI_SDK_PATH is /opt/wasi-sdk.

Notes for Autoconf

Upstream autoconf now recognizes WASI.

For convenience when building packages that aren't yet updated, updated config.sub and config.guess files are installed at share/misc/config.* in the install directory.

Notable Limitations

This repository does not yet support C++ exceptions. C++ code is supported only with -fno-exceptions for now. Similarly, there is not yet support for setjmp/longjmp. Work on support for exception handling s underway at the language level which will support both of these features.

This repository does not yet support threads. Specifically, WASI does not yet have an API for creating and managing threads yet, and WASI libc does not yet have pthread support.

This repository does not yet support dynamic libraries. While there are some efforts to design a system for dynamic libraries in wasm, it is still in development and not yet generally usable.

There is no support for networking. It is a goal of WASI to support networking in the future though.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].