C++ Complementary Library
C++ Complementary Library (CCL) is a C++ library that aims to complement the standard library. The purpose of CCL is not to reinvent the wheel, but to make developers be more productive in C++. CCL provides modern C++ APIs with beautiful HTML5 documentation. You can use it header-only or you can compile it and link your application with it dynamically or statically. It is made with CMake from the ground up, instead of using platform-specific Makefiles or IDE projects. It is written entirely from scratch in standard C++20 and so has no dependencies, making it a breeze to build and use.
CCL is made in C++20 and CMake from the ground up
CCL supports Windows, macOS, Linux and FreeBSD
CCL is open source and free for commercial use
With CCL you can read and write Unicode text in all encoding forms (UTF-8, UTF-16 and UTF-32) in both little endian and big endian order.
You can finally do I/O with the standard library's u8string, u16string and u32string.
You can iterate over Unicode strings and look at each character as a full code point regardless of the encoding form of the string. You can convert Unicode strings from any encoding form to any other. While full support for Unicode is not there yet, the features that are in are already very useful.
CCL sports its own I/O architecture. CCL currently lets you read from and write to files, strings and standard I/O. A future version of CCL will support reading from and writing to network sockets.
The screenshots below show the code above in action on Windows, macOS, Ubuntu and FreeBSD, showing how easy it is to portably print and read Unicode text in modern terminals. Just make sure your font supports the characters you wish to print or type in, and you're set.
The future will be much brighter if state-of-the-art technology is organized, free and easily accessible. The vision of CCL is to provide that foundation.
There are lots of features that aren't in the C++ standard library: 3D graphics. GUIs. Interpreters. Cryptography. Unicode. Databases. Networking. Compression. Machine learning. Computer vision. GPU compute.
C++ has all these features in one form or another. You can find C++ libraries that provide these features, but they are under different licenses, they adopt different stylistic conventions, they are built differently, some have poor documentation, some are proprietary and some are just wrappers of other libraries. CCL is here to end that mess.
The current version of CCL has significant support for Unicode and rudimentary support for desktop GUIs, both of which will still improve over time, but future releases of CCL will boldly tackle the other challenging features listed above.
CCL is made entirely from scratch and will never wrap third-party libraries, even if their license is compatible with CCL's license. The idea is to complement the standard library without compromises.
Martin Fowler once said "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." A less technical and more business-oriented way of saying that would be (these are my own words now): "Any fool can deliver results, most of the value is in how you do it." This is an important principle in CCL, it's not enough to wrap a third-party library and expose a high quality interface, the implementation must be just as polished.
CCL isn't offered under a restrictive license that no one can use, it is offered under a license that businesses don't have to think twice about.
CCL is still in Beta, and is not yet ready for use in production, but despite its early stage, CCL aspires to be much more than a library, CCL will be a pillar of the C++ tooling infrastructure of the 21st century. If you believe in CCL's vision for the future and want to support this work, consider sponsoring the development of CCL on GitHub Sponsors.
Copyright © 2022-2024 Daniel T. McGinnis