Last modified on March 18, 2012
Rapid Application Development Library
12/10/2009: radlib now can be installed via debian
package for debian lenny (i386, amd64) and ubuntu karmic (i386, amd64).
radlib is a C language library developed to abstract details of interprocess communications and common linux/unix system facilities so that application developers can concentrate on application solutions. It encourages developers (whether expert or novice) to use a proven paradigm of event-driven, asynchronous design. By abstracting interprocess messaging, events, timers, and any I/O device that can be represented as a file descriptor, radlib simplifies the implementation of multi-purpose processes, as well as multi-process applications.
radlib greatly improves typical process performance through the
use of shared memory buffers to avoid costly "malloc" and
"free" library calls. These buffers are used for interprocess
messages. radlib utilizes shared memory constructs to provide global
message queue management and global "Queue Groups" for increased
interprocess communications flexibility.
In short, radlib is a sincere attempt to provide real-time OS capability on a non-real-time OS. It has been successfully deployed on linux, MacOSX and FreeBSD but there is no reason it would not build and run on any flavor of unix supporting System V IPC.
Specifically, radlib provides fast system buffers, a 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, a straightforward TCP/streams socket API, a UDP/datagram unicast/multicast/broadcast API, CRC and SHA utility APIs, and other assorted system utilities.
An example application template is provided in the distribution (see the "Example Application Template" link in the left column of this page). The template example serves two purposes: it demonstrates, through source code inspection, how a well constructed radlib process is implemented and it provides an example build environment with the capability for someone new to radlib to build and execute an example application "right out of the box".
Proprietary forms of radlib have been used in several mission-critical commercial applications with excellent results. It is light yet very powerful and efficient in real time. radlib is BSD-licensed (free to use in binary or source forms) and distributed as source to be built on the target platform. Build instructions are included in the distribution. See the file "COPYING" in the distribution for details concerning open source software and the BSD license.
radlib is currently used as the foundation of my unix/linux-based weather application, wview, which interfaces with the Davis Vantage Pro console to archive weather data in real-time and periodically (every 60 seconds) generate weather images and html files suitable for use on web sites (see my weather page). It uses multiple radlib processes which illustrate radlib's interprocess communications flexibility. Feel free to download the wview source as another example of radlib implementation.