← Back to Patent Explorer
US6981250B1 Expired / Lapsed US ⏱️ 0.0 years remaining

System and methods for providing versioning of software components in a computer programming language

Assignee: Microsoft Technology Licensing LLC
•
Filing: 2001-07-05
•
Granted: 2005-12-27
•
Expires: 2021-07-05
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A system and methods for versioning software components in connection with a computer programming language are provided. In exemplary aspects, the versioning system makes use of intelligent defaults, provides a vehicle for unambiguous specification of developer intent and implements conflict resolution rules in connection with the versioning of software components. In another aspect, the versioning system bounds names at run-time, but does not bound offsets at compile-time.

Inventors

  • 👤 Scott Wiltamuth
  • 👤 Anders Hejlsberg
  • 👤 Peter F. Sollich
  • 👤 Bradley M. Abrams

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 13:58
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/70; G06F8/71; G06F9/00; G06F9/06; G06F9/44; G06F9/448; G06F9/4488; G06F9/449; Y; Y10; Y10S; Y10S707/00; Y10S707/99951; Y10S707/99952; Y10S707/99953; Y10S707/99954

Claims Analysis

Total Claims: 57
Claim 1
Independent Claim 136 words
A method for providing versioning support for at least one software component of an object-oriented programming language, the method operating on a computer and comprising: specifying programmer intent with regard to versioning of said at least one software component by assigning at least one keyword to said at least one software component, wherein said specifying of programmer intent includes providing a versioning-aware overload resolution method to locate a second method invoked by a first method invocation, wherein said versioning-aware overload resolution method includes: determining a type indicated by the first method invocation, checking un an inheritance chain until at least one applicable, accessible, non-override method declaration is found; performing overload resolution on a set of applicable, accessible, non-override methods declared for the type; and selecting the second method based on a performance of said overload resolution.
Claim 2
Independent Claim 136 words
A method for providing versioning support for at least one software component of an object-oriented programming language, the method operating on a computer and comprising: specifying programmer intent with regard to versioning of said at least one software component by assigning at least one keyword to said at least one software component, wherein said specifying of programmer intent includes providing a versioning-aware overload resolution method to locate a second method invoked by a first method invocation, wherein said versioning-aware overload resolution method includes: determining a type indicated by the first method invocation, checking un an inheritance chain until at least one applicable, accessible, non-override method declaration is found; performing overload resolution on a set of applicable, accessible, non-override methods declared for the type; and selecting the second method based on a performance of said overload resolution.
Claim 3
Dependent Claim 26 words
A method according to claim 1 , wherein said assigning said at least one keyword includes assigning at least one of virtual, new and override keywords.
Claim 4
Dependent Claim 39 words
A method according to claim 1 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component overrides another software component.
Claim 5
Dependent Claim 44 words
A method according to claim 1 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component is capable of being overridden by another software component.
Claim 6
Dependent Claim 39 words
A method according to claim 1 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component hides another software component.
Claim 7
Dependent Claim 48 words
A method according to claim 1 , wherein said at least one software component is at least one member of the object-oriented programming language and the object-oriented programming language is from one of the sources of origin identified by C#, FORTRAN, PASCAL, VISUAL BASIC, C, C++, and JAVA.
Claim 8
Dependent Claim 41 words
A method according to claim 1 , wherein said specifying of programmer intent includes assigning intelligent defaults to said at least one software component in the absence of assigning said at least one keyword to said at least one software component.
Claim 9
Dependent Claim 29 words
A method according to claim 7 , wherein when programmer intent is not fully specified, the compiler of the programming language produces a warning before assigning said intelligent defaults.
Claim 10
Dependent Claim 39 words
A method according to claim 7 , wherein said assigning of intelligent defaults includes assigning to said at least one software component the most limited form of accessibility, based upon a type of said at least one software component.
Claim 11
Dependent Claim 46 words
A method according to claim 7 , wherein by default, when said at least one software component is at least one method declaration with no accessibility modifiers appearing in the corresponding class, the at least one method declaration is defaulted to be private to that class.
Claim 12
Dependent Claim 21 words
A method according to claim 7 , wherein by default, said at least one software component is non-virtual, rather than virtual.
Claim 13
Dependent Claim 36 words
A method according to claim 1 , wherein for a virtual method invocation, said versioning-aware overload resolution method includes determining the second method based on a run-time type of an instance of the first method invocation.
Claim 14
Dependent Claim 36 words
A method according to claim 1 , wherein for a non-virtual method invocation, said versioning-aware overload resolution method includes determining the second method based on a compile-time type of a instance of the first method invocation.
Claim 15
Dependent Claim 24 words
A method according to claim 1 , wherein said versioning-aware overload resolution method includes bounding names at run-time, and not bounding offsets at compile-time.
Claim 16
Dependent Claim 41 words
A method according to claim 1 , wherein the overload resolution method prevents a base software component from breaking a functionality of a derived software component when versioning the base software component and such breaking is not intended by the programmer.
Claim 17
Dependent Claim 29 words
A method according to claim 1 , wherein said at least one software component is binary compatible with code utilizing other versions of said at least one software component.
Claim 18
Dependent Claim 29 words
A method according to claim 1 , wherein said at least one software component is source compatible with code utilizing other versions of said at least one software component.
Claim 19
Dependent Claim 17 words
A computer readable medium bearing computer executable instructions for carrying out the method of claim 1 .
Claim 20
Dependent Claim 16 words
A modulated data signal carrying computer executable instructions for performing the method of claim 1 .
Claim 21
Dependent Claim 13 words
A computing device comprising means for performing the method of claim 1 .
Claim 22
Dependent Claim 140 words
A computer readable storage medium having stored thereon a plurality of computer-executable modules written in au object-oriented programming language, the computer executable modules comprising: a versioning mechanism enabling a programmer to specify intent with regard to versioning of at least one software component by assigning at least one keyword to said at least one software component, wherein said specifying of programmer intent includes providing a versioning-aware overload resolution method to locate a second method invoked by a first method invocation, wherein said versioning-aware overload resolution method includes: determining a type indicated by the first method invocation, checking up an inheritance chain until at least one applicable, accessible, non-override method declaration is found; performing overload resolution on a set of applicable, accessible, non-override methods declared for the type; and selecting the second method based on a performance of said overload resolution.
Claim 23
Dependent Claim 140 words
A computer readable storage medium having stored thereon a plurality of computer-executable modules written in au object-oriented programming language, the computer executable modules comprising: a versioning mechanism enabling a programmer to specify intent with regard to versioning of at least one software component by assigning at least one keyword to said at least one software component, wherein said specifying of programmer intent includes providing a versioning-aware overload resolution method to locate a second method invoked by a first method invocation, wherein said versioning-aware overload resolution method includes: determining a type indicated by the first method invocation, checking up an inheritance chain until at least one applicable, accessible, non-override method declaration is found; performing overload resolution on a set of applicable, accessible, non-override methods declared for the type; and selecting the second method based on a performance of said overload resolution.
Claim 24
Dependent Claim 28 words
A computer readable medium according to claim 21 , wherein said assigning said at least one keyword includes assigning at least one of virtual, new and override keywords.
Claim 25
Dependent Claim 41 words
A computer readable medium according to claim 21 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component overrides another software component.
Claim 26
Dependent Claim 46 words
A computer readable medium according to claim 21 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component is capable of being overridden by another software component.
Claim 27
Dependent Claim 41 words
A computer readable medium according to claim 21 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component hides another software component.
Claim 28
Dependent Claim 50 words
A computer readable medium according to claim 21 , wherein said at least one software component is at least one member of the object-oriented programming language and the object-oriented programming language is from one of the sources of origin identified by C#, FORTRAN, PASCAL, VISUAL BASIC, C, C++, and JAVA.
Claim 29
Dependent Claim 43 words
A computer readable medium according to claim 21 , wherein said specifying of programmer intent includes assigning intelligent defaults to said at least one software component in the absence of assigning said at least one keyword to said at least one software component.
Claim 30
Dependent Claim 31 words
A computer readable medium according to claim 27 , wherein when programmer intent is not fully specified, the compiler of the programming language produces a warning before assigning said intelligent defaults.
Claim 31
Dependent Claim 41 words
A computer readable medium according to claim 27 , wherein said assigning of intelligent defaults includes assigning to said at least one software component the most limited form of accessibility, based upon a type of said at least one software component.
Claim 32
Dependent Claim 48 words
A computer readable medium according to claim 27 , wherein by default, when said at least one software component is at least one method declaration with no accessibility modifiers appearing in the corresponding class, the at least one method declaration is defaulted to be private to that class.
Claim 33
Dependent Claim 23 words
A computer readable medium according to claim 27 , wherein by default, said at least one software component is non-virtual, rather than virtual.
Claim 34
Dependent Claim 38 words
A computer readable medium according to claim 21 , wherein for a virtual method invocation, said versioning-aware overload resolution method includes determining the second method based on a run-time type of an instance of the first method invocation.
Claim 35
Dependent Claim 38 words
A computer readable medium according to claim 21 , wherein for a non-virtual method invocation, said versioning-aware overload resolution method includes determining the second method based on a compile-time type of an instance of the first method invocation.
Claim 36
Dependent Claim 26 words
A computer readable medium according to claim 21 , wherein said versioning-aware overload resolution method includes bounding names at run-time, and not bounding offsets at compile-time.
Claim 37
Dependent Claim 43 words
A computer readable medium according to claim 21 , wherein the overload resolution method prevents a base software component from breaking a functionality of a derived software component when versioning the base software component and such breaking is not intended by the programmer.
Claim 38
Dependent Claim 31 words
A computer readable medium according to claim 21 , wherein said at least one software component is binary compatible with code utilizing other versions of said at least one software component.
Claim 39
Dependent Claim 31 words
A computer readable medium according to claim 21 , wherein said at least one software component is source compatible with code utilizing other versions of said at least one software component.
Claim 40
Dependent Claim 130 words
An object-oriented programming language stored on a computer for producing computer executable modules, comprising a versioning mechanism enabling a programmer to specify intent with regard to versioning of at least one software component by assigning at least one keyword to said at least one software component, wherein said specifying of programmer intent includes providing a versioning-aware overload resolution method to locate a second method invoked by a first method invocation, wherein said versioning-aware overload resolution method includes: determining a type indicated by the first method invocation, checking up an inheritance chain until at least one applicable, accessible, non-override method declaration is found; performing overload resolution on a set of applicable, accessible, non-override methods declared for the type; and selecting the second method based on a performance of said overload resolution.
Claim 41
Dependent Claim 130 words
An object-oriented programming language stored on a computer for producing computer executable modules, comprising a versioning mechanism enabling a programmer to specify intent with regard to versioning of at least one software component by assigning at least one keyword to said at least one software component, wherein said specifying of programmer intent includes providing a versioning-aware overload resolution method to locate a second method invoked by a first method invocation, wherein said versioning-aware overload resolution method includes: determining a type indicated by the first method invocation, checking up an inheritance chain until at least one applicable, accessible, non-override method declaration is found; performing overload resolution on a set of applicable, accessible, non-override methods declared for the type; and selecting the second method based on a performance of said overload resolution.
Claim 42
Dependent Claim 32 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said assigning said at least one keyword includes assigning at least one of virtual, new and override keywords.
Claim 43
Dependent Claim 45 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component overrides another software component.
Claim 44
Dependent Claim 50 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component is capable of being overridden by another software component.
Claim 45
Dependent Claim 45 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said assigning said at least one keyword to said at least one software component specifies programmer intent with regard to whether said at least one software component hides another software component.
Claim 46
Dependent Claim 54 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said at least one software component is at least one member of the object-oriented programming language and the object-oriented programming language is from one of the sources of origin identified by C#, FORTRAN, PASCAL, VISUAL BASIC, C, C×, and JAVA.
Claim 47
Dependent Claim 47 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said specifying of programmer intent includes assigning intelligent defaults to said at least one software component in the absence of assigning said at least one keyword to said at least one software component.
Claim 48
Dependent Claim 35 words
An object-oriented programming language stored on a computer according to claim 44 , wherein when programmer intent is not fully specified, the compiler of the programming language produces a warning before assigning said intelligent defaults.
Claim 49
Dependent Claim 45 words
An object-oriented programming language stored on a computer according to claim 44 , wherein said assigning of intelligent defaults includes assigning to said at least one software component the most limited form of accessibility, based upon a type of said at least one software component.
Claim 50
Dependent Claim 52 words
An object-oriented programming language stored on a computer according to claim 44 , wherein by default, when said at least one software component is at least one method declaration with no accessibility modifiers appearing in the corresponding class, the at least one method declaration is defaulted to be private to that class.
Claim 51
Dependent Claim 27 words
An object-oriented programming language stored on a computer according to claim 44 , wherein by default, said at least one software component is non-virtual, rather than virtual.
Claim 52
Dependent Claim 42 words
An object-oriented programming language stored on a computer according to claim 38 , wherein for a virtual method invocation, said versioning-aware overload resolution method includes determining the second method based on a run-time type of an instance of the first method invocation.
Claim 53
Dependent Claim 42 words
An object-oriented programming language stored on a computer according to claim 38 , wherein for a non-virtual method invocation, said versioning-aware overload resolution method includes determining the second method based on a compile-time type of the instance of the first method invocation.
Claim 54
Dependent Claim 30 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said versioning-aware overload resolution method includes bounding names at run-time, and not bounding offsets at compile-time.
Claim 55
Dependent Claim 47 words
An object-oriented programming language stored on a computer according to claim 38 , wherein the overload resolution method prevents a base software component from breaking a functionality of a derived software component when versioning the base software component and such breaking is not intended by the programmer.
Claim 56
Dependent Claim 35 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said at least one software component is binary compatible with code utilizing other versions of said at least one software component.
Claim 57
Dependent Claim 35 words
An object-oriented programming language stored on a computer according to claim 38 , wherein said at least one software component is source compatible with code utilizing other versions of said at least one software component.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2008-12-26 2009-06-27 2009-12-27 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2012-12-26 2013-06-27 2013-12-27 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2016-12-26 2017-06-27 2017-12-27 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag