I've been having issues with compiling Arturo with the latest Nim version and finally I managed to at least spot one piece of code that behaves weirdly.
The piece of code in question (along with different debugging `echo` statements) is this: <https://github.com/arturo-lang/arturo/blob/upgrade-to-nim-2.0.0/src/vm/stack.nim#L65-L73> which gets called from here: <https://github.com/arturo-lang/arturo/blob/upgrade-to-nim-2.0.0/src/vm/lib.nim#L266> (The `require` template is actually embedded in a `proc` that gets called at runtime: <https://github.com/arturo-lang/arturo/blob/upgrade-to-nim-2.0.0/src/vm/lib.nim#L108>) Now, the whole thing was working flawlessly before; now it doesn't. And, while try to look into the produced code, I'm seeing this: // debugEcho "requires >= 1 param" echoBinSafe(TM__IPU5x6F5i1TFKZ7WkUj8KQ_14, 1); // let x {.inject.} = move stack.pop() // let x {.inject.} = move stack.pop() // let x {.inject.} = move stack.pop() // debugEcho "popping..." echoBinSafe(TM__IPU5x6F5i1TFKZ7WkUj8KQ_16, 1); // SP -= 1 SP__vmZstack_u8 -= ((NI)1); x = Stack__vmZstack_u7.p->data[SP__vmZstack_u8]; // debugEcho "popping..." echoBinSafe(TM__IPU5x6F5i1TFKZ7WkUj8KQ_16, 1); // SP -= 1 SP__vmZstack_u8 -= ((NI)1); // obj = default(typeof(obj)) eqwasMoved___vmZvaluesZvalue_u2216(&Stack__vmZstack_u7.p->data[SP__vmZstack_u8]); Run (which clearly calls `pop`, twice!) What is going on here? Is there anything specific related to the latest release that you can point me to that could be the possible culprit?
