Abscom¶
Abscom is a C11 library of reusable data structures and platform utilities, plus a Python-inspired dynamic runtime for scripting-style C programs.
- Zero third-party C dependencies — just the standard library, plus
ws2_32on Windows. - Dynamic array, growable string, hash functions, and an open-addressing hash map.
- Monotonic/wall-clock time and simple file I/O helpers.
- Runtime:
varvalues, lists, dictionaries, sets, JSON, random utilities, functional helpers, and a light object system. - Scientific & AI/ML: matrices, statistics, general math (number theory, geometry, complex numbers), CSV, threading, plus activations, softmax, MSE loss, and numerical gradients.
- Data science: NumPy-style reshaping and generators, Pandas-style CSV, functional utils, one-hot encoding, and train/test splits.
- Ultimate: computational backends (AVX/GPU), scalar autograd, PPM vision and convolution, plotting, and a mixed-type DataFrame.
- Spatial math: modern type aliases, anonymous-union 2D/3D/4D vectors, fixed-size matrices, and quaternions.
- Macro utilities: min/max/clamp, interpolation and smoothstep curves, generic swap, array/struct introspection, bitwise and alignment helpers, and AI activation macros.
Get started¶
| Getting Started | First steps and a walkthrough. |
| Installation | Install via the one-line installer or build from source. |
| Core library | Common macros, dynamic arrays, strings, hashing, hash maps, time, file I/O. |
| Runtime | Lifecycle, literals, lists and ranges, dictionaries, sets, JSON, and more. |
Quick look¶
#include "abscom/abs.h"
int main(void) {
abs_init();
var nums = List();
append(nums, v(10));
append(nums, v(20));
append(nums, v(30));
print(v("Sum:"), sum_val(nums));
abs_cleanup();
return 0;
}
Expected output: Sum: 60.
One-line install¶
Windows (PowerShell):
Linux and macOS:
See the full README on GitHub for the complete feature list and examples.