Please rotate your tablet to be horizontal.

You can dismiss this notice but please note that this experience has not been designed for mobile devices and so will be less than optimal

Back To Schedule

Using Modern C++ to Revive an Old Design

14:00 - 15:00 Thursday 15th September 2022 MDT Aurora A / Online A
Beginner
Intermediate
Advanced
Expert
Software Design

In 1984, Dennis Ritchie introduced what would become the Unix System V STREAMS framework, which was designed to provide a way to implement most of the OSI stack with small, testable, modular, protocol independent, reusable, loosely coupled, components. These are great ideals for writing complicated data processing software systems. Unfortunately, the official STREAMS framework itself is limited to kernel modules, and the design itself has fallen out of favor due to perceived performance (and legal) issues. Still, the aforementioned characteristics of the STREAMS design are highly desirable.

This talk leverages features of modern C++ to offer a slightly different take on this relatively old, but very useful, design. We will present the design goals in detail, and show how to build small, testable components that can be easily plugged together.

Furthermore, we will discuss, and then use, several metaprogramming techniques to demonstrate how these design goals can be implemented, while also providing optimal runtime performance. For example, one point of performance problems with the traditional design is based on passing messages that contain opaque data. Each module must inspect each message to determine if it will be processed, or ignored and passed to the next module. This design provides an incredible amount of flexibility, but with it comes some amount of runtime cost to possibly perform inspection of every message at every module. One goal will be to utilize modern C++ techniques to reduce or eliminate this runtime cost.

Jody Hagins

LSEG

Jody has been programming in C++ since the 1980s.  His formal education was in artificial intelligence, using LisP and Smalltalk.  His professional experience began as a unix kernel developer, then telecoms, then automated trading, which is where he has been since the 1990s.  He added enough C++ support to be able to write kernel modules in C++.  Currently, he uses C++ in the domain of financial data feeds.