GNU Radio 4.0 OOT Module Porting Guide

Porting Guide for 4.0 Out of Tree Modules
Right now this is a placeholder with a series of notes and reminders, and not an actual porting guide

Zero Item Size Blocks

 * Head
 * Copy
 * Null Source
 * Null Sink

The parameter for item size has been moved to the end, and defaults to 0. This means the item size will be deduced from the connection of the previous block.

To make a block with a deduced item size, you need to get the size of items from the buffer object in the work function

Coding Guidelines

 * Use #pragma once instead of include guards

Kernel Namespaces
In-tree, things that can be separated from the block implementations have been placed (or should be placed) into the kernel library. This includes things such as filter or math routines, that are not blocks, but carry some computational function that could be useful by more than one block, or outside of GNU Radio altogether

The general namespace mapping of these objects is:

So when including things that used to just be at the module level, now live one level deeper

In python, this can be seen as

Number of Ports
With the io_signature concept promoted to port objects, there is no longer the option to have dynamic number of ports at connect time. The number of ports needs to be specified as a block parameter at instantiation.

This means for blocks like add, subtract, multiply, etc., the first argument is now the number of ports, rather than vlen