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 |
|
9
|
as the /core protocol/ but are specialized on a unique /service type/ |
|
10
|
which may in turn register their own /custom protocols/ (via core). |
|
11
|
|
|
12
|
Services are capable of dispatching data directly to clients, or |
|
13
|
storing data in the /database/ (TBD). |
|
14
|
|
|
15
|
The frontend clients are pre-dominantly written in Common Lisp and |
|
16
|
come in many shapes and sizes. There is a cli-client, web-client |
|
17
|
(CLOG), docker-client (archlinux, stumpwm, McCLIM), and native-client |
|
18
|
which also compiles to WASM (slint-rs). |
|
19
|
|
14
|
20
|
* Guide |
|
21
|
** Build |
|
22
|
- *install dependencies* |
|
23
|
- Rust =curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh= |
|
24
|
- Common Lisp |
|
25
|
- on Linux :: |
|
26
|
- Ubuntu/Debian :: =sudo apt-get install sbcl= |
|
27
|
- Arch BTW :: =sudo pacman -S sbcl= |
|
28
|
- on MacOS :: =brew install sbcl= |
|
29
|
- on Windows :: download from |
|
30
|
<https://www.sbcl.org/platform-table.html> and figure it out. |
|
31
|
- *make executables* \\ |
|
32
|
Simply run =make build=. Read the ~makefile~ and change the options |
|
33
|
as needed. |
|
34
|
- M :: Mode (debug, release) |
|
35
|
- L :: Lisp (sbcl, cmucl, ccl) |
22
|
36
|
- C :: Config (default.cfg) |
14
|
37
|
** Run |
18
|
38
|
#+begin_src shell |
22
|
39
|
./demo -i |
18
|
40
|
#+end_src |
14
|
41
|
** Config |
22
|
42
|
Configs can be specified in JSON, TOML, RON, or of course SEXP. See |
|
43
|
=default.cfg= for an example. |
14
|
44
|
** Play |
19
|
45
|
The high-level user interface is presented as a multi-modal GUI |
|
46
|
application which adapts to the specific application /instances/ |
|
47
|
below. |
14
|
48
|
*** Weather |
18
|
49
|
This backend retrieves weather data using the NWS API. |
|
50
|
*** Stocks |
|
51
|
The 'Stocks' backend features a stock ticker with real-time analysis |
|
52
|
capabilities. |
|
53
|
*** Bench |
|
54
|
This is a benchmark backend for testing the capabilities of our |
|
55
|
demo. It spins up some mock services and allows fine-grained control |
|
56
|
of input/throughput. |
8
|
57
|
* tasks |
9
|
58
|
** TODO DSLs |
|
59
|
- consider tree-sitter parsing layout, use as a guide for developing a |
|
60
|
single syntax which expands to Rust or C. |
|
61
|
- with-rs |
|
62
|
- with-c |
|
63
|
- with-rs/c |
|
64
|
- with-cargo |
|
65
|
- compile-rs/c |
|
66
|
*** TODO rs-macroexpand |
|
67
|
- rs-gen-file |
|
68
|
- rs-defmacro |
|
69
|
- rs-macros |
|
70
|
- rs-macroexpand |
8
|
71
|
- rs-macroexpand-1 |
9
|
72
|
*** TODO c-macroexpand |
|
73
|
- c-gen-file h/c |
|
74
|
- c-defmacro |
|
75
|
- c-macros |
|
76
|
- c-macroexpand |
|
77
|
- c-macroexpand-1 |
18
|
78
|
*** TODO slint-macroexpand |
|
79
|
- slint-gen-file |
|
80
|
- slint-defmacro |
|
81
|
- slint-macros |
|
82
|
- slint-macroexpand |
|
83
|
- slint-macroexpand-1 |
19
|
84
|
*** TODO html (using who) |
|
85
|
** TODO web templates |
|
86
|
create a basic static page in CL which will be used to host Slint UIs |
|
87
|
and other WASM doo-dads in a browser. |
|
88
|
** TODO CLI |
|
89
|
using clingon, decide on generic options and write it up |
|
90
|
** TODO docs |
|
91
|
work on doc generation -- Rust and CL should be accounted for. |
|
92
|
** TODO tests |
|
93
|
We have none! need to make it more comfy - set up testing in all Rust |
|
94
|
crates and for the lisp systems. |