0
|
1
|
* How it works |
9
|
2
|
:PROPERTIES: |
|
3
|
:ID: 439a4945-de2f-4985-ba6c-fe6421aa9ad9 |
|
4
|
:END: |
0
|
5
|
The backend services are written in Rust and controlled by a simple |
|
6
|
messaging protocol. Services provide common runtime capabilities known |
|
7
|
as the /service protocol/ but are specialized on a unique /service |
|
8
|
type/ which may in turn register their own /custom protocols/ (via |
|
9
|
core). |
|
10
|
|
|
11
|
Services are capable of dispatching data directly to clients, or |
|
12
|
storing data in the /database/ (sqlite, postgres, mysql). |
|
13
|
|
|
14
|
The frontend clients are pre-dominantly written in Common Lisp and |
|
15
|
come in many shapes and sizes. There is a cli-client, web-client |
|
16
|
(CLOG), docker-client (archlinux, stumpwm, McCLIM), and native-client |
|
17
|
which also compiles to WASM (slint-rs). |
|
18
|
|
|
19
|
* Guide |
9
|
20
|
:PROPERTIES: |
|
21
|
:ID: 65140d2c-5d59-48cd-946c-01c380a37f08 |
|
22
|
:END: |
0
|
23
|
** Build |
9
|
24
|
:PROPERTIES: |
|
25
|
:ID: ad0652ca-4abf-4d27-8897-a61a13a6e61d |
|
26
|
:END: |
0
|
27
|
- *install dependencies* |
|
28
|
#+begin_src bash |
|
29
|
./tools/deps.sh |
|
30
|
#+end_src |
|
31
|
- *make executables* \\ |
|
32
|
Simply run =make build=. Read the ~makefile~ and change the options |
|
33
|
as needed. |
|
34
|
- MODE :: Mode (debug, release) |
|
35
|
- LISP :: Lisp (sbcl, cmucl, ccl) |
|
36
|
- CFG :: Config (default.cfg) |
|
37
|
** Run |
9
|
38
|
:PROPERTIES: |
|
39
|
:ID: b2295442-ccb7-4a5c-8a9e-ea8502aad636 |
|
40
|
:END: |
0
|
41
|
#+begin_src shell |
|
42
|
./demo -i |
|
43
|
#+end_src |
|
44
|
** Config |
9
|
45
|
:PROPERTIES: |
|
46
|
:ID: 600be170-d032-4280-a7b5-c46e3c157206 |
|
47
|
:END: |
0
|
48
|
Configs can be specified in JSON, TOML, RON, or of course SEXP. See |
|
49
|
=default.cfg= for an example. |
|
50
|
** Play |
9
|
51
|
:PROPERTIES: |
|
52
|
:ID: 56a69ed7-2eb3-4490-95a1-072cee985df5 |
|
53
|
:END: |
0
|
54
|
The high-level user interface is presented as a multi-modal GUI |
|
55
|
application which adapts to the specific application /instances/ |
|
56
|
below. |
|
57
|
*** Weather |
9
|
58
|
:PROPERTIES: |
|
59
|
:ID: 804a174b-534c-4a04-966a-b44c0a86fbd4 |
|
60
|
:END: |
0
|
61
|
This backend retrieves weather data using the NWS API. |
|
62
|
*** Stocks |
9
|
63
|
:PROPERTIES: |
|
64
|
:ID: 4e7339bb-aaf3-4fab-90e4-05e13f24f881 |
|
65
|
:END: |
0
|
66
|
The 'Stocks' backend features a stock ticker with real-time analysis |
|
67
|
capabilities. |
|
68
|
*** Bench |
9
|
69
|
:PROPERTIES: |
|
70
|
:ID: e3cf0add-6ded-4c05-a05d-7ef463b85b08 |
|
71
|
:END: |
0
|
72
|
This is a benchmark backend for testing the capabilities of our |
|
73
|
demo. It spins up some mock services and allows fine-grained control |
|
74
|
of input/throughput. |
|
75
|
* tasks |
9
|
76
|
:PROPERTIES: |
|
77
|
:ID: a16a3807-0e06-4c8d-baf6-5dfa8f8f5585 |
|
78
|
:END: |
0
|
79
|
** TODO DSLs |
9
|
80
|
:PROPERTIES: |
|
81
|
:ID: 3ae4754e-0c0f-4923-9e53-ae962b8638a1 |
|
82
|
:END: |
0
|
83
|
- consider tree-sitter parsing layout, use as a guide for developing a |
|
84
|
single syntax which expands to Rust or C. |
|
85
|
- with-rs |
|
86
|
- with-c |
|
87
|
- with-rs/c |
|
88
|
- with-cargo |
|
89
|
- compile-rs/c |
|
90
|
*** TODO rs-macroexpand |
9
|
91
|
:PROPERTIES: |
|
92
|
:ID: f612975f-6bcc-4aab-b0d8-65b8ff0a0d0f |
|
93
|
:END: |
0
|
94
|
- rs-gen-file |
|
95
|
- rs-defmacro |
|
96
|
- rs-macros |
|
97
|
- rs-macroexpand |
|
98
|
- rs-macroexpand-1 |
|
99
|
*** TODO c-macroexpand |
9
|
100
|
:PROPERTIES: |
|
101
|
:ID: 49f5c224-026d-4cdc-a326-1742e64c4279 |
|
102
|
:END: |
0
|
103
|
- c-gen-file h/c |
|
104
|
- c-defmacro |
|
105
|
- c-macros |
|
106
|
- c-macroexpand |
|
107
|
- c-macroexpand-1 |
|
108
|
*** TODO slint-macroexpand |
9
|
109
|
:PROPERTIES: |
|
110
|
:ID: 486beb12-179b-4acc-8507-cdc498edb628 |
|
111
|
:END: |
0
|
112
|
- slint-gen-file |
|
113
|
- slint-defmacro |
|
114
|
- slint-macros |
|
115
|
- slint-macroexpand |
|
116
|
- slint-macroexpand-1 |
|
117
|
*** TODO html (using who) |
9
|
118
|
:PROPERTIES: |
|
119
|
:ID: 2e81a19c-874c-4fd7-be0f-f6cd62c660db |
|
120
|
:END: |
0
|
121
|
** TODO web templates |
9
|
122
|
:PROPERTIES: |
|
123
|
:ID: 95f7d6ac-c010-4d1d-a47d-1693bb7d6eab |
|
124
|
:END: |
0
|
125
|
create a basic static page in CL which will be used to host Slint UIs |
|
126
|
and other WASM doo-dads in a browser. |
|
127
|
** TODO CLI |
9
|
128
|
:PROPERTIES: |
|
129
|
:ID: fc1d5364-279c-4d5f-baea-ed2c110b63f0 |
|
130
|
:END: |
0
|
131
|
using clingon, decide on generic options and write it up |
|
132
|
** TODO docs |
9
|
133
|
:PROPERTIES: |
|
134
|
:ID: 467e84e3-e72f-4764-8858-cc15fdc17e8a |
|
135
|
:END: |
0
|
136
|
work on doc generation -- Rust and CL should be accounted for. |
|
137
|
** TODO tests |
9
|
138
|
:PROPERTIES: |
|
139
|
:ID: 70aea01c-d01e-4ddf-aaf5-c86183a7e250 |
|
140
|
:END: |
0
|
141
|
We have none! need to make it more comfy - set up testing in all Rust |
|
142
|
crates and for the lisp systems. |