# DLibC ## Description Some custom C types and functions I often use. These are generally header-only, but if they have source files, they'll be in their own directories They're generally designed for C23 onwards, but "should" work with older versions. The goal is for the types themselves to be memory-safe, however keep in mind that they're still only as good as your usage of them. ## Usage Literally just copy the header file you want and let your favourite semi-usable build system do the rest. ## List of "What we have" - `dlibc/vector.h` - A vector type for storing a dynamic amount of type T, with an optional destructor. - `dlibc/set.h` - A set type for storing a dynamic amount of type T, with enforced uniqueness and an optional destructor and comparator. ## Contributing If you want to contribute, please make a pull request and I'll review it. If you want to contribute a new type or function, please make sure it is useful and not just a "cool" thing. If you change an existing type, please run **make** in *build/* directory and **ctest** to ensure compatibility hasn't been broken. Since the whole point is memory safety, please also run the suite with the sanitizers before opening a pull request: ```sh cmake -S . -B build-asan -DDLIBC_SANITIZE=ON && cmake --build build-asan ctest --test-dir build-asan --output-on-failure ``` Use `ctest -V` to see every individual assertion, and `-DDLIBC_C_STANDARD=23` to build against C23 instead of the default C11. If it's new, please write a **test** for it in *tests/test_.c* so others can see the guidelines on how the type is used. The tests use a tiny in-tree harness, *tests/dtest.h*, which is just a list of named cases and some `CHECK_` macros - there is no external framework to install. ## Legal Mumbo Jumbo Licensed under the MIT License (because GPL doesn't make sense for this (sorry Stallman)) Copyright (c) 2026 DcruBro