Puffins is my personal coding framework.
It is written in simple C99, does not use stdio.h or stdlib.h, is data-oriented, and favors an understanding of the problem domain over abstractions.
Code is kept in a single header file, and building is handled by a shell script.
👀 view source code ↗
📖 read api docs (doesn't work properly in safari)
Once I'm happy that a feature is suitably generic, I implement it and write comprehensive tests. Many things are in progress...
- Configurable building via shell scripts.
- Assertions.
- Logging.
- Profiling.
- Bitsets.
- Memory allocator.
- Data-oriented array operations.
- Command-line argument parsing.
- OS abstractions.
- CPU Endianness, core count, & L1 cache size queries.
- String formatting.
- UTF-* validation & conversion.
- Natural string sorting.
- OpenGL 4.1 declarations & loader.
- Splines & interpolation.
- Documentation generator.
- Linear algebra for 2D & 3D graphics e.t.c.
- DSP algorithms.
- Concurrent job system.
- puff format parsing & conversion.
- puff conversion command line tool.
- puff Blender plugin.
- Sockets.
- Serial Ports.
- Text layout, shaping, & rendering (using icu4c, harfbuzz, & freetype2).
- UI system with explicit 2D rendering.
- Windows and macOS icon embedding.
- Apple code signing, .dmg packaging, and notarisation.