TOOL

A kitchen sink function-oriented standard library to simplify development and cut compile times in C++ game software.

Made for projects that distance themselves from the monolithic language standard libraries, the library is built for simplicity and real usability in game software. TOOL is the newer standard library of mine, more or less replacing the object-oriented CHSL. In recognizing that good low-level software strives to be simple to maintain both performance and modifiability, TOOL aims to break down the most common and useful software tools into digestible functional interfaces.


The Tired-Of-Objects Library, or TOOL, is a constantly evolving multi-platform function-oriented standard library built for performance, simplicity, and flexibility. The library was born out of dissatisfaction with much of modern object-oriented design, along with the massive C++ standard libraries that follow. While these massive and feature-rich libraries naturally serve an important purpose, having a simpler, more direct alternative for all of the most common functionality serves to streamline and speed up development. From these feelings spring a desire for something better, and more suited to my needs and the needs of my peers.

Headers are intentionally built short, simple, and straight-forward. This works in a low-level software developer’s favor for a number of reasons.

  • It cuts down the horrendous compile times often experienced with the humongous templated C++ standard library includes to near-zero. Wanting a translation unit to act on a string of text should not require an extra second on every compile.
  • It simplifies error logging, as functionality is more specific and less templated. The smallest perceivable error in a call to std::format or std::regex_search can produce a short novel for you to read through, a waste of time if there ever was one.
  • It self-documents the functionality through a legible and digestible interface. Following a #include <string> link to the source file seldom provides enlightenment on anything. Well-designed code can benefit from, but should not require, extensive commenting or documentation to be comprehensible.
  • It breaks down the humongous array of esoteric utilities made available through large modern standard libraries into the most core constituent parts. Performance-oriented programmers often strive to optimize their software and understand its workings, not pray to higher powers that the standard library becomes the bottleneck.