Compiler and method for automatically building version compatible object applications
First Claim
1. A method in a computer system of automatically compiling version compatible object servers, the method comprising the steps of:
- compiling a first program into a first version object server having a set of one or more interfaces;
compiling a second program into a second version object server to be version compatible with the first version object server, said compiling into the second version object server comprising;
verifying whether the second program can compile into a second version object server that provides at least each interface of the first version object server; and
if the verifying step shows that second program can be compiled into the second version object server that provides at least each interface of the first version object server, generating a set of interfaces for the second version object server so as to comprise interfaces that match each interface of the first version object server.
2 Assignments
0 Petitions
Accused Products
Abstract
A compiler automatically builds a new version of an object server to be compatible with an existing version so that client applications built against the existing version are operable with the new version. The existing version object server retains type information relating to its classes and members in a type library. The compiler performs version compatibility analysis by comparing the new version object server against the type information in the existing version'"'"'s type library. If the compatibility analysis determines that the new and existing versions are compatible, the compiler builds the new version object server to support at least each interface supported by the existing version object server. The compiler further associates version numbers with the new version object server indicative of its degree of compatibility with the existing version object server.
236 Citations
25 Claims
-
1. A method in a computer system of automatically compiling version compatible object servers, the method comprising the steps of:
-
compiling a first program into a first version object server having a set of one or more interfaces;
compiling a second program into a second version object server to be version compatible with the first version object server, said compiling into the second version object server comprising;
verifying whether the second program can compile into a second version object server that provides at least each interface of the first version object server; and
if the verifying step shows that second program can be compiled into the second version object server that provides at least each interface of the first version object server, generating a set of interfaces for the second version object server so as to comprise interfaces that match each interface of the first version object server. - View Dependent Claims (2, 3, 23)
generating a user notification of a compilation error if the verifying step shows that second program cannot compile into a second version object server that provides each interface of the first version object server.
-
-
3. The method of claim 1 comprising the additional steps of:
-
compiling the first program into the first version object server having a first type library containing type information of the first version object server;
assigning a first type library version number having a major version number and a minor version number to the first type library; and
the step of compiling the second program further comprising, if the verifying step shows that the second program can compile into the second version object server that provides each interface of the first version object server, then generating a second type library containing type information for the second version of the object server; and
assigning a second type library version number to the second type library, the second type library version number having a minor version number incremented with respect to the minor version number of the first type library version number.
-
-
23. The method of claim 1 further comprising:
-
compiling the first program into the first version object server having a first type library containing type information of the first version object server, wherein the type information contained in the first type library indicates types of class members in the first program; and
in the verifying step, compatibility checking types of class members in the second program against the type information in the first type library to verify whether the second program can compile into the second version object server that provides each interface of the first version object server.
-
-
4. A method in a computer system of automatically compiling version compatible object servers, the method comprising the steps of:
-
compiling a first program into a first version object server having a set of one or more interfaces, and a first type library containing type information of the first version of the object server;
assigning a first unique type library identifier to the first type library;
compiling a second program into a second version object server to be version compatible with the first version object server, said compiling into the second version object server comprising;
compatibility checking the second program against the type information in the first type library to detect whether any version incompatible differences exist between the first and second version object servers; and
if no version incompatible difference is detected, generating a set of interfaces for the second version object server so as to comprise interfaces that match each interface of the first version object server, generating a second type library containing type information for the second version of the object server, and assigning the first unique type library identifier to the second type library. - View Dependent Claims (5)
the step of compiling the second program further comprising, if a version incompatible difference between the first and second versions of the object server is detected in the compatibility checking step, then generating a second type library containing type information for the second version of the object server; and
assigning a second unique type library identifier to the second type library.
-
-
6. A method in a computer system of automatically compiling version compatible object servers, the method comprising the steps of:
-
compiling a first program into a first version object server having a set of one or more interfaces, and a first type library containing type information of the first version of the object server;
in compiling the first version of the object server, assigning unique interface identifiers in a one-to-one relationship to each interface of the first version of the object server; and
compiling a second program into a second version object server to be version compatible with the first version object server, said compiling into the second version object server comprising;
compatibility checking the second program against the type information in the first type library to detect whether any version incompatible differences exist between the first and second version object servers; and
if no version incompatible difference is detected, generating a set of interfaces for the second version object server so as to comprise interfaces that match each interface of the first version object server, and assigning the same interface identifier to any interface of the second version of the object server which also is included in the set of interfaces for the first version of the object server as the interface identifier assigned to said any interface in compiling the first version of the object server. - View Dependent Claims (7, 8)
if no version incompatible difference between the first and second versions of the object server is detected in the compatibility checking step, additionally assigning a new unique interface identifier to each interface of an object class in the second version of the object server having new members.
-
-
8. The method of claim 6 wherein the step of compiling the second program further comprises the additional step of:
if a version incompatible difference between the first and second versions of the object server is detected in the compatibility checking step, assigning unique interface identifiers which differ from those assigned to the interfaces of the first version of the object server to each interface in the set of interfaces for the second version of the object server.
-
9. A method in a computer system of automatically compiling version compatible object servers wherein the first and second versions of the object server each define one or more object classes, the method comprising the steps of:
-
compiling a first program into a first version object server having a set of one or more interfaces, and a first type library containing type information of the first version of the object server;
in compiling the first version of the object server, assigning unique class identifiers in a one-to-one relationship to the object classes defined by the first version of the object server; and
compiling a second program into a second version object server to be version compatible with the first version object server, said compiling into the second version object server comprising;
compatibility checking the second program against the type information in the first type library to detect whether any version incompatible differences exist between the first and second version object servers; and
if no version incompatible difference is detected, generating a set of interfaces for the second version object server so as to comprise interfaces that match each interface of the first version object server, and assigning the same class identifier to any object class defined by the second version of the object server which also is defined by the first version of the object server as the class identifier assigned to such object class in compiling the first version of the object server. - View Dependent Claims (10, 11, 12)
if a version incompatible difference between the first and second versions of the object server is detected in the compatibility checking step, assigning unique class identifiers which differ from those assigned to the object classes defined by the first version of the object server to each object class defined by the second version of the object server.
-
-
11. The method of claim 9 wherein the object classes defined by the first and second versions of the object server have one or more members each, the wherein the step of compiling the second program further comprising the additional step of:
if no version incompatible difference between the first and second versions of the object server is detected in the compatibility checking step, additionally assigning a new unique class identifier to each object class in the second version of the object server having new members.
-
12. The method of claim 9 wherein the object classes defined by the first and second versions of the object server have one or more members each, the method comprising the additional steps of:
-
in compiling the first version of the object server, assigning dispatch identifiers in a one-to-one relationship to the members of each object class defined by the first version of the object server; and
the step of compiling the second program further comprising, if no version incompatible difference between the first and second versions of the object server is detected in the compatibility checking step, assigning the same dispatch identifier to any member included in an object class defined by the second version of the object server which also is included in a definition of that object class by the first version of the object server as the dispatch identifier assigned to such member in compiling the first version of the object server.
-
-
13. A method in a computer system of automatically generating compatible versions of an executable program, the method comprising:
-
generating a first set of one or more interfaces for accessing class members defined in a first version of an executable program;
associating identifiers with the interfaces of the first version of the executable program;
detecting any version incompatible differences between the first version of the executable program and source code for a second version of the executable program;
if no version incompatible difference is detected, generating a second set of one or more interfaces for accessing any class members defined in the second version of the executable program, the second set comprising interfaces that match each interface in the first set; and
associating the same identifiers with the interfaces of the second version of the executable program. - View Dependent Claims (14, 15, 16)
verifying that each class in the first version of the executable program also is defined in the source code of the second version of the executable program and that the types of such classes match between the first version of the executable program and the source code of the second version of the executable program.
-
-
15. The method of claim 14 further comprising:
verifying that each public member in each class in the first version of the executable program also is defined in the source code of the second version of the executable program and that the types of such public members match between the first version of the executable program and the source code of the second version of the executable program.
-
16. The method of claim 15 further comprising:
verifying that the parameter types and return types of each public member defined in the first version of the executable program and the source code of the second version of the executable program match.
-
17. A compiler for automatically generating compatible versions of an executable program, comprising:
-
a version compatibility analyzer for comparing types of class members in source code for a second version of the executable program against those in a first version of the executable program to verify whether the source code can be compiled into the second version of the executable program that provides at least each interface in the first version of the executable program; and
a compatible executable program generator in communication with the version compatibility analyzer for, in response to a positive verification, generating a set of at least one interface in the second version of the executable program so as to comprise interfaces that match each interface in the first version of the executable program. - View Dependent Claims (18, 19, 20, 21)
wherein the version compatibility analyzer is operative to compare types of class members in the source code of the second version of the executable program against the type information contained in the type library of the first version of the executable program.
-
-
19. The compiler of claim 17, wherein the compatible executable program generator is further operable to associate version numbers with each of the first and second versions of the executable program, wherein the version numbers associated with the first and second versions of the executable program reflect the verification by the version compatibility analyzer of whether the source code can be compiled into the second version of the executable program that provides at least each interface in the first version of the executable program.
-
20. The compiler of claim 19, wherein:
the compatible executable program generator associates at least one version number with each of the first and second versions of the executable program, such that, in the case of a positive verification by the version compatibility analyzer, the version number associated with the second version of the executable program being incremented with respect to the version number associated with the first version of the executable program.
-
21. The compiler of claim 20, wherein:
-
the version compatibility analyzer is further capable of identifying whether all interfaces provided by the second version of the executable program are identical to the interfaces in the first version of the executable program; and
the compatible executable program generator associates version numbers with identical major and minor portions to the first and second versions of the executable program in the case of all interfaces provided by the second version of the executable program being identical to the interfaces in the first version of the executable program.
-
-
22. A compiler for automatically generating compatible versions of an executable program, comprising:
-
a version compatibility analyzer for comparing types of class members in source code for a second version of the executable program against those in a first version of the executable program to verify whether the source code can be compiled into the second version of the executable program that provides at least each interface in the first version of the executable program; and
a compatible executable program generator in communication with the version compatibility analyzer for, in response to a positive verification, generating a set of at least one interface in the second version of the executable program so as to comprise interfaces that match each interface in the first version of the executable program;
wherein the compatible executable program generator associates a unique interface identifier with each different interface, whereby the interface identifiers associated with the interfaces of the first and second versions of the executable program differ from each other when any version incompatible difference is detected between the first and second versions of the executable program, and at least one interface identifier is associated with an interface in both the first and second versions of the executable program when no version incompatible difference is detected between the first and second versions of the executable program.
-
-
24. A compiler for automatically generating compatible versions of an executable program, comprising:
-
a compiler option selectable by a user for causing the compiler to automatically compile modified source code into a second version executable program to be version compatible with a first version executable program;
a compatibility checker operative to verify whether the modified source code can be compiled so as to produce the second version executable program that provides each interface of the first version executable program;
a user perceptible notification operative in response to the compatibility checker producing a negative verification to provide notice to the user that the modified source code is incapable of being compiled into a compatible second version executable program; and
an executable program code generator operative in response to the compatibility checker producing a positive verification to compile the second version executable program from the modified source code so as to have a set of interfaces that includes interfaces compatible with each interface of the first version executable program. - View Dependent Claims (25)
a type information store associated with the first version executable program for storing type information descriptive of types associated with the interfaces of the first version executable program; and
a type comparator associated with the compatibility checker for analyzing the modified source code relative to the type information to verify whether the modified source code can be compiled so as to produce the second version executable program that provides each interface of the first version executable program.
-
Specification