Synchronous Interprocess Messaging Project for LINUX (SIMPL)

Welcome to the home of the SIMPL project.

Please feel free to visit the SIMPL project on also.

If you are using (or thinking of using) the SIMPL toolkit in your project consider the SIMPL coaching service.

Some online demos of the sample code from the 2nd Edition of the SIMPL book are available here.
2014Jan06 SIMPL-Python v3.0.1 binary for Raspberry Pi Released - first release of the self installing archive for SIMPL-Python v3.0.1 compiled for Raspberry Pi;
2013Jul05 SIMPL-Arduino v1.0.1 Released - first release of the SIMPL-Arduino API; SIMPL-Arduino source self installing archive
2013Jun26 SIMPL-Python v3.0.1 Released - major rework of SIMPL-Python API to allow compatibility with Python3.x; SIMPL-Python source self installing archive;
2012Oct30 SIMPL v3.3.8 Released - fixed name_attach rc bug, more Cygwin hooks; SIMPL source self installing archive;
2012Jan26 SIMPL v3.3.7 Released - enabling Mac and Cygwin compiles; SIMPL source self installing archive;
2010Oct25 SIMPL v3.3.5 Released - message near page size bug fixed; SIMPL source self installing archive;
2010May14 Programming the SIMPL Way - Second Edition - book has been published
2010Feb18 SIMPL-Python v2.0.0 Released - major reworking of SIMPL-Python modules; SIMPL-Python source self installing archive; and the SIMPL-Python precompiled binary self installing archive
2010Feb11 SIMPL v3.3.4 Released - surrogates no longer create zombies upon child exit; SIMPL source self installing archive; SIMPL precompiled binary self installing archive
2010Jan08 SIMPL v3.3.3 Released - replaces PAGE_SIZE with POSIX _SC_PAGESIZE
2009Aug27 SIMPL v3.3.2 Released - adds whatsMyRecvPtr() and whatsMyReplyPtr()
2009May06 SIMPL-JAVA v0.2.0 Released - JNI base library for JAVA and tclSurrogate protocol library for JAVA; SIMPL-JAVA self installing archive; and the SIMPL-JAVA precompiled binary self installing archive
2009Apr22 SIMPL-Python precompiled binary (i386) v1.3.1 Released
2009Apr21 SIMPL-Tcl/Tk precompiled binary (i386) v1.5.1 Released
2009Mar31 SIMPL-JAVA v0.1.0 Released - JNI base library for JAVA; introduces the SIMPL-JAVA self installing archive; and the SIMPL-JAVA precompiled binary self installing archive
2009Jan27 SIMPL-Python v1.3.1 Released - tclSurrogate protocol library for Python; SIMPL-Python web application interface ; introduces SIMPL-Python self installing archive
2009Jan27 SIMPL-Tcl/Tk v1.5 Released - tclSurrogate relocated to main tarball ; introduces SIMPL-Tcl/Tk self installing archive
2009Jan27 SIMPL v3.3.0 Released - reorganizes SIMPL core tarball ;tclSurrogate now under surrogates; /var/tmp as default for FIFO_PATH ; introduces SIMPL self installing archive
2008Dec01 SIMPLv3.2.2 Released - reworks several Makefiles to better conform with Debian standards
2008Nov17 SIMPL Tcl hooks v1.4 released - help trap the dependency on Tcl/Tk sources in buildsimpl.tcl script.
2008Nov17 SIMPL Python hooks v1.2 released - help trap the dependency on Python sources in buildsimpl.python script.
2008Oct07 Programming the SIMPL Way - book has been published
2008May12 SIMPLv3.2.1 Released - fixes some build problems with previous release
2008Apr22 SIMPLv3.2.0 Released - adds new RS232 surrogate and defaults TCP/IP surrogate to intersurrogate text headers
2008Mar05 SIMPL Tcl hooks v1.3 released - minor bug fixes
2007Aug08 The creators of the SIMPL toolkit are writing a book. If you want to be notified when the book gets published click here.
2007July24 new version of SIMPL Tcl hooks - adds trusted network capabilities
2007May15 SIMPLv3.1.2 released -  removes debug simpl_log messages
2007Jan15 SIMPLv3.1.1 released -  minor bug fixes;  corrected a possible runaway condition in TCP/IP surrogate
06Aug16 the tclSurrogate protocol is finally documented.   This protocol is very useful in connecting disparate systems to SIMPL systems via a TCP/IP socket.
2006Aug14 SIMPLv3.1.0 released -  added Relay() to SIMPL API and split Tcl/Tk and Python hooks from top level build and tarball
2006June26 several new softwareICs released -  the new tarball contains code for a scheduler, a proxy and a statemachine ... for more info see softwareIC page
2006Apr24 SIMPLv3.0.3 released -  added b_port option to surrogateTcp to allow for proxy testing
2006Mar01 the SIMPL coach service articulated
2006Feb07 SIMPLv3.0.2 released -  minor bug fix release which tweeks code associated with the Tcl surrogate
2006Jan10 SIMPLv3.0.1 released -  minor bug fix release which corrects a couple of missing files from tarball
2006Jan10 SIMPLv3.0.0 released -  v3.0 remerges the tcp_x back into the surrogate codebase and simplifies the protocol router interface
2005Dec20  SIMPL example code - the fcnet network checker code added
2005Dec20  SIMPLv2.5.0 released - third prerelease of v3.0 surrogate as ~/tcp_x with check for existence algorithm in surrogates
2005Nov14  SIMPLv2.4.1 released - fixed so that surrogateTcp_x can coexist with surrogateTcp
2005Nov14  SIMPL unit test scripts - the SIMPL unit testing infrastructure.   See ~/docs/readme.testing
2005Nov12  SIMPLv2.4.0 released - first prerelease of the new v3.0 surrogate stuff as ~/tcp_x
2005Oct27 SIMP3.0 roadmap
2005Sept29  SIMPLv2.3.6 released - fixed the Trigger error in name_detach() logic which 2.3.5 patches introduced
2005Sept26  SIMPLv2.3.5 released - fix in proxy logic for possibility that shmid=0
2005Apr19  SIMPLv2.3.4 released - minor bug fix in the remote name_locate() error reporting and possible buffer overflow
2005Feb9  SIMPLv2.3.3 released - minor bug fix in the Trigger() which permits proxyID of zero to be valid
2004Nov19  SIMPLv2.3.2 released - minor bug fix in the Trigger() proxy  which now allows proxyID to be used
2004Oct28  SIMPLv2.3.1 released - minor bug fix in the name_locate algorithm which affects SIMPL names common root portion
2004Oct19 SIMPL selfhosted(live)CD ISO image available
2004July20  SIMPLv2.3.0 released - significant release,  changes to sender write() detection algorithm
2004July11  SIMPLv2.2.5 released - minor bug fix in theTcl/Tk shared library
2004May20 SIMPL mailing list switching to Yahoo Groups because I'm tired of manually administering the 4-5 daily spam messages which can't be automatically filtered out of the Sourceforge mailing list system.    Please resubscribe yourself to the new list.
2004May6  SIMPLv2.2.4 released - minor bug fixes in duplicate name detection algorithm and Python build
2004Apr28 SIMPL project looking for new maintainer of surrogate subsystem code, SIMPL Python and SIMPL MAC
2004Apr28  SIMPL for QNX update
2003Dec8 SIMPLv2.2.3 released - minor bug fixes in child_detach()
2003Nov6 multithread patch v0.2 released

Our mission

Send/Receive/Reply messaging , first popularized in commericial RTOS's such as QNX, is: This project aims to bring this powerful messaging paradigm to the Open Source application developer.

What have we done thus far?

We have created a static library containing the following set of messaging primatives: In addition we have used these primatives to create

The creators of the SIMPL toolkit have written a book. Google Books has a preview here.

The full source for this library and all the various examples is available for download. This source for the SIMPL library is under the LGPL licence. All the rest of the code is under a public domain licence.  You are free to use SIMPL for both personal and commercial use. With this version we are achieving a 1k message exchange times of ~250us on a P166 machine.

Other SIMPL literature

How do I get involved?

Certainly we encourage you to download the source and play with it (and you are completely free to use it in your projects and products).

Contact and use our mailing list.

NOTE:  Due to the increasing spam which must be manually administered out of the Sourceforge mailing list, the SIMPL project has switched the mailing list over to Yahoo Groups which offers much better spam protection.

The SIMPL mailing list archive can be found here .

As it is with any Open Source project,  the SIMPL project can only grow and prosper if the people using the code give something back in return.

If you are an experienced LINUX developer or kernel hacker we certainly could use your contributions.

Our code is written with the KISS philosphy in mind. As such even a novice C programmer could study and understand the code. So even if you are just starting out as a LINUX developer your contribution to this effort is welcome. We will make every reasonable effort to help you get going and support you along the way.

There is an online course available from which teaches the basics of  LINUX programming the SIMPL way.

Other contributions and related links

Where has the SIMPL code been used?

We welcome submissions from other participants. This list is by no means complete, but these are some of the areas where the SIMPL code has been applied:

What sort of things are being worked on (or need to be done)?

As with any Open Source project, SIMPL's success ultimately depends on the participation rate of its volunteer developers. We encourage you to get involved and help grow the code base in new and different directions. There is ample work for developers of all skill levels from new C programmers to seasoned veterans.


The SIMPL project uses the International date stamp standard which is:


Until 2013 our occasional shorthand use of a 2 digit year code can be ambiguous. We apologize for any confusion.

This project is being coordinated by FC software Inc.