On Thursday, 27 February 2025 at 09:24:59 UTC, Lewis wrote:
- Support for DLL-based hotswapping. This required piping a few
calls in the DLL's druntime/phobos over to the EXE's druntime
(eg. using a GC proxy, thread management). Also, a couple small
changes to stuff like the GC initialization in the DLL so the
proxy gets set up correctly. This was completely worth it, DLL
hotswapping is a gamechanger, just a massive improvement to
iteration time. My changes are a tad hacky, but the release
build of the game skips the DLL and links everything
statically, so any bugs from this hackiness are debug-only.
Obligatory link to talks Manu and myself did on this topic:
https://www.youtube.com/watch?v=Jf7dvOWjLpU
https://www.youtube.com/watch?v=7YjLW7anNfc
https://www.youtube.com/watch?v=nro3txFndbM
https://www.youtube.com/watch?v=Aj9_Mb6wQV0
And yeah, being able to switch between release optimised binaries
and debug binaries at runtime is one of the key advantages over
something like Live++. Ultimately, treating code as data and
making it just another asset in your engine's pipeline is 100%
the way to go.