5 ms·
This kind of thinking hasn't made its way to iPhones. When it's auto-updating an app I'm not allowed to open it (separately, it seems optimized to start updatin
by mortehu 5y ago
This kind of thinking hasn't made its way to iPhones. When it's auto-updating an app I'm not allowed to open it (separately, it seems optimized to start updating an app moments before I'm about to open it).
- mschuster91 5y agoThat's the case with all mainstream operating systems. You can't go and change a program's binary data while it is running without blowing stuff up. As a result, Windows locks executable files for write/delete upon startup and releases the lock upon exit of the last usage, and unixoid OSes warn you to restart applications after an upgrade. The only environment other than maybe mainframes that supports hot reloading is Java and that has limitations.
- Denvercoder9 5y ago> You can't go and change a program's binary data while it is running without blowing stuff up. Linux has zero problems with you overwriting a binary (by unlinking and replacing it) while it's in use. Sure, the old version will keep running, but it doesn't prevent the update, and you'll get the new version when you restart it.
- Someone 5y agoIf you have to update multiple files (say the main executable and a few shared libraries that it may only load when it needs them), you’ll need a transactional file system. Even then there’s still downtime when you restart the executable (could be seconds, but also minutes). Preventing that is possible, too (even on a single machine), but the cost often doesn’t make it worth it. And nitpick: I think you know it, but for others: “unlinking and replacing” is essential. “Overwriting” (keeping the inode number the same) can be problematic.
- teddyh 5y ago> “unlinking and replacing” is essential. “Overwriting” (keeping the inode number the same) can be problematic. Yes, that is why /usr/bin/install exists.
- krageon 5y ago> That's the case with all mainstream operating systems No, in Android you can keep using the app right until the actual swap happens. Then the app restarts (and presumably a symlink is put in place in between). In practical terms this is zero downtime.
- dnet 5y agoErlang supports hot reloading by design with no limitations. There can even be some threads using the old and some using the new version simultaneously. It was designed for phone exchanges where they aimed for 9 nines of availability. You can install it on most mainstream operating systems.
- bregma 5y ago> That's the case with all mainstream operating systems. That the case with a mainstream operating system. Only one. All the others can count uptime in years even with regular application updates.
- mschuster91 5y ago> All the others can count uptime in years even with regular application updates. Every major Debian/Ubuntu upgrade asks me for restarting services due to a libc upgrade and warns of potential instability as a result of not doing a restart. Not to mention upgrading systemd, which tends to require a reboot.
- scheme271 5y agoIt depends. linux requires reboots if you update the kernel (kexec and kpatch are still experimental) and you should probably reboot if you update libc or other similar system software. I don't think any mainstream allows kernels or system software to be updated on the fly and without a reboot.