Other than Lisp, is it possible to do this in other languages?

Any language running on the JVM (Java, Kotlin, etc.) and CLR (C#, VB.NET, etc.). As long as you don't compile directly to native code and you aren't running in a locked-down environment where codegen is disabled, you can generate code at runtime and execute it alongside existing code.

For example, there's java.lang.reflect.Proxy [1] and System.Reflection.Emit [2].

[1]: https://docs.oracle.com/javase/8/docs/technotes/guides/refle...

[2]: https://learn.microsoft.com/en-us/dotnet/api/system.reflecti...

Several! You're correct that Lisps is the most famous, and there's also languages like Erlang that have this as a core functionality. But it's also used in things like game engines for C/C++. You do have your "updateAndRenderFrame()" function in a dynamic library, having it take a pointer to the full game state as an argument. When you want to reload, you recompile your dynamic library, and the main loop can swap out the implementation, and the game keeps running with the new code. I don't see a reason why you couldn't do this in Rust, though I imagine it's trickier.

And don't forget smalltalk!