Blog
CCL Launched!

Published on December 9, 2022.
Written by Daniel T. McGinnis.

Allow me to introduce myself. My name is Daniel McGinnis. I am the creator of C++ Complementary Library, or CCL for short. Today is a very special day because it marks the official launch of CCL. This is a C++ library that I've been working on and I hope someone finds it useful.

Here are some cool things to know about CCL.

It's Free

CCL is free, licensed under the Boost Software License. There's no need to create some weird account or give your e-mail address, there's no form you need to fill out. You just download it and use it.

It's Useful

CCL is still being actively developed but the first version already has a ton of support for Unicode and I/O. With CCL, a lot of tasks that involve Unicode are very easy to accomplish, like portably reading and writing UTF-8, UTF-16 and UTF-32 in both little endian and big endian order. CCL essentially makes std::u8string, std::u16string and std::u32string as useful as std::string, meaning you can reliably use these Unicode string types throughout your codebase knowing that all three of them will work as intended. Say goodbye to using hacked UTF-8 std::string and say hello to embracing std::u8string with the confidence and peace of mind that Unicode will Just Work.

CCL tries not to reinvent the wheel but it does have its own I/O architecture, which lets you read and write files (like std::fstream) and strings (like std::stringstream) and standard I/O (like std::cin and std::cout) because I believe there is room for improvement over what the standard library provides in terms of I/O.

It's Easy to Use

If you've ever used a C++ library before then you might've had the same experience I had where you spend like a whole day trying to figure out how to build the library and link it with the application you're developing. This is especially difficult when the library you're trying to get set up depends on other third-party libraries that themselves need to be properly built and found. CCL on the other hand doesn't have any dependencies, and you can compile it with CMake or use it header-only. To compile CCL, it couldn't be easier. Just run:

cd ccl
mkdir build
cd build
cmake ..
cmake --build . --config Release

Of course, you can use the -G flag to specify your desired generator.

It's Easy to Learn

Here on CCL's website, if you click on the 'Documentation' link at the top, you will be able to access the API reference and a free introductory book about CCL. The book gently introduces the reader to CCL and gives a solid understanding of the fundamentals of the library, serving as a good first step, whereas the API reference gives detailed information about the API, things like what each class represents, what each function does and what the parameters mean, etc. These two learning resources give you everything you need to get started and be productive with CCL.

It's Cross-Platform

CCL is designed for and tested on most major operating systems. For now the list is Windows, macOS and GNU/Linux, but I will add support for the BSDs in the future.

It's Business-Friendly

CCL doesn't depend on third-party libraries. It's not like CCL has a few permissively licensed dependencies that are like *really* easy to comply with -- No, CCL was made from scratch and the whole thing is covered by a single license, so if you're a company then your lawyers are going to like not having to go through a ton of different licenses to know whether it is safe to use CCL in your product. CCL is licensed under the Boost Software License, which lets you use CCL for free, even to develop proprietary software.

It's Inspired by the Greats

CCL takes a lot of inspiration from Boost and Qt. The license is the first similarity CCL has with Boost, but CCL's stylistic conventions are also similar to Boost's, using snake case for most names, Pascal case for template parameter names, and the .hpp extension for header files. The way CCL packages are named is similar to how modules are named in Qt, for example CCL Core and CCL Unicode. CCL's documentation also draws inspiration from the fantastic documentation that Qt provides, where you have not only information about specific functions and classes, but also documentation that ties everything together and gives a holistic view of how to use the library.

It's Still in Beta Though

The cool stuff about CCL ends here. While CCL is an awesome library (and I promise that it is), it's still early in development. There is a bright future for this library but for now it's still in beta. I understand that that is a turn-off for most people, but fear not, a stable release is in the works. It might take a while though because I work on this project in my free time, which isn't as abundant as I would like. The sooner I get funding, the sooner a stable release will come out. With no funding at all, I expect CCL to remain in beta for about a year.

Wrapping Up

Thank you for taking the time to check out CCL. If you like this project and want to support it, consider donating. To do so, click on the 'Donations' link at the top of this website and then click on the link to CCL's GitHub Sponsors page, and choose a tier. Donations are of course purely optional and I am extremely grateful for every donation I receive. If I reach a certain amount of monthly income through GitHub Sponsors, then I will be able to work on CCL full-time, and that will speed up development significantly.

This first version of CCL doesn't have all the features I want it to have, but I am actively developing it and it will certainly improve and expand over time. CCL is a very ambitious project, and I plan on adding all sorts of new features to it in the future. Basically, any useful feature not available in the C++ standard library is on the table, hence the name C++ "Complementary" Library.

I'm going to release a new version of CCL every 2 or 3 months, so if you don't see any news on CCL in a while, just know that new stuff is still cooking. I will publish a blog post for every release, highlighting what's new. To keep expectations reasonable, just remember that CCL is a volunteer project, and though great things are coming, if funding arrives then you can expect great things sooner. If your company is heavily invested in C++ and you wish to sponsor the development of CCL then just know that now is the best time to become a diamond sponsor because the first 6 diamond sponsors will have their logos displayed not only at the bottom of every page of libcmp.org, but also at the top of every page, giving them significantly more exposure.

That does it for now. Keep being awesome!



Copyright © 2022-2025 Daniel T. McGinnis

CCL was first published in 2022, and is still actively maintained.

This website was first published in 2022, and is still actively maintained.

This specific web page was first published in 2022.