project-ideas
project-ideas copied to clipboard
std.interprocess
The goal of this project is to implement a flexible interprocess data structure, synchronization and communication library. An equivalent library in C++ is Boost Interprocess. The important goal would be to port all the features from boost.interprocess to D allowing the creation of structs/classes on shared memory, etc.
boost::interprocess offers the following features and it will be challenging & achieving to have these implemented in D in a stable, easy to use library that achieves all the aspects.
- default and custom allocators to operate on shm
- named IPC primitives: shm, semaphores, spinlock, mutex, condvar, barriers
- standard containers like vector, deque, list, string, set that operates on shm
- message queue on shm without relying on the kernel for data transfer. This is a huge win for low latency apps in the order of micro seconds
- managed shared memory
- IPC smart pointers
Get started by looking into the following:
Could it be that you overlooked System V / Posix IPC queue ? Any chance of including a standardized way to do RPC at the same time ?
I agree on the usefulness of an IPC project but since it's mentioned note that Iz's IPC module was actually a failure ( sync issues ) and is deactivated since a while. Just the primitives were working.
About the containers I think that maybe a types allocator could be used on the EMSI containers maybe.
What if we just serialized a struct and attached TypeInfo with it? Maybe recursively copy data via pointed to by pointers too. That would let you send basic D objects.
is this project still relevant ??? @burner
In my opinion this project is still relevant.
In my opinion this project is still relevant.
sent you a quick mail.