- written in C
- POSIX (tested in Linux and FreeBSD)
- small (~850 LOC)
- well commented (~400 lines)
- good test coverage
- zerocopy
- lockless
- one writer, many readers
- data is written and read in chunks of arbitrary size
- a data chunk becomes visible to the readers as soon as the writer commits it
- data chunks can have an expiration time
- data chunks can be obsoleted by a newer copy
- garbage collector
- no file descriptors are permanently kept open
- no change notification
At some point the garbage collector will kick in, when the conditions specified by the writer are met or when the SHM area is completely full. All the chunks which are still valid will be copied over to a new SHM object, and then the SHM objects will be atomically switched. Readers will be able to complete their ongoing reads, and transparently move on to the new SHM object as they request to read a new data chunk.