Skip to content
/ zix Public

A lightweight C library of portability wrappers and data structures

License

Notifications You must be signed in to change notification settings

drobilla/zix

Repository files navigation

Zix

Zix is a lightweight C library of portability wrappers and data structures.

Components

  • Allocation

    • ZixAllocator: A customizable allocator.
      • ZixBumpAllocator: A simple realtime-safe "bump-pointer" allocator.
  • Algorithms

    • zix/digest.h: Digest functions suitable for hashing arbitrary data.
  • Data Structures

    • ZixBTree: A page-allocated B-tree.
    • ZixHash: An open-addressing hash table.
    • ZixRing: A lock-free realtime-safe ring buffer.
    • ZixTree: A binary search tree.
  • Threading

    • ZixSem: A portable semaphore wrapper.
    • ZixThread: A portable thread wrapper.
  • File System

    • zix/filesystem.h: Functions for working with filesystems.
    • zix/path.h: Functions for working with filesystem paths lexically.

Platforms

Zix is continually tested on:

  • Debian GNU/Linux 11 (x86, x64, arm32, and arm64)
  • Fedora 36 (x64)
  • FreeBSD 13 (x64)
  • MacOS 14 (M2)
  • Node 12 (as wasm via emscripten 2.0.12)
  • Windows 10 (x86)

Dependencies

None, except the C standard library, and some POSIX and platform-specific APIs where necessary.

Documentation

-- David Robillard [email protected]