- 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