January Tech Lunch: Programming Language for Reactive Components

Please join us for our first Tech Lunch of 2017!
OCI's January Tech Lunch features OCI engineer, Justin Wilson, who will be presenting on A Programming Language for Reactive Components.  

When:

Friday, January 27th, 2017
11:30am - 12:30pm

Where:

OCI Training Room
12140 Woodcrest Executive Dr. #250
St. Louis, MO 63141 


Reactive programs such as operating systems, servers, and smartphone apps have ongoing asynchronous concurrent interactions with their environment. Developing reactive programs with traditional models of concurrency and interaction, like multi-threading and object-oriented implementations of events, often leads to subtle timing bugs and other concurrency hazards, and may limit a developer's ability to ensure correct behavior when systems are composed from smaller sub-systems. To overcome these limitations with the current state of the art, I propose the reactive components model for reactive programs and the RCGo programming language which is an implementation of reactive components based on the syntax and semantics of Go.

A reactive component is a set of state variables and atomic transitions that can be composed with other reactive components to yield another reactive component. Within this model, (1) the result of composition is always another reactive component, for consistency of reasoning; (2) systems may be decomposed to an arbitrary degree and depth, to foster divide-and-conquer approaches when designing and re-use when implementing systems; (3) the behavior of a reactive component can be stated in terms of its interface, which is necessary for abstraction; and (4) properties of reactive components that are derived from transitions protected by encapsulation are preserved through composition, which permits assume-guarantee reasoning.

RCGo enforces the semantics of reactive components while providing useful features like reference and move semantics.  An important part of the RCGo run-time system is the scheduler which has the ability to infer which transitions can be executed concurrently.  An evaluation of the RCGo interpreter shows that it is an effective event scheduler but that additional work is necessary to compete with optimized multi-threaded techniques.


As always, pizza and soda will be served.  If you'd like to view the Tech Talk, but can't make it to OCI, we can make it available to watch online. 

secret