Kiwi is a small dynamically typed programming language.
It's far from done, but it's already got variables, loops and functions! Check it out on the Kiwi playground.
The interpreter uses a stack-based design and interprets the bytecode generated from the frontend.
Everything from the parser to the VM is hand-written.
undbg is a debugger written in Go with support for reverse execution. While running a program, it saves all machine state, allowing the user to go back and debug in the past.
Kiwi barely works but it already has a playground :) The user input is executed in a docker sandbox.
You can read the code here.