README

Developing high performance C++ software has never been so easy !


hmbdc is an open source header-only C++ framework and library built on top of  various real-world tested lockfree algorithms that facilitate ultra low latency and high throughput messaging (inter-thread, inter-process and thru network) programming. 
It aims to take most out of the allocated hardware resources (memory, cores, NICs and switches) to achieve latency and throughput goals. It works as a framework but it can also be used as libraries to collaborate with other. It takes most out of the allocated hardware or cloud computing resources (memory, cores, NICs and switches) to achieve latency and throughput goals. It works as a framework but it could also be driven by user's code to collaborate with other frameworks.

Keywords and features:

  • easy to use/high performance C++ type based message pub/sub framework, symmetric (no broker process), no IDL requirments, header-only
  •  hmbdc avoids pub/sub serialization / copying whenever possible, even comes with easy to use zero copy shared memory pub/sub support, performance is optimized for both small (bytes) and large (>10MB) messages
  • Active Object pattern framework - multi-threaded without the headache
  • lockfree / disruptor pattern in implementation
  • low latency / high throughput / support kernel bypassing driver
  • support multiple transport mechanisms with the consistent look and feel C++17 API:
    •     interthread
    •     interprocess
    •     UDP multicast
    •     TCP
    •     netmap multicast
    •     reliable multicast
    •     reliable netmap
  • message recording and replay, integration with any other programming languages that supports Linux piping.
  • supports both x86_64 and ARM64(aarch64) platforms Linux and QNX

Who needs hmbdc? 

The short answer is:
hmbdc is for developers who find existing middle ware being slow or expensive when it comes to code performance, project delivery speed and hardware resources.
The longer version:
It is used in areas that are CPU or network intensive with ultra high performance (latency / throughput) requirements. Where the application latencies are measured in the unit of microsecond, or the system throughput is measured in millions per second - such as high frequency trading, high performance server-backend, autonomous driving, robotics, multi-core real-time systems, etc.
hmbdc helps you get the job done quick and fast with way less hardware costs!

Some of hmbdc users:



How do I get started?

* check the design doc at 
  https://www.hummingbirdcode.net/p/concept-model.html 
  read the easy example code: chat chat2 chat3 to get the
  the features offered by hmbdc TIPS pub/sub
* html doc is provided as API reference
* hmbdc supports 
  gcc 7.3.1 (or later) on Linux, x86_64 or aarch64
  clang 10.0.1 (or later) on Linux, x86_64 or aarch64
  (contact us for QNX SDP7.1 for x86_64 or aarch64 support)
* boost (later than 1.62), netmap and rnetmap need 
  netmap driver
* header-only: use your favorite building tools
* examples and tool building instructions are in src code

HMBDC PERFORMANCE SAMPLE

measure thread message throughput  measure reliable netmap (rnetmap) network message latencies on a 1Gb link (netmap driver needs...