Archived
3
0
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.
This repository has been archived on 2024-06-18. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
2022-12-23 02:35:38 +01:00
cat cat.zig: simplification. 2022-05-01 00:41:11 +02:00
docs Better presentation, for the ones only reading it online. 2020-12-09 15:58:31 +01:00
examples Minor changes in examples. 2020-10-01 03:19:52 +02:00
man Man page added. 2020-12-08 22:49:12 +01:00
src Wrong pointer read. 2022-02-04 02:43:49 +01:00
tests Fixed tests (3 and 4). 2022-02-04 03:22:26 +01:00
zig-impl Testing basic message exchange on a UNIX socket. 2022-12-23 02:35:38 +01:00
.gitignore Meaningful error msg, -logging +directory management, indentation. 2020-01-01 12:11:34 +01:00
Makefile v0.7.2: ipcd indicates if it successfully contacted the service. 2020-11-05 14:15:39 +01:00
project.zsh v0.7.2: ipcd indicates if it successfully contacted the service. 2020-11-05 14:15:39 +01:00
README.md Readme fix. 2020-12-09 15:34:53 +01:00

libipc

libipc - Simple, easy-to-use IPC library

See the introductory man page in man/libipc.7.

See the presentation in docs/libipc.md.

This library is a work in progress, but is already used intensively in production. It works, but we provide no warranty.

Compilation

make

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 elements
  • libipc should use better internal structures, unrequiring the use of loops (over the whole list of messages or connections) for each action
  • libipc will be rewritten in Zig

Planning for 0.9

  • libipc should use epoll/kqueue for performance improvments
    • new functions will be added to the API
    • but we'll keep the same API for applications with no need for threading (way simpler implementation)
  • libipc should be thread-safe

Planning for 1.0

  • libipc should have usable bindings in several languages

Implementation design

Memory management

  1. Prefer stack over mallocs.
  2. Basic functions (such as usock_) should not handle memory allocation.