abel is an open-source collection of c++ library code. it designed to use c++ smartly.
- centos7 gcc-4.8+ ok
- macos llvm ok
For several years, I have planned to establish a repository to de-duplicate code from the projects either I have been involved in or I have paid close attention to (e.g.,open source) so that I would develop iteratively based upon the repository. I have tried the codes on many private projects and the applicability is verified. The repository , named after a mathematician as 'Abel', fortunately came out on Jan 1st 2020.
Since the inception, it's aimed to consolidate algorithms, data structures, system operations and make sure it's under control.
Particularly, the goals are:
- to have a library that has been well implemented and tested containing tools and algorithm.
- aim high modularity with reduced dependencies between modules.
- zero external dependencies.
- build on all platforms with c++, such as linux, mac, android, windows, mobiles.
- no warning and bugs on any platform and compiler.
- published interfaces are required to have full documentation, using case description,performance benchmark and evaluation.
- keep overhead down, compress overall size.
abel use cmake as build system. sample to build abel
compiler requirement
- clang version > 3.3
- gcc version > 4.8
- cmake version > 3.5(if you build benchmark) otherwise 2.8 is enough
build step
$ git clone https://github.com/gottingen/abel.git
$ cd abel
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make test
-
the base module contains code that other modules depends on. no extern dependencies.
-
the digest module contains md5, sha1, sha256 tools.
-
the filesystem module contain a C++17-like filesystem implementation for C++11/C++147/C++17
-
strings library contains string utilities, such as trim, split. also include a compatible version of string_view.