M8, I'm not sure you'll get a lot of people to use this. I used to write in assemblers, qbasic, gwbasic, Pascal and derivatives, C and derivatives and so on, and so forth. I gave up after the first part and just skimmed the rest for relevant parts.
The only thing I can advise from what I saw in that snippet from that other thread is dropping this last statement as return value madness. Use an explicit return keyword. Because otherwise just one even marginally hasty edit turns
$::meme<%({argc: u32 argv: i32[2]} i32 ->
sprudo: i32.
sprade: i32.
sprudo = argv[0] + argv[1].
argv[0]++.
argv[1]--.
sprade = argv[0] - argv[1].
sprudo * sprade.
).
into complete fucking nightmare
$::meme<%({argc: u32 argv: i32[2]} i32 ->
sprudo: i32.
sprade: i32.
sprudo = argv[0] + argv[1].
argv[0]++.
argv[1]--.
sprudo * sprade.
).
Or even
$::meme<%({argc: u32 argv: i32[2]} i32 ->
sprudo: i32.
sprade: i32.
sprudo = argv[0] + argv[1].
argv[0]++.
argv[1]--.
sprade = argv[0] - argv[1].
).
or just
$::meme<%({argc: u32 argv: i32[2]} i32 ->
sprudo: i32.
sprade: i32.
sprudo = argv[0] + argv[1].
argv[0]++.
argv[1]--.
).
>b-but I'll check for every possible pitfall!
>it'll be memory-safe like rust
It seems like you've at least studied writing of compilers as part of your uni course, maybe even wrote something simple. My advise would be to stop reinventing the wheel for the billionth fucking time.