Microsoft reverses controversial .NET change after open source community outcry
theverge.com
theverge.com
After all, you end up with a process that runs code from after your change but using heap memory, threads, file handles and other resources from before your change. Even if the process doesn't crash, this puts it in a unique state that will be irrevocably lost when the process is terminated.
Usually, the industry moves towards more determinism and reproducibility in build processes. Hot reloading seems to go in the exact opposite direction.
Currently the generic class limitation impacts me severely and I still have to restart the program too often for my own liking, unfortunately. Otherwise it works pretty well.
Example:
A class has a private read-only field int foo that can take any value and a DoStuff() method which uses foo's value.
Now the constructor is hotswapped to validate that foo > 5 and DoStuff is hotswapped with an implementation that also assumes foo > 5.
This is all good for new objects created after the hotswap - however calling DoStuff on objects created before the swap (which might have foo <= 5) is unsafe.