Hi Silvio, My plan is the following: the python code compiles the master, the master compiles and runs block1. Here block1 is modified (we add a bunch of stuff before and after the code) before compiling. And the magic: block1 compiles block2, and runs it, etc.
The `-d:release` flags do many things. Generally it makes your code faster and less safe (no boundary checks, no assert, etc.) If we need a compiler plugin, then we will write it for ourselves, then we will try to convince people here to merge it to Nim :) If I remember correctly, we can override a type within a block. The type resolution does the same lookup technique as the variables. Your shadow variable example fails if we have multiple implementation of `f` (of course, with different signatures). This is valid in Nim, so we should somehow support it. Peter