But ideally I want both.
This would of course be for development only, not for releasing.
To be fair it was 10+ years ago with a pretty crappy laptop even for the time. Hot code swap was super fast though!
If you have a massive codebase no matter how fast your compiler is, re-compiling is going to be slow. But hot code swap is even better in that you can keep any state around without having to set it up all over again.
In Java I could change a method implementation with the program running and as long as I didn't touch my class state it would just work. Re-compilation was slow, but hot code swap was _fast_ and I maybe did a recompile 3-5 times per day total.
Espresso goes further and doesn't only allow hot swapping but lets you write plugins that react to hot swaps of code:
https://www.graalvm.org/latest/reference-manual/java-on-truf...
If you use the Micronaut web framework then it will selectively re-initialize your app in response to hot swaps that need it. Pretty advanced stuff.