changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > demo / readme.org

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