changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > demo / readme.org

changeset 37: c6d0a37a046a
parent: 77da08c7f445
child: 81b7333f27f8
author: ellis <ellis@rwest.io>
date: Sun, 24 Dec 2023 19:24:39 -0500
permissions: -rw-r--r--
description: mini-redis and vegadat
1 #+TITTLE: Demo
2 Welcome to our first demo system. What you will find here is a modular
3 client-server software stack which can be extended and customized by
4 the user at runtime.
5 
6 * How it works
7 The backend services are written in Rust and controlled by a simple
8 messaging protocol. Services provide common runtime capabilities known
9 as the /service protocol/ but are specialized on a unique /service
10 type/ which may in turn register their own /custom protocols/ (via
11 core).
12 
13 Services are capable of dispatching data directly to clients, or
14 storing data in the /database/ (sqlite, postgres, mysql).
15 
16 The frontend clients are pre-dominantly written in Common Lisp and
17 come in many shapes and sizes. There is a cli-client, web-client
18 (CLOG), docker-client (archlinux, stumpwm, McCLIM), and native-client
19 which also compiles to WASM (slint-rs).
20 
21 * Guide
22 ** Build
23 - *install dependencies*
24  #+begin_src bash
25  ./tools/deps.sh
26  #+end_src
27 - *make executables* \\
28  Simply run =make build=. Read the ~makefile~ and change the options
29  as needed.
30 - MODE :: Mode (debug, release)
31 - LISP :: Lisp (sbcl, cmucl, ccl)
32 - CFG :: Config (default.cfg)
33 ** Run
34 #+begin_src shell
35  ./demo -i
36 #+end_src
37 ** Config
38 Configs can be specified in JSON, TOML, RON, or of course SEXP. See
39 =default.cfg= for an example.
40 ** Play
41 The high-level user interface is presented as a multi-modal GUI
42 application which adapts to the specific application /instances/
43 below.
44 *** Weather
45 This backend retrieves weather data using the NWS API.
46 *** Stocks
47 The 'Stocks' backend features a stock ticker with real-time analysis
48 capabilities.
49 *** Bench
50 This is a benchmark backend for testing the capabilities of our
51 demo. It spins up some mock services and allows fine-grained control
52 of input/throughput.
53 * tasks
54 ** TODO DSLs
55 - consider tree-sitter parsing layout, use as a guide for developing a
56  single syntax which expands to Rust or C.
57 - with-rs
58 - with-c
59 - with-rs/c
60 - with-cargo
61 - compile-rs/c
62 *** TODO rs-macroexpand
63 - rs-gen-file
64 - rs-defmacro
65 - rs-macros
66 - rs-macroexpand
67 - rs-macroexpand-1
68 *** TODO c-macroexpand
69 - c-gen-file h/c
70 - c-defmacro
71 - c-macros
72 - c-macroexpand
73 - c-macroexpand-1
74 *** TODO slint-macroexpand
75 - slint-gen-file
76 - slint-defmacro
77 - slint-macros
78 - slint-macroexpand
79 - slint-macroexpand-1
80 *** TODO html (using who)
81 ** TODO web templates
82 create a basic static page in CL which will be used to host Slint UIs
83 and other WASM doo-dads in a browser.
84 ** TODO CLI
85 using clingon, decide on generic options and write it up
86 ** TODO docs
87 work on doc generation -- Rust and CL should be accounted for.
88 ** TODO tests
89 We have none! need to make it more comfy - set up testing in all Rust
90 crates and for the lisp systems.