Author here. What a pleasant surprise to see this trending on the front page!<p>(I did post a Show HN at the time of the original release, <a href="https://news.ycombinator.com/item?id=33148540">https://news.ycombinator.com/item?id=33148540</a>, but it never gained traction.)<p>Just to answer some comments that I see:<p>1. This was absolutely <i>not</i> vibecoded!<p>I'd originally started with a different version control system and was still getting used to Git and GitHub at the time that I'd released this. (I was a latecomer to Git just because I <i>hated</i> the CLI so much.) It was easiest for me just to drop the whole thing as a snapshot in a single commit.<p>But my private repo for it actually started in May 2017, and it had 320 commits leading up to its release, all human-written.<p>For the v2.0 that I have in mind, I'm thinking of force-pushing to migrate the full development history to the public repo.<p>And finally I'll add that I'm a graphics engineer by education and career. Where would the fun be in vibe-coding this? :-) Oh, and this compiles down to just ~36KiB of object code on x86-64 last I checked. Good luck vibe-coding that constraint.<p>2. Why a single header with `#define CANVAS_ITY_IMPLEMENTATION`?<p>I was inspired by the STB header ibraries (<a href="https://github.com/nothings/stb" rel="nofollow">https://github.com/nothings/stb</a>) and by libraries inspired by those, all of which I've found very convenient. In particular, I like their convenience for small utilities written in a single .cpp file where I can just `g++ -O3 -o prog prog.cpp` or such to compile without even bothering with a makefile or CMake.<p>Since the implementation here is all within a single #ifdef block, I had figured that anyone who truly preferred separate .cpp and .h files could easily split it themselves in just a few minutes.<p>But anyway, I thought this would be a fun way of "giving back" to the STB header ecosystem and filling what looked to me like an obvious gap among the available header libraries. It started as something that I'd wished I'd had before, for doing some lightweight drawing on top of images, and it just kind of grew from there. (Yes, there was Skia and Cairo, but both seemed way heavier weight than they ought to be, and even just building Skia was an annoying chore.)<p>----<p>Since I mentioned a v2.0, I do have a roadmap in mind with a few things for it: beside the small upgrades mentioned in the GitHub issues to support parts of newer <canvas> API specs (alternate fill rules, conic gradients, elliptical arcs, round rectangles) and text kerning, I'm thinking about porting it to a newer C++ standard such as C++20 (I intentionally limited v1.0 to C++03 so that it could be used in as many places as possible), possibly including a small optional library on top of it to parse and rasterize a subset of SVG, and an optional Python binding.