News for kodo-rlnc

This file lists the major changes between versions. For a more detailed list of every change, see the Git log.


  • tbd


  • Major: Upgrade to kodo-core 21
  • Minor: Copy the necessary header files during waf install to a common include folder inside the specified install_path. The installed header files are sufficient for using the standard kodo-rlnc codecs.


  • Minor: Changed the constructors of the API wrapper classes to protected. This allows adding extension layers on top of these wrappers.


  • Major: Upgrade to kodo-core 20


  • Major: Upgrade to kodo-core 19
  • Major: All mixin layers were moved to the detail subfolder.
  • Major: The perpetual codec was moved to the kodo-perpetual repository.
  • Major: All codec variants were merged into a single pair of wrappers that are called encoder and decoder. These classes implement a dynamic Payload API where the payload format can change. The user can select the full vector, seed or sparse seed format for the coding vector by calling the set_coding_vector_format function on the factory.
  • Major: The full_vector_recoder was renamed to pure_recoder.


  • Major: Removed the backward_full_vector_decoder.
  • Major: Upgrade to kodo-core 18


  • Minor: Updated the license to STEINWURF EVALUATION LICENSE 1.0.
  • Major: Upgrade to kodo-core 17
  • Major: Removed the sparse_full_vector_encoder. The full_vector_encoder exposes the set_density function, so this should be used as a replacement.
  • Major: Moved uniform_generator, seed_generator, check_partial_generator and the generator benchmark from kodo-core.
  • Major: Removed the sliding window codec. A more flexible implementation of this codec is available in the kodo-slide repository.
  • Minor: Changed the throughput benchmarks to always use the same set of random seed values in order to make the benchmarks more reproducible.
  • Minor: Changed the udp_file_sender_receiver example to use the new interleaver file coders.
  • Minor: Added the interaction_with_c example that demonstrates basic interoperation between the C and C++ code. The C++ wrapper can be customized to meet the user requirements.


  • Major: Upgrade to kodo-core 15


  • Major: Upgrade to kodo-core 14
  • Major: Created the kodo_rlnc static library that includes the common encoders/decoders defined in this project. The advantage of using the static library is that the coders are compiled only once. Note the kodo_rlnc_includes header-only target is still available, this can be used to assemble custom coder stacks as before.
  • Major: Restructured the generic unit tests and benchmarks to work with the new high-level API wrappers.
  • Major: Replaced all encoder/decoder stacks with high-level API wrappers that hide all implementation details from the user. The API wrappers provide the same public functions as the original stacks.
  • Major: Removed the fragmented interfaces in src/kodo_rlnc/api.
  • Major: Upgrade to kodo-core 13
  • Minor: All examples are modified to use shallow storage.
  • Major: Modified the random_annex_decoder and the full_vector_recoder to work efficiently with shallow storage components.
  • Major: All stacks use shallow storage by default. The separate stacks with the shallow_ prefix are removed. Deep storage will only be available in custom stacks.
  • Major: The finite field template parameter becomes a run-time parameter, so the same coder stack can work with multiple field implementations. The actual field is selected as the first parameter of the coder factory.
  • Minor: Added the udp_file_sender_receiver example to demonstrate how to send and receive a file over a UDP socket with some redundancy.
  • Minor: Added a benchmark to measure the throughput for processing multiple block using the object and file coders.
  • Minor: Added encode_decode_separate example.
  • Minor: Added encode_decode_seed example.
  • Minor: Added minimal_overhead example.


  • Major: Upgrade to kodo-core 9


  • Minor: Added tests to ensure wire-format compatibility.
  • Minor: Added the kodo_core::nested_set_seed layer to the decoders that support recoding, so it is possible to generate reproducible recoding coefficients. This is important in a wire-format test.


  • Major: Upgrade to waf-tools 4
  • Major: Upgrade to kodo-core 8
  • Minor: Upgrade to gauge 11
  • Minor: Upgrade to stub 6
  • Minor: Upgrade to gtest 4
  • Minor: Added symbol_status_updater example.
  • Major: Update to kodo-core 7.
  • Major: Added locking policy to factories to allow multi-threaded applications.


  • Major: Update to kodo-core 6.
  • Patch: Adding missing comments for recoder_write_symbol(...)
  • Patch: Add unit test for “dirty buffers” when using recoder_write_symbol(...)


  • Major: Updated kodo-core to version 4.
  • Minor: Updated internal dependency stub to version 5.
  • Major: Redesigned full_vector_recoder to support the symbol en/de-coding API.
  • Minor: Added examples/pure_recode_symbol_api.


  • Patch: Set the systematic flag in the decoding_probability benchmark after the coder instances are initialized.
  • Minor: Added the block_encode_decode_with_coefficients example that shows how to use the block coding API with user-defined coefficient matrices.
  • Minor: Added the hello_kodo example that shows how to include kodo-rlnc in a standalone project that uses the waf build system.
  • Minor: Added examples/encode_decode_using_coefficients example showing how to use the API with direct coefficient access. Using this approach the we have full control over where coefficients are stored, however we also have to manage things such as systematic symbols ourselves.
  • Minor: Removed channel losses in count_operations benchmark that incorrectly doubled finite field operations of encoders.
  • Minor: Adding example examples/define_custom_generator which allows an user-defined generator to be used in a pre-defined stack.
  • Major: Upgrade to kodo-core 3.


  • Major: Upgrade to kodo-core 2.
  • Major: Renamed the kodo::rlnc namespace to kodo_rlnc.


  • Initial release based on Kodo 34.0.0