Changes listed below. - add `tools::Sequence` and `tools::Pipeline` - add 0-copy `module::Adaptor` for efficient tools::Pipeline implementation - add `module::Binaryop`, `module::Unaryop`, `module::Reducer` - add `module::Switcher`, `module::Controller` and `module::Iterator` to support loops and conditional structures (if, switch, ...) - add the `hwloc` dependency for thread pinning in `tools::Sequence` and `tools::Pipeline` - implement clonable modules (required for automated duplication in `tools::Sequence`) - add a `status` `module::Socket` for each task automatically - add a priority during the binding of a `module::Socket` - add an `unbind` method to `module::Socket` - add BCH and LDPC decoding status - add FRA, BE, FE, BER and FER as output sockets for monitor BFER - add Multi-kernel Polar encoders and decoders - add `module::Extractor` to extract information bits in a codeword - add `module::Initializer`, `module::Incrementer`, `module::Sleeper` and `module::Finalizer` - add `module::Probe` for very precise feedback - add `module::Sink` (write end of a communication system into a file) - add `module::Subsequence` to regroup multiple tasks in a single one - add `tools::Interface` (clone, reset, set_n_frames, is_done, set_seed, ...) - add the C++ API doc in Sphinx (Doxygen + Breathe + Sphinx) - add an inter-SIMD implementation of the BCH encoder - add new code rates to DVB-RCS2 - add a `set_n_frames` method in the `module::Module`, `tools::Sequence` and `tools::Pipeline` - add native support of inter-frames (in the `module::Task`) - add a new socket CWD (codeword) to get the decoding status per frame - add the `operator[]` method for `string` in `module::Module` - add scripts (based on Clang AST) to simplify the automation of AFF3CT wrappers (Python, MATLAB) - add auto-stop feature in `tools::Sequence` and `tools::Pipeline` (based on the `is_done` interface) - add `tools::Digraph` (directed graph) - add a new `operator=` to `module::Socket`: sockets can be bound in both directions (SIN = SOUT or SOUT = SIN) - replace `tools::Noise` by a channel parameter (CP) socket in `module::Channel` and `module::Modem` - command Line Interface (CLI) has been externalized - split source code (`src/`) in public `include/` and private `src/` folders - simplify `tools::Interleaver`: no need to call the `init` method anymore - dockerize the CI/CD - fix a bug in the LDPC Gallager A decoder for irregular matrices - fix the bug on the majority vote of the LDPC Gallager B decoder - fix bug en the DVB-S2 constants (thx Ben Mathews) - fix Galois field segmentation fault - speedup the LDPC Gallager E (~x2) - remove SystemC/TLM interfaces - remove EXIT chart simulations - remove legacy simulation (without `tools::Sequence`) - remove SIN_SOUT socket type