>>106918897
This is actually standard practice (or should be) in the real-time community.
>avoiding goto and recursion
>all loops must have fixed bounds
This is to bypass the halting problem and allow for better compatibility with static worst-case execution time analysis tools

>avoid heap allocation after init
again, a real-time system constraint. Decreases the state space for analysis tools and analysis becomes easier when everything is pre-allocated memory

>assets
For verification purposes, again, using a static analysis tool

>simple macros, minimum scope, no func pointers, check returns
security concerns