changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > org > notes / 20240419.org

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