Fri 23 February 2024

🎠 Sane C++ February 24

SC

Two months have passed since the initial release of Sane C++ Libraries! 🎉🎉🎉
This post collects all relevant events happened during the second month of (public) life of the project.

📄 Sane C++ Libraries Documentation
💻 Sane C++ Libraries Repository
📹 Sane Coding Youtube channel
💬 Sane Coding Discord

Code#

Code is always the most important news!👨🏻‍💻
Continuing giving Linux some love!! 🐧

SC::Async got an io_uring Linux backend!
SC::Async epoll backend got simplified
SC::Async now tracks all active requests to mark them as free on a sudden close requests.
SC::Async got all private implementation details hidden under a compiler firewall
SC::Async can now use SC::ThreadPool to run some async ops
SC::Async AsyncFileRead / AsyncFileWrite are now fully async also on buffered files
SC::ThreadPool has been added, to allow running tasks in background
✅ Got CI building and running tests on Windows, Linux and macOS (using Github Actions).
✅ The CI also enforces proper formatting through clang-format.
✅ Fixed a few UB and leaks signaled by gcc UBSAN and LSAN on Linux.
✅ Improved documentation for Building as an User vs Building as a contributor

Github Releases#

I have started creating Github releases tagged with each month.
I'm not planning to do semantic versioning for now, just sticking to year-month release tagging.

Hacker News#

The Library has been posted to Hacker News bringing some visibility on the project for a few hours. The discussions / comments are also quite interesting, sparkled by the many opinionated and strong decisions / principles of the library.
I've tried answering some of the posts, and it has been fun honestly 😁.
Some themes:
  • You shouldn't be writing C++ libraries without the standard library / exceptions / smart pointers
  • Qt / POCO exists and provides everything you need
  • Writing Builds in C++ is not Sane
  • You should implement all containers that exists in the STL
My favorite comment is this one:

Github#

As of today, the Sane C++ Libraries has got 419 ⭐️ stars ⭐️ on Github ().
A big jump from the 187 stars of last month!
A big step has been due to the hacker news post, but in the subsequent weeks there has been a steady and horganic increase, hopefully meaning that more people are finding something interesting in the project.

YouTube #

I have been producing 5 videos explaining some of the design decisions around the SC::Async library, the addition of io_uring to it, the creation of SC::ThreadPool and how it has been used to do proper Async File I/O also for buffered files (that always act synchronously under most async APIs, excluding io_uring...)

Next#

So what's next?
I'm not really sure. One thing I would like to experiment with is a stb style wrapper for some of the libraries, to make them usable from C.
Thank you for reading this far!

Bye!👋🏼
Pagghiu