Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> It's an interesting problem. Live updates without requiring a restart is going to be a complex task, how do you reload a library in use by a program without crashing it?

Well, how do Linux and other unices do that?



They don't, the program keeps using the old library until it's restarted. Some Linux distributions restart daemons when they or their dependent libraries are updated, but that can't be done for desktop software. Firefox sometimes notices it's been updated and pops up a warning with a "Restart Firefox" button (which keeps the session state), though AFAIK it's only for updates to Firefox itself, not for any of the libraries it might have loaded.

If you never restart a Linux desktop (or at least log out), you will be running outdated libraries, even if you run updates in the background.

(The best solution would be what Android does, where every program is supposed to know how to checkpoint itself, and they are forcefully restarted on a upgrade, transparently to the user. But even there, updates to system libraries still require a full reboot.)


I believe this is solved by NixOS, by the way.


software: can upgrade binaries and libraries without affecting already running programs

services: they are specifically designed to be updated and restarted

kernel: https://en.wikipedia.org/wiki/Ksplice


> services: they are specifically designed to be updated and restarted

I write plenty of daemons (you call them "services"). What exactly do I write specifically for them to be able to continue to run when a library is upgraded?


Sorry, I meant things like dependency management among services.

I don't think systemd supports what you are asking but it shouldn't be too hard to write a service that restarts other services if their shared libraries change?


https://github.com/liske/needrestart is quite useful. It even has heuristics for updates to Python code, Java classes...


Nothing. They just keep using the old version of the lib and thus potentially vulnerable.


Yes, but they continue to run while the library is being updated. That's the point. They can get restarted once the update process finishes, which takes a lot less time than be shut down, wait for update, and be started again.

From what I know, Windows doesn't allow a library to be replaced until it's not used by anything, which is more intrusive and is IMO the root cause (though indirect) why people hate updating Windows.


    gcc --static




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: