changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > demo / readme.org

changeset 22: ba323d8c0f93
parent: fd19fdc77a20
child: 529419ac94f3
author: ellis <ellis@rwest.io>
date: Sat, 03 Jun 2023 22:48:46 -0400
permissions: -rw-r--r--
description: refactor1
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 
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)
36 - C :: Config (default.cfg)
37 ** Run
38 #+begin_src shell
39  ./demo -i
40 #+end_src
41 ** Config
42 Configs can be specified in JSON, TOML, RON, or of course SEXP. See
43 =default.cfg= for an example.
44 ** Play
45 The high-level user interface is presented as a multi-modal GUI
46 application which adapts to the specific application /instances/
47 below.
48 *** Weather
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.
57 * tasks
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
71 - rs-macroexpand-1
72 *** TODO c-macroexpand
73 - c-gen-file h/c
74 - c-defmacro
75 - c-macros
76 - c-macroexpand
77 - c-macroexpand-1
78 *** TODO slint-macroexpand
79 - slint-gen-file
80 - slint-defmacro
81 - slint-macros
82 - slint-macroexpand
83 - slint-macroexpand-1
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.