Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .vale.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
MinAlertLevel = suggestion

StylesPath = .vale.styles
Packages = Google

[*.md]
BasedOnStyles = Vale
BasedOnStyles = Vale, Google

Vale.Spelling = warning
23 changes: 14 additions & 9 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
# Contributing to the Project
# Contributing to the project

Thank you for your interest in contributing to wasm-component-trampoline.
We welcome contributions from the community and appreciate your efforts to improve the codebase.
We welcome community contributions and appreciate your efforts to improve the codebase.

## Pre-requisite Knowledge
## Pre-requisite knowledge

Before you start contributing, please ensure you have the following:
1. A working knowledge of Rust and [WebAssembly](https://webassembly.org/) (or a willingness to learn).

1. A working knowledge of [Rust](https://www.rust-lang.org/) and [WebAssembly](https://webassembly.org/) or a willingness to learn.
1. Familiarity with [Wasmtime](https://docs.wasmtime.dev/) as it relates to the [WebAssembly component model](https://component-model.bytecodealliance.org/).

## How to Develop
## How to develop

We use [devenv](https://devenv.sh/) to manage our development environment.
Use [devenv](https://devenv.sh/) to manage the development environment.

1. **Clone the Repository**: You know how to do that.
1. **Install direnv**: Follow the instructions at [direnv Installation](https://direnv.net/docs/installation.html) to install direnv.
1. **Install Devenv**: Follow the instructions at [Devenv Installation](https://devenv.sh/docs/installation) to install devenv.
1. **Install direnv**: Follow the instructions at [direnv Installation](https://direnv.net/docs/installation.html) to install `direnv`.
1. **Install Devenv**: Follow the instructions at [devenv Installation](https://devenv.sh/docs/installation) to install `devenv`.
1. `direnv allow $PWD` and/or `devenv shell` to enter the development environment.
1. `devenv test` to run all the tests locally.
1. (OPTIONAL) `devenv shell wasm-trampoline-coverage` to generate code coverage. `cargo llvm-cov report --html --open --release` to view a coverage report in your browser.
Expand All @@ -24,7 +25,9 @@ We use [devenv](https://devenv.sh/) to manage our development environment.

[License](LICENSE)

## Contribution Agreement
## Certifying contributions

<!-- vale off -->

[Developer Certificate of Origin](https://developercertificate.org/)
Version 1.1
Expand Down Expand Up @@ -60,3 +63,5 @@ By making a contribution to this project, I certify that:
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

<!-- vale on -->
15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
WASM Component Trampoline
=========================
# WebAssembly Component Trampoline

[![Crates.io](https://img.shields.io/crates/v/wasm-component-trampoline.svg)](https://crates.io/crates/wasm-component-trampoline)
[![Documentation](https://docs.rs/wasm-component-trampoline/badge.svg)](https://docs.rs/wasm-component-trampoline)
![License](https://img.shields.io/crates/l/wasm-component-trampoline.svg)

Library for linking WASM components together using host "trampoline" functions, that can securely read/modify the host
context between component calls.
Library for linking WebAssembly components together using host "trampoline" functions.
Trampoline functions can read and modify the provided context between inter-component calls.
Guests will not directly call other components, but must go through the host trampoline functions.

Designed for versioned WIT (WASM Interface Type) components, but can be used with others. Versioned dependency
resolution between components is done in the same style as the Wasmtime component linker
Specifically designed for versioned [WIT](https://component-model.bytecodealliance.org/design/wit.html)
(WASM Interface Type) packages, but users can intercept any components calls.
Versioned dependency resolution occurs between components in the same style as the Wasmtime component linker
([docs](https://docs.wasmtime.dev/api/wasmtime/component/struct.Linker.html#names-and-semver)).

![WASM Component Trampoline Example Diagram](https://raw.githubusercontent.com/andyl-technologies/wasm-component-trampoline/refs/heads/master/docs/images/example_diagram.svg)
![Trampoline Example Diagram](https://raw.githubusercontent.com/andyl-technologies/wasm-component-trampoline/refs/heads/master/docs/images/example_diagram.svg)

## Installation

Expand Down
1 change: 1 addition & 0 deletions devenv.nix
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
'';

git-hooks.hooks.actionlint.enable = true;
git-hooks.hooks.check-merge-conflicts.enable = true;
git-hooks.hooks.nixfmt-rfc-style.enable = true;
git-hooks.hooks.vale.enable = true;

Expand Down
Loading