OLD IMPLEMENTATION.
The new one is in Zig and fucking ROCKS: https://git.baguette.netlib.re/Baguette/libipc
Inter-Process Communication library based on unix sockets.
Karchnu ec33e6086e | ||
---|---|---|
examples | ||
man | ||
src | ||
tests | ||
.gitignore | ||
Makefile | ||
README.md | ||
project.zsh |
README.md
libipc
libipc - Simple, easy-to-use IPC library
See the introductory man page.
Compilation
make
logging system
Logs are in one of the following directories: $XDG_DATA_HOME/ipc/
or $HOME/.local/share/ipc/
.
The log file can be indicated with the IPC_LOGFILE
environment variable, too.
To remove logs: make LDFLAGS=-DIPC_WITHOUT_ERRORS
Since 0.7
libipc
have callbacks to use along with switching capabilities, making easier to implement proxies for different communication protocols
Planning for 0.8
For performance improvements within libipc
:
libipc
shouldn't use realloc for each event (new client, new message, etc.) but by batch of a few thousand elementslibipc
should use better internal structures, unrequiring the use of loops (over the whole list of messages or connections) for each action
Planning for 0.9
libipc
should uselibevent
for performance improvmentslibipc
should be thread-safe
Planning for 1.0
libipc
may be written in Ziglibipc
should have usable bindings in several languages
Implementation design
Memory management
- Prefer stack over mallocs.
- Basic functions (such as usock_) should not handle memory allocation.