Ach is an Inter-Process Communication (IPC) mechanism and library. It is especially suited for communication in real-time systems that sample data from physical processes. Ach eliminates the Head-of-Line Blocking problem for applications that always require access to the newest message. Ach is efficient, robust, and formally verified. It has been tested and demonstrated on a variety of physical robotic systems. Source code for Ach is available under an Open Source BSD-style license.
./configure && make && make install
See the INSTALL file for details.
Alternatively, if you are using Debian or Ubuntu, you can use the golems.org APT repo.
-
Add the following to /etc/apt/sources:
deb http://code.golems.org/debian squeeze golems.org
(substitute the codename for your distribution in place of squeeze, e.g. wheezy, precise)
-
sudo apt-get update && sudo apt-get install libach-dev ach-utils ach-dkms
-
sudo dpkg-reconfigure ach-utils
- Manual: http://code.golems.org/pkg/ach/manual
and
./doc/manual/ach-manual.html
- API docs: http://code.golems.org/pkg/ach/api
and
./doc/html
- Man Pages: http://code.golems.org/pkg/ach/man
and
./doc/man
- Papers: http://www.golems.org/projects/ach.html
- Example Code:
./src/ach-example.c
See ./INSTALL
for details on generating the documentation.
- Announcements: http://groups.google.com/group/ach-announce
- General Help: http://groups.google.com/group/ach-help
- Development: http://groups.google.com/group/ach-devel
Language bindings are included for Common Lisp, Python, and Java.
-
Common Lisp bindings use CFFI and can be loaded with ASDF.
-
Python bindings are a C extension module and a Python module 'ach'. This can be installed either via
make install
or via Python's distutils/pip. -
C++ bindings wrap the C API. See
./include/Ach.hpp
-
Java bindings via the Java Native Interface (JNI). See
./doc/javadoc
or http://code.golems.org/pkg/ach/javadoc/
See the INSTALL file for details.
Ach has been formally verified using the SPIN model checker. This
formal model is included in the source distribution under the ./spin/
directory.