https://github.com/drobilla/zix
A lightweight C library of portability wrappers and data structures
https://github.com/drobilla/zix
b-tree c data-structures filesystem hash hash-table ringbuffer threads
Last synced: 21 days ago
JSON representation
A lightweight C library of portability wrappers and data structures
- Host: GitHub
- URL: https://github.com/drobilla/zix
- Owner: drobilla
- License: isc
- Created: 2021-09-11T01:43:42.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-12-01T16:18:25.000Z (2 months ago)
- Last Synced: 2025-12-04T05:40:15.108Z (about 2 months ago)
- Topics: b-tree, c, data-structures, filesystem, hash, hash-table, ringbuffer, threads
- Language: C
- Homepage: https://gitlab.com/drobilla/zix
- Size: 1.41 MB
- Stars: 16
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: NEWS
- License: COPYING
Awesome Lists containing this project
README
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.
* Environment
* `zix/environment.h`: Function to expand shell-style variables in a string.
Platforms
---------
Zix is continually tested on:
* Debian 11 (x86, x64, arm32, and arm64)
* Fedora 36 (x64)
* FreeBSD 14 (x64)
* MacOS 14 (M2)
* Node 12 (as wasm via emscripten 2.0.12)
* Windows 10 (x64)
Dependencies
------------
None,
except the C standard library,
and some POSIX and platform-specific APIs where necessary.
Documentation
-------------
* [Installation Instructions](INSTALL.md)
* [API reference (single page)](https://drobilla.gitlab.io/zix/doc/singlehtml/)
* [API reference (paginated)](https://drobilla.gitlab.io/zix/doc/html/)
* [Test Coverage](https://drobilla.gitlab.io/zix/coverage/)
-- David Robillard