You can use partial eval to convert interpreters to compilers! https://en.wikipedia.org/wiki/Partial_evaluation#Futamura_projections (I imagine AST-walking interpreters work best here)
miniblog.
Related Posts
TIL Tcl has a notion of 'safe interpreters', a mode where you can run untrusted code in a sandbox: https://www.tcl.tk/man/tcl8.4/TclCmd/safe.htm
Not many programming languages have this, but it's way safer to include in the implementation than try to build as a userland library.
Implementing interactive languages, and the tradeoffs of interpreters, JIT compilers, and AOT compilers:
On storing ASTs in flat arrays for performance, and the relationship with bytecode interpreters: