Skip to content

Commit

Permalink
docs: add comprehensive overview of tools and ecosystem for WebAssembly
Browse files Browse the repository at this point in the history
  • Loading branch information
Pradumnasaraf committed Dec 26, 2024
1 parent 56e3327 commit 050014e
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions docs/webassembly/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -291,4 +291,32 @@ Not only it stores references to functions, it can store references global varia

## Tools and Ecosystem

### Why we need Tools and Ecosystem?

For anything having right sets of tools can make the difference between a smooth process and a bumpy ride. For WASM, the tool and the surrounding ecosystem simplify the development, testing and deployment process. So that dev can focus on the core functionality of the application rather than worrying about the underlying complexities.

### CNCF - WASM Landscape

Cloud Native Computing Foundation (CNCF) has taken the lead and introduced the WebAssembly Landscape. It provides a bird's eye view of tools, libraries, and projects that are part of the WebAssembly worlds. Some core areas:

**Programming Languages**: The real beauty of WASM chimed in when it comes to programming languages. It's not tied to any specific language. You can write code in any language that compiles to WebAssembly. Some popular languages are C, C++, Rust, Go, etc. On the other hand we managed languages like Kotlin, Dart, etc, rely on WASM by compiling their interpreters into it. Also new languages like Moonbit, and Grain, optimized for WASM.

**Runtimes**: Onces are code complied into WASM bytecode, it needs a runtime to execute it. Some popular runtimes are WasmEdge, WasmTime, WebAssembly Micro Runtime (WAMR), etc. These runtimes provide the necessary environment to execute the WASM code. They all offer safety, speed and portability to the code.

**Application Frameworks**: Dev can lean on the libraries and frameworks. WasmEdge, for instance, supports advance POSIX APIs, allowing Rust and JS app framework to run seamlessly.

**Tailored Framework**: A framework for building WebAssembly microservices, and WasmCloud, which simplifies the development for distributed applications.

**Edge/Bare Metal**: As cross-platform compatibility is one of the key features of WASM, that means it can run across different operating systems and architectures, including in edge and IOT computing.

**AI inference**: As AI is becoming more prevalent, and AI becoming staple in data centers. Runtimes like WasmTime and WasmEdge are integrating with native AI/ML libraries like TensorFlow, PyTorch, etc, to facilitate AI inference in the language like Rust.

**Embedded Functions**: WASM can also be executed as embedded functions in various software products. For example, database like LibSql and OpenGauss have integrated WASM to run user-defined functions.

**Tooling** Tools like cargo, LLVM and Binaryen are essential for compiling code to WASM.

**Deployment**: We can easily take benefit of the cloud-native ecosystem. And deploy on Docker, Kubernetes, etc.

**Debugging and Observability**: Debugging and observability are essential for any application in production. Tools like WASI logging are making it easier to debug and monitor WASM applications.

**Artifacts** It's really important for software supply chain. Repositories like DockerHub and Harbor are stepping to store, and track WASM packages.

0 comments on commit 050014e

Please sign in to comment.