leptos_wasi

Crates.ioleptos_wasi
lib.rsleptos_wasi
version0.1.3
sourcesrc
created_at2024-11-28 19:38:58.223861
updated_at2024-12-03 01:45:41.539188
descriptionWASI integrations for the Leptos web framework.
homepage
repositoryhttps://github.com/leptos-rs/leptos_wasi
max_upload_size
id1464922
size48,597
Enzo Nocera (raskyld)

documentation

README

leptos_wasi

Run your Leptos Server-Side in WebAssembly using WASI standards.

Explainer

WebAssembly is already popular in the browser but organisations like the Bytecode Alliance are committed to providing the industry with new standard-driven ways of running software. Specifically, they are maintaining the Wasmtime runtime, which allows running WebAssembly out of the browser (e.g., on a serverless platform).

Leptos is already leveraging WebAssembly in the browser and gives you tools to build web applications with best-in-class performance.

This crate aims to go further and enable you to also leverage WebAssembly for your Leptos Server. Specifically, it will allow you to target the rust wasm32-wasip2 target for the server-side while integrating seamlessly with the Leptos Framework.

Running cargo leptos build will provide you with a WebAssembly Component importing the wasi:http/proxy world. This means you can serve your server on any runtime supporting this world, for example:

wasmtime serve target/server/wasm32-wasip2/debug/your_crate.wasm -Scommon

Disclaimer

This crate is EXPERIMENTAL and the author is not affiliated with the Bytecode Alliance nor funded by any organisation. Consider this crate should become a community-driven project and be battle-tested to be deemed production-ready.

Contributions are welcome!

Usage

TODO: Write a template starter for the crate.

Compatibility

This crate only works with the future Leptos v0.7.

Features

  • :octopus: Async Runtime: This crate comes with a single-threaded async executor making full use of WASIp2 pollable, so your server is not blocking on I/O and can benefit from Leptos' streaming SSR Modes.
  • :zap: Short-circuiting Mechanism: Your component is smart enough to avoid preparing or doing any rendering work if the request routes to static files or Server Functions.
  • :truck: Custom Static Assets Serving: You can write your own logic for serving static assets. For example, once wasi:blobstore matures up, you could host your static assets on your favorite Object Storage provider and make your server fetch them seamlessly.
Commit count: 30

cargo fmt