For example, any update safety check limits the scope of updates to updates which pass that safety check.
The mechanism used to transform code and state influences what kinds of updates a system will support.
In computer science, dynamic software updating (DSU) is a field of research pertaining to upgrading programs while they are running. However, researchers have developed a wide variety of systems and techniques for implementing DSU.
These systems are commonly tested on real-world programs.
These systems contain a main machine and a hot spare.
The hot spare would be periodically seeded with a checkpoint of the primary system.
Examples include checkpointing, dynamic linking, and persistence.
As an example, a database that must be backward-compatible with previous versions of its on-disk file format, must accomplish the same type of state transformation expected of a dynamic updating system.
Systems designers can extract valuable performance or safety assurances by limiting the scope of updates.The earliest precursor to dynamic software updating is redundant systems.In a redundant environment, spare systems exist ready to take control of active computations in the event of a failure of the main system.In some systems, such as Up Stare and Po LUS, an update can occur at any time during execution.Ginseng's compiler will attempt to infer good locations for update points, but can also use programmer-specified update points.While these analyses prove properties of programs that are valuable for DSU, they are by nature sophisticated and difficult to understand.DSU systems that do not use a static analysis might require use of a specialized compiler.Academic publications of DSU systems commonly include several target programs as case studies.vsftpd, Open SSH, Postgre SQL, Tor, Apache, GNU Zebra, memcached, and Redis are all dynamic updating targets for various systems.Presented in 1983 in the Ph D dissertation of Insup Lee, DYMOS was a fully integrated system that had access to an interactive user interface, a compiler and runtime for a Modula variant, and source code.This enabled DYMOS to type-check updates against the existing program.