RLIB
Collection of frequently used C functions by me.
It contains
- An advanced benchmark system.
- An alternative to printf supporting printing of time between messages for e.g. benchmarking. and colors.
- Super fast tree map (much faster than hash table).
- Stdout redirection.
- Terminal progress bar.
- Multi purpose lexer.
- Custom malloc for counting allocations and free's.
- Simple test library that works like assert that also checks memory if rmalloc is used and creates summary and provides exit code.
- Several time functions supporting nano seconds.
- Several math functions for if not available by std (on termux for example).
- Arena blazing fast memory.
Extensive tested and benchmarked
All files get merged together to one file called rlib.c that can be used as a header file.
The result is a single header framework.

ENVIRONMENT VARIABLES
Disabling color
Set env RDISABLE_COLORS = 1 to disable color on stdout. stderr will still have colors for gui.
Compiler and Flags
CC = gcc: Specifies the C compiler (GCC).CFLAGS = -Wall -Wextra -Ofast: Compiler flags:-Wall: Enable all warnings.-Wextra: Enable extra warnings.-Ofast: Optimize for speed.
LDFLAGS = -lm: Linker flags to link with the math library.
Main Targets
all:
Runs the following steps in sequence:
- Testing (
test_*targets). - Formatting code (
format_all). - Building the project (
build). - Installing executables (
install).
format_all:
Runs clang-format to format all .c, .h, and .cpp files in the directory.
build:
Builds the rlib shared library (librlib.so) and an executable rlibso that uses this library:
- Compiles
rlib.cintolibrlib.so. - Compiles
rlibso.clinking it withlibrlib.so. - Runs the
rlibsoexecutable.
install:
Installs the rmerge and clean executables to /usr/bin using sudo.
Testing Targets (test_*)
Each test_* target follows these steps:
build_*:
Compiles a specific .c file into an executable in the ./build directory.
run_*:
Runs the corresponding executable.
Example for rlexer:
build_rlexer:Compilesrlexer.cto./build/rlexer.run_rlexer:Runs./build/rlexer.
Backup
backup:
Compresses the source files, Makefile, and additional project files into a rlib.rzip archive.
Special Cases
test_rbench_cpp:
Builds and runs a C++ benchmark program:
- Compiles
rbench.cppalong with other necessary files. - Runs the resulting executable.
Other Targets
format_rlib_c:
Specifically formats the rlib.c file.
build_*:
Targets that compile source files into executables.
run_*:
Targets that run the compiled executables.