167 lines
8.7 KiB
Org Mode
167 lines
8.7 KiB
Org Mode
#+title: xo libraries
|
|
#+author: Roland Conybeare
|
|
#
|
|
# org-publish options
|
|
# ^:{} require a_{b} before assuming that b should be subscripted.
|
|
# without this option a_b will automatically subscript b.
|
|
#+options: ^:{} toc:4
|
|
#
|
|
# emacs-specific options
|
|
#+startup: showall
|
|
#
|
|
# html exporter options
|
|
#+setupfile: ../ext/fniessen/theme-readtheorg.setup
|
|
#+language: en
|
|
#+html_head: <link rel="shortcut icon" type="image/x-icon" href="/web/img/favicon.ico" />
|
|
#
|
|
# #+infojs_opt: view:showall mouse:#ffc0c0 toc:nil ltoc:nil path:/web/ext/orginfo/org-info.js
|
|
# #+html_head: <link rel="stylesheet" type="text/css" href="/web/css/primary.css" />
|
|
#
|
|
#+html_link_home: /web/index.html
|
|
#+html_link_up: /web/index.html
|
|
|
|
* Xo
|
|
|
|
A set of integrated libraries for event-based simulation with stochastic processes.
|
|
Intended for use in C++ and python applications.
|
|
|
|
Variety of features covered, for example:
|
|
kalman filters, stochastic processes, complex event processing, simulation, websockets.
|
|
|
|
* Python Libraries
|
|
|
|
- [[https://github.com/rconybea/xo-pywebsock][xo-pywebsock]] in-memory http server; can expose entirely-native publishing pipeline via websockets.
|
|
- [[https://github.com/rconybea/xo-pywebutil][xo-pywebutil]] lo-level abstractions for http: endpoints, attribute lists.
|
|
- [[https://github.com/rconybea/xo-pykalmanfilter][xo-pykalmanfilter]] linear kalman filter with simulation support.
|
|
- [[https://github.com/rconybea/xo-pymatrix][xo-pymatrix]] matrix algorithms [wip]
|
|
- [[https://github.com/rconybea/xo-pydistribution][xo-pydistribution]] probability distributions e.g. Kolmogorov Smirnov
|
|
- [[https://github.com/rconybea/xo-pyprocess][xo-pyprocess]] stochastic processes with simulation focus.
|
|
- [[https://github.com/rconybea/xo-pyreactor][xo-pyreactor]] complex event processors + polling reactor.
|
|
- [[https://github.com/rconybea/xo-pyprintjson][xo-pyprintjson]] plugin json printing for xo c++ classes.
|
|
- [[https://github.com/rconybea/xo-pyreflect][xo-pyreflect]] plugin introspection for xo c++ classes.
|
|
|
|
* C++ Libraries
|
|
|
|
http
|
|
- [[https://github.com/rconybea/xo-websock][xo-websock]] in-memory http server with websocket and python support.
|
|
- [[https://github.com/rconybea/xo-webutil][xo-webutil]] low-level abstractions for http: endpoints, attribute lists.
|
|
|
|
stochastic processes + friends
|
|
- [[https://github.com/rconybea/xo-kalmanfilter][xo-kalmanfilter]] linear kalman filter with simulation support.
|
|
- [[https://github.com/rconybea/xo-process][xo-process]] stochastic processes and simulation-compatible realizations.
|
|
- [[https://github.com/rconybea/xo-distribution][xo-distribution]] probability distributions including Kolmogorov-Smirnov
|
|
- [[https://github.com/rconybea/xo-statistics][xo-statistics]] header-only. online accumulators, histogram.
|
|
- [[https://github.com/rconybea/randomgen][xo-randomgen]] header-only. fast pseudo random number generators. xoshiro**,
|
|
|
|
complex event processing
|
|
- [[https://github.com/rconybea/xo-simulator][xo-simulator]] deterministic event-based simulation
|
|
- [[https://github.com/rconybea/xo-reactor][xo-reactor]] api for complex event processors + simple polling implementation.
|
|
|
|
data structures
|
|
- [[https://github.com/rconybea/xo-ordinaltree][xo-ordinaltree]] header-only. fast in-memory B+ tree, red-black tree w/ ordinal statistics.
|
|
|
|
quantitative
|
|
- [[https://github.com/rconybea/xo-matrix][xo-matrix]] header-only. specialized matrix algorithms with some vectorization [wip]
|
|
- [[https://github.com/rconybea/xo-unit][xo-unit]] header-only. no-alloc constexpr exact unit conversions with some fractional-dimension support.
|
|
- [[https://github.com/rconybea/xo-ratio][xo-ratio]] header-only. no-alloc constexpr exact ratio arithmetic.
|
|
|
|
general-purpose
|
|
- [[https://github.com/rconybea/xo-flatstring][xo-flatstring]] header-only. no-alloc plain-old-data constexpr string implementation
|
|
- [[https://github.com/rconybea/xo-callback][xo-callback]] header-only. reentrant callback set
|
|
- [[https://github.com/rconybea/xo-printjson][xo-printjson]] json printer with plugin support.
|
|
- [[https://github.com/rconybea/reflect][xo-reflect]] reflection/introspection library
|
|
- [[https://github.com/rconybea/subsys][xo-subsys]] orderly startup and shutdown for subsystems with plugin features
|
|
- [[https://github.com/rconybea/refcnt][xo-refcnt]] intrusive reference counting
|
|
- [[https://github.com/rconybea/indentlog][xo-indentlog]] header-only logging library; colorized output with indentation tracking program call structure
|
|
|
|
build tools
|
|
- [[https://github.com/rconybea/xo-cmake][xo-cmake]] cmake modules.
|
|
|
|
* External Dependencies
|
|
|
|
| name | deps |
|
|
|-----------------+------------------------------------------------------|
|
|
| all | gcc, lcov, catch2, cmake |
|
|
| all docs | doxygen, graphvix, sphinx, breathe, sphinx_rtd_theme |
|
|
| all py | pybind11 |
|
|
| xo-kalmanfilter | eigen |
|
|
| xo-websock | libwebsockets |
|
|
|-----------------+------------------------------------------------------|
|
|
|
|
* Python Abstraction Tower
|
|
|
|
Each python library =pyfoo= depends on similarly-named c++ library =foo=.
|
|
|
|
#+name: xo-py-overview
|
|
#+header: :exports results
|
|
#+begin_src ditaa :file img/xo-py-overview.png
|
|
|
|
+----------+----------+-----------+-----------+----------+
|
|
| | | | pyprocess | pykalman |
|
|
| | | | | -filter |
|
|
| pymatrix | pydistri | pywebsock +-----------+----------+
|
|
| | -bution | | pyreactor |
|
|
| | | +-------------+ |
|
|
| | | | pyprintjson | |
|
|
| | +-----------+-------------+--------+
|
|
| | | pywebutil | pyreflect |
|
|
+----------+----------+-----------+----------------------+
|
|
|
|
#+end_src
|
|
|
|
#+RESULTS: xo-py-overview
|
|
[[file:img/xo-py-overview.png]]
|
|
|
|
* C++ Abstraction Tower
|
|
|
|
#+name: xo-overview
|
|
#+header: :exports results
|
|
#+begin_src ditaa :file img/xo-overview.png
|
|
|
|
+--------+--------+---------+-----------+---------+-----------+------------+------------+
|
|
| | | | process | kalman | simulator | | |
|
|
| | | | | -filter | | | |
|
|
| matrix | distri | websock +-----------+---------+-----------+ | |
|
|
| |-bution | | | | |
|
|
| | | +---------+ reactor | | unit |
|
|
| | | |printjson| | | |
|
|
| | +---------+---------+-+-----------+---------+ statistics | |
|
|
| | | webutil | reflect | | | | |
|
|
+--------+--------+---------+-+---------+ | ordinal | +-------+ |
|
|
| refcnt | | callback | tree | | ratio | |
|
|
| +-----------+ subsys | | | +-------+----+
|
|
| | indentlog | | | | | flatstring |
|
|
+-----------------+-----------+---------+-----------+---------+------------+------------+
|
|
| xo cmake modules |
|
|
+---------------------------------------------------------------------------------------+
|
|
|
|
#+end_src
|
|
|
|
#+RESULTS: xo-overview
|
|
[[file:img/xo-overview.png]]
|
|
|
|
* Size
|
|
|
|
(per =cloc=; excludes comments. Sizes as of 10jun2024)
|
|
|
|
| subsystem | cmake | .hpp | .cpp |
|
|
|-----------------+-------+------+------|
|
|
| xo-websock | 34 | 186 | 1418 |
|
|
| xo-webutil | 27 | 77 | 56 |
|
|
| xo-kalmanfilter | 47 | 552 | 904 |
|
|
| xo-process | 34 | 645 | 163 |
|
|
| xo-simulator | 31 | 186 | 392 |
|
|
| xo-reactor | 39 | 1110 | 261 |
|
|
| xo-distribution | 24 | 717 | |
|
|
| xo-ordinaltree | 24 | 3962 | |
|
|
| xo-statistics | 22 | 166 | |
|
|
| xo-matrix | 29 | 1266 | |
|
|
| xo-unit | 49 | 1972 | |
|
|
| xo-ratio | 36 | 418 | |
|
|
| xo-reflect | 54 | 891 | 289 |
|
|
| xo-refcnt | 36 | 306 | 130 |
|
|
| xo-indentlog | 35 | 1632 | |
|
|
| xo-flatstring | 34 | 582 | |
|
|
| xo-callback | 25 | 180 | |
|
|
| xo-subsys | 27 | 153 | |
|
|
| xo-cmake | 1164 | | |
|