moxie
repo | xplat | web | related | chat
a lightweight platform-agnostic interactive runtime, written in rust, aiming to empower anyone to build efficient and robust interactive software for humans.
project
the repo and chat are covered by an actively enforced code of conduct.
platform-agnostic crates
moxie
offers incremental caching & memoization in interactive event loops without bringing platform dependencies.
the cache also holds mutable state variables whose updates wake the runtime to update the presented interface, allowing an interface's code to run only when meaningful updates are observed.
state variables handle events & callbacks and as such are also a natural interface between loading arbitrary futures and user-defined presentation logic. moxie integrates with any async runtime that can spawn local tasks.
mox
a Mockery Of XML: nested builder pattern instantiation using XML-lite syntax.
topo
create trees of stable identifiers for repeated nested function invocations. allows later calls to "rendezvous" with the results of previous calls at the same location in the tree.
dyn-cache
caches for storing arbitrary values and memoizing arbitrary Rust functions.
illicit
thread-local implicit nested context singletons, indexed by type
web crates
moxie-dom
a strongly-typed, WebAssembly-compatible library for incrementally describing the web's DOM using moxie. supports server-side rendering using augdom's HTML DOM emulation.
(toy) examples
- Counter (bare function) (source)
- Counter (no-XML DOM builder API) (source)
- DOM hacking (source)
- TodoMVC (source)
- server-side rendering
augdom
provides an "augmented DOM" implementation that can run almost anywhere Rust can. compiles as either a thin wrapper around web-sys or a DOM emulation layer written in pure Rust which can be used for testing or to render HTML strings.
prettiest
pretty-printer for javascript values from wasm-bindgen
raf
runs an event loop in the browser using requestAnimationFrame
related projects
moxie-native
from the repo: "Warning: This is a work in progress and not yet usable for nontrivial applications."
a "webrender-based UI framework with a moxie frontend" which features a "relatively small footprint" and is "targeted towards real world desktop applications."