22
|
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 |
27
|
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). |
22
|
12
|
|
|
13
|
Services are capable of dispatching data directly to clients, or |
27
|
14
|
storing data in the /database/ (sqlite, postgres, mysql). |
22
|
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
|
|
14
|
21
|
* Guide |
|
22
|
** Build |
|
23
|
- *install dependencies* |
27
|
24
|
#+begin_src bash |
|
25
|
./tools/deps.sh |
|
26
|
#+end_src |
14
|
27
|
- *make executables* \\ |
|
28
|
Simply run =make build=. Read the ~makefile~ and change the options |
|
29
|
as needed. |
31
|
30
|
- MODE :: Mode (debug, release) |
|
31
|
- LISP :: Lisp (sbcl, cmucl, ccl) |
|
32
|
- CFG :: Config (default.cfg) |
14
|
33
|
** Run |
18
|
34
|
#+begin_src shell |
22
|
35
|
./demo -i |
18
|
36
|
#+end_src |
14
|
37
|
** Config |
22
|
38
|
Configs can be specified in JSON, TOML, RON, or of course SEXP. See |
|
39
|
=default.cfg= for an example. |
14
|
40
|
** Play |
19
|
41
|
The high-level user interface is presented as a multi-modal GUI |
|
42
|
application which adapts to the specific application /instances/ |
|
43
|
below. |
14
|
44
|
*** Weather |
18
|
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. |
8
|
53
|
* tasks |
9
|
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 |
8
|
67
|
- rs-macroexpand-1 |
9
|
68
|
*** TODO c-macroexpand |
|
69
|
- c-gen-file h/c |
|
70
|
- c-defmacro |
|
71
|
- c-macros |
|
72
|
- c-macroexpand |
|
73
|
- c-macroexpand-1 |
18
|
74
|
*** TODO slint-macroexpand |
|
75
|
- slint-gen-file |
|
76
|
- slint-defmacro |
|
77
|
- slint-macros |
|
78
|
- slint-macroexpand |
|
79
|
- slint-macroexpand-1 |
19
|
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. |