Radlib is a C library designed to simplify interprocess communication and hide technical details of common Unix/Linux systems.
Radlib follows an event-driven, asynchronous design paradigm that is easy for both novice and experienced developers to work with. It abstracts interprocess messaging, events, timers, and all I/O devices represented as file descriptors. This makes it much simpler to implement multi-purpose processes and multi-process applications.
One key feature of Radlib is its shared memory buffers. By avoiding costly "malloc" and "free" library calls, Radlib greatly improves the performance of typical processes. These buffers are also used for interprocess messages. Radlib also uses shared memory constructs to provide global message queue management and global "Queue Groups" for increased interprocess communications flexibility. All shared resources are carefully semaphore protected to prevent any potential issues with concurrent access.
In essence, Radlib is designed to provide real-time OS capabilities in a non-real-time OS environment. It has been successfully deployed on Linux, MacOSX, and FreeBSD, but it can be built and run on any flavor of Unix that supports System V IPC.
The library provides a comprehensive set of features, including fast system buffers, simple config file utility, events, doubly-linked lists, process logging through syslog, message queues, semaphores, shared memory utilities, timers, stacks, state machine utilities, a process framework, a process management utility to start/stop groups of processes, optional MySQL or PostgreSQL database API, straightforward TCP/streams socket API, and other assorted system utilities.
Radlib has been used in several mission-critical commercial applications, with outstanding results. It is lightweight, yet incredibly powerful and efficient in real-time applications. The library is BSD-licensed, meaning it is free to use in binary or source forms, and it distributed as source code to be built on the target platform. Build instructions are included in the distribution, and further details about open source software and the BSD license are included in the file "COPYING".
Currently, Radlib is the foundation for the Unix/Linux-based weather application called wview. This application interfaces with the Davis Vantage Pro console to archive weather data in real-time and periodically generates weather images and HTML files suitable for use on websites. Multiple Radlib processes are used to illustrate the interprocess communications flexibility that Radlib provides. Users are welcome to download the wview source code as an additional example of Radlib’s implementation.
Version 2.8.5: N/A