Method and apparatus for updating software libraries
AssigneeNone recorded
InventorDominic Duggan
Life of this patent
Estimating the term…
Loading patent…
AssigneeNone recorded
InventorDominic Duggan
Estimating the term…
A method for hot swapping software libraries with dynamic version changes is provided. A sub-type relationship is defined between objects of an existing software library and an updated software library on a computer system, and optionally, subtype relationships are defined between objects of the updated software library and the existing software library to provide backward compatibility. A version adapter is defined for adapting objects for use by the updated software library, and stored in a table of version adapters. The updated software library replaces the existing software library. Existing client threads can continue to pass objects to the updated software library without experiencing a loss of service. Objects incompatible with the updated software library or the existing software library are identified at run-time, and a query is performed into the table of version adapters. A version adapter is retrieved from the table, and applied to the incompatible objects to produce proxy objects having values expected by the software libraries and compatible therewith. The software libraries access the proxy objects to provide continued service to the threads.
A method for updating software libraries comprising:
A method for updating software libraries comprising:
A method of adapting a superclass object for use by subclass code comprising:
A method of preparing an updated software library for hot-swapping in a computer system comprising:
A method for updating software libraries comprising:
A method for adapting objects for use by updated software libraries having n versions X1, . . . , Xn+1 comprising:
A method for updating software libraries having n versions X1, . . . , Xn+1 comprising:
A method of allowing a version X object to access version Y code comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
Backward citations are indexed for grants only.
Interprogram communication: via adapters, e.g. between incompatible applications
Updates: while running
Execution paradigms, e.g. implementations of programming paradigms: object-oriented
Computing and data processing
Term end not estimated
1. Field of the Invention
The present invention relates to supporting updates in software libraries, and more specifically, to a method and apparatus for updating software libraries with dynamic version changes.
2. Related Art
Other important objects and features of the invention will be apparent from the following Detailed Description of the Invention taken in connection with the accompanying drawings in which:
FIG. 1a is a diagram showing an example of a library update procedure and resulting class, object, and thread interactions achieved by the prior art.
FIGS. 1b and 1c are diagrams showing examples of prior art interactions between inherited superclass code and subclass objects occurring after the update of FIG. 1a.
The present invention relates to a method for supporting dynamic version changes for hot-swapping of software libraries. Objects produced by a first version of software can be dynamically and lazily adapted (i.e., objects are only adapted if and when necessary) for use by later versions of software, so that client threads accessing the objects and the later versions of software do not experience a disruption in service. The methodology of the invention allows for version changes in software beyond the inheritance paradigm of present object-oriented languages, since inheritance only provides for limited version changes and only allows old versions of software to access new version objects. Further, the methodology allows new methods and interfaces not provided with legacy objects to be used by the legacy objects.
FIG. 2 is a diagram showing the methodology of the present invention, wherein an object adaptation operation and a table of version adapters provide a proxy object for use by subclass code and existing client threads. Superclass 200, representing a software library existing on any computer system known in the art, produces an object 202, which can be any data object, structure, or associated methods and procedures. The object 202 can then be accessed by thread 204 by pointer 203. Thread 204 can be any computer process running on any computer system, and can even be a process running on the same computer system on which object 202 exists.
Subclass 208 contains code not existent in superclass 200, and is introduced into software library 200 by a software update. Subclass 208 includes procedures that may inherit functionality from procedures of superclass 200, using the object-oriented paradigm of inheritance. When the object 202 produced by superclass 200 is passed to code of subclass 208 by thread 204 via connection 205, or the code of subclass 208 is otherwise applied to object 202, the traditional downcast procedure, which, as described earlier, results in a downcast failure of object 202, is bypassed by the present invention. Rather, object 202 is passed to object adaptation operation 212. Object adaptation operation 212 then performs a query into version adapter table 214 to retrieve a coercion function (version adaptor) from version adapter table 214, based upon run-time type tags associated with object 202. Version adapter table 214 can be any data structure capable of allowing a query for one field (i.e., a version adapter), based upon the values of two or more other fields (i.e., type tags). Further, the version adapter table of the present invention can be a hash table, splay tree, array, list, 2-3 tree, or any other data structure known in the art.