Welcome to our first demo system. What you will find here is a modular client-server software stack which can be extended and customized by the user at runtime.
The backend services are written in Rust and controlled by a simple messaging protocol. Services provide common runtime capabilities known as the service protocol but are specialized on a unique service type which may in turn register their own custom protocols (via core).
Services are capable of dispatching data directly to clients, or storing data in the database (sqlite, postgres, mysql).
The frontend clients are pre-dominantly written in Common Lisp and come in many shapes and sizes. There is a cli-client, web-client (CLOG), docker-client (archlinux, stumpwm, McCLIM), and native-client which also compiles to WASM (slint-rs).
- install dependencies
./tools/deps.sh
- make executables
Simply runmake build
. Read themakefile
and change the options as needed.
- MODE
- Mode (debug, release)
- LISP
- Lisp (sbcl, cmucl, ccl)
- CFG
- Config (default.cfg)
./demo -i
Configs can be specified in JSON, TOML, RON, or of course SEXP. See
default.cfg
for an example.
The high-level user interface is presented as a multi-modal GUI application which adapts to the specific application instances below.
This backend retrieves weather data using the NWS API.
The ‘Stocks’ backend features a stock ticker with real-time analysis capabilities.
This is a benchmark backend for testing the capabilities of our demo. It spins up some mock services and allows fine-grained control of input/throughput.
- consider tree-sitter parsing layout, use as a guide for developing a single syntax which expands to Rust or C.
- with-rs
- with-c
- with-rs/c
- with-cargo
- compile-rs/c
- rs-gen-file
- rs-defmacro
- rs-macros
- rs-macroexpand
- rs-macroexpand-1
- c-gen-file h/c
- c-defmacro
- c-macros
- c-macroexpand
- c-macroexpand-1
- slint-gen-file
- slint-defmacro
- slint-macros
- slint-macroexpand
- slint-macroexpand-1
create a basic static page in CL which will be used to host Slint UIs and other WASM doo-dads in a browser.
using clingon, decide on generic options and write it up
work on doc generation – Rust and CL should be accounted for.
We have none! need to make it more comfy - set up testing in all Rust crates and for the lisp systems.