org-howto/sw/xo.org

8.7 KiB

xo libraries

#

#

#

#

#

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

C++ Libraries

http

  • xo-websock in-memory http server with websocket and python support.
  • xo-webutil low-level abstractions for http: endpoints, attribute lists.

stochastic processes + friends

  • xo-kalmanfilter linear kalman filter with simulation support.
  • xo-process stochastic processes and simulation-compatible realizations.
  • xo-distribution probability distributions including Kolmogorov-Smirnov
  • xo-statistics header-only. online accumulators, histogram.
  • xo-randomgen header-only. fast pseudo random number generators. xoshiro**,

complex event processing

  • xo-simulator deterministic event-based simulation
  • xo-reactor api for complex event processors + simple polling implementation.

data structures

  • xo-ordinaltree header-only. fast in-memory B+ tree, red-black tree w/ ordinal statistics.

quantitative

  • xo-matrix header-only. specialized matrix algorithms with some vectorization [wip]
  • xo-unit header-only. no-alloc constexpr exact unit conversions with some fractional-dimension support.
  • xo-ratio header-only. no-alloc constexpr exact ratio arithmetic.

general-purpose

  • xo-flatstring header-only. no-alloc plain-old-data constexpr string implementation
  • xo-callback header-only. reentrant callback set
  • xo-printjson json printer with plugin support.
  • xo-reflect reflection/introspection library
  • xo-subsys orderly startup and shutdown for subsystems with plugin features
  • xo-refcnt intrusive reference counting
  • xo-indentlog header-only logging library; colorized output with indentation tracking program call structure

build tools

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.

     +----------+----------+-----------+-----------+----------+
     |          |          |           | pyprocess | pykalman |
     |          |          |           |           |  -filter |
     | pymatrix | pydistri | pywebsock +-----------+----------+
     |          | -bution  |           |        pyreactor     |
     |          |          |           +-------------+        |
     |          |          |           | pyprintjson |        |
     |          |          +-----------+-------------+--------+
     |          |          | pywebutil |       pyreflect      |
     +----------+----------+-----------+----------------------+

/git/roland/org-howto/media/branch/master/sw/img/xo-py-overview.png

C++ Abstraction Tower

     +--------+--------+---------+-----------+---------+-----------+------------+------------+
     |        |        |         |  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                                     |
     +---------------------------------------------------------------------------------------+

/git/roland/org-howto/media/branch/master/sw/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