throbber
lllllllllllllllllllllllllllllllllllll|||||lllllllllllllllllllllllllllllllll
`US005613101A
`
`United States Patent
`
`[191
`
`[11] Patent Number:
`
`5,613,101
`
`Date of Patent:
`[45] Mar. 18, 1997
`
`Lillich
`
`
`
`[54] NIETHOD AND APPARATUS FOR
`DETERMINING AT EXECUTION
`COMPATIBILITY AMONG CLIENT AND
`PROVIDER COMPONENTS WHERE
`PROVIDER VERSION LINKED WITH
`CLIENT MAY DIFFER FROM PROVIDER
`VERSION AVAILABLE AT EXECUTION
`
`[75]
`
`Inventor: Alan W. Lillich, Los Gatos, Calif.
`
`[73] Assignee: Apple Computer, Inc., Cupertino,
`Calif.
`
`[21]
`
`Appl. No.: 483,621
`
`[22]
`
`Filed:
`
`Jun. 7, 1995
`
`[63]
`
`[51]
`[52]
`[58]
`
`[56]
`
`Related US. Application Data
`
`Continuation of Ser. No. 58,345, May 5, 1993, abandoned.
`
`Int. Cl.6 ...................................................... G06F 11/00
`US. Cl.
`.............................................................. 395/500
`Field of Search ...................................... 395/500, 700
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,558,413
`4,788,637
`
`........................ 395/600
`12/1985 Schmidt et a1.
`11/1988 Tamanr
`................................ 395/2001
`
`FOREIGN PATENT DOCUMENTS
`
`9/1991
`0479660
`0498130 12/1991
`
`European Pat. OE.
`European Pat. Off.
`
`.
`.
`
`OTHER PUBLICATIONS
`
`Letwin, G. Inside OS/2. Redmond, Washington, Microsoft
`Press, 1988. pp. 114—116.
`Kenah, L. et a1. VAX/VMS Internals and Data Structures
`Version 4.4. Maynard, Massachusetts, Digital Equipment
`Corporation, 1988. pp. 576—578.
`IBM AIX Version 3 for RISC System/6000TM XL C User’s
`Guide. White Plains, N.Y., International Business Machines
`Corporation, 1990, pp. 7—9; pp. 11—39.
`
`Apple Computer, Inc. Inside Macintosh, vol. VI. Reading,
`Massachusetts, Addison-Wesley Publishing COmpany, Inc.
`1991. pp. 9—23, 9—24.
`Bradbeer, R., Series Editor. Atari—ST Series the Concise
`Atari ST 68000 Programmer’s Reference Guide. Barnet,
`Herts. England, Glentop Publishers Ltd.,
`1986.
`pp.
`2—21—2—27.
`
`“a.out File Format, ” RS6000 Infoexplorer CD Rom. White
`Plains, N.Y., IBM Corporation, 1991. pp. 1—2.
`
`(List continued on next page.)
`
`Primary Examiner—Ken S. Kim
`Attorney, Agent, or Firm—Helene Plotka Workman
`
`[57]
`
`ABSTRACT
`
`The invention is a method and apparatus for verifying
`compatibility between components of a system which share
`a client-provider relationship. Briefly, according to the
`invention, a current version of a provider and a compatibility
`range are defined for each of a version of a client and a
`version of a provider. A version of a provider specifies an
`oldest
`implementation provider and an oldest definition
`provider. When a client is linked with a particular version of
`a provider it stores an identification for that provider, a
`current indicator for that version of the provider, called a
`definition provider, and the oldest implementation provider.
`At runtime, compatibility checks are performed between a
`client and available versions of the provider(s), called imple—
`mentation providers, with which it has been linked. For each
`available version of each type of provider compatibility
`exists with the client in three situations. First, if the defini-
`tion provider and the implementation provider are the same
`version of that provider, then the client and provider are
`compatible. Second, if the definition provider, i.e. the ver-
`sion of the provider linked with the client, is newer than the
`implementation provider, then if the version of the imple-
`mentation provider is no older than the oldest implementa-
`tion provider specified in the client, the two are compatible,
`otherwise they are incompatible. Third, if the definition
`provider is older than the implementation provider, then if
`the definition provider is no older than the oldest definition
`provider specified in the implementation provider, then the
`two are compatible.
`
`19 Claims, 13 Drawing Sheets
`
`30
`
`\
`
`32
`
`CONNECTOR
`
`PROVIDER
`
`36
`
`PROVIDER
`
`34
`
`34
`
`EXHIBIT 1005
`
`MICROSOFT CORP.
` 
`!"#$%%&
`
`Page 1 of 31
`  
`APPLE EXHIBIT 1005 - PAGE 0001
`
`
`
  
` 

`
`

`

`5,613,101
`
`Page 2
`
`OTHER PUBLICATIONS
`
`“Optional Auxiliary Header for the a.out File, ” RS6000
`Infoexplorewr CD Rom. White Plains, N.Y., IBM Corpora—
`tion, 1991, pp. 1—2.
`“Section Headers for the a.out File, ” RS6000 Infoexplorer
`CD Rom. White Plains, N.Y., IBM Corporation, 1991, pp.
`1—2.
`“Raw Data Sections for the a.out File, ” RS6000 Infoex-
`plorer CD Rom. White Plains, N.Y., IBM Corporation, 1991.
`p. 1.
`“Special Data Sections for the a.out File, ” RS6000 Infoe-
`xplorer CD Rom. White Plains, N.Y., IBM COrporation,
`1991. pp. 1—6.
`“Relocation Information for the a.out File, ” RS6000 Infoe—
`xplorer CD Rom. White Plains, N.Y., IBM Corporation,
`1991, pp. 1—2.
`
`“xcoffh, ” RS6000 Infoexplorer CD Rom. White Plains,
`N.Y., IBM Corporation, 1989, pp. 1—3.
`
`“filehdrh, ” RS6000 Infoexplorer CD Rom. White Plains,
`N.Y., IBM Corportion, 1989, pp. 1—3.
`
`“reloc.h, ” RS6000 Infoexplorer CD Rom. White Plains,
`N.Y., IBM Corporation, 1989. pp. 1—3.
`
`“scnhdrh, ” RS6000 Infoexplorer CD Rom, White Plains,
`N.Y., IBM Corporation, 1989. pp. 1—2.
`
`“loader.h, ” RSéOOO Infoexplorer CD Rom, White Plains,
`N.Y., IBM COrporation, 1989. pp. 1—2.
`
`“1d Command, ” RSGOOO Infoexplorer CD Rom, White
`Plains, N.Y.,
`IBM Corporation,
`1991.
`pp.
`1—12.
`
`Page 2 of 31
`  '
`APPLE EXHIBIT 1005 - PAGE 0002
`
`
`
  
` 
(
`
`

`

`US Patent
`
`Mar. 18, 1997
`
`Sheet 1 of 13
`
`5,613,101
`
`3 0
`
`\
`
`32
`
`34
`
`CONNECTOR
`
`PROVIDER
`
`3 6
`
`3 4
`
`.
`
`PROVIDER
`
`4 0
`
`FIG . 1
`
`44
`
`46
`
`48
`
`
`
`
`DISK DRIVE
`
`42
`
`FIG. 2
`
`4
`
`8
`
`
`
`
`
`OPERA'HNG SYSTEM
`
`LINKER
`
`CLIENT PROGRAM
`
`PROVIDER PROGRAM
`
`FIG. 3
`
`50
`
`52
`
`54
`
`.
`
`
`
`
`
`
`60
`
`62
`
`Page 3 of 31
`  
`APPLE EXHIBIT 1005 - PAGE 0003
`
`
`
  
` 
)
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 2 of 13
`
`5,613,101
`
`OLDEST IMPLEMENTATION INDICATOR
`
`PROVIDER INDICATOR
`
`CURRENT INDICATOR
`
`64
`
`62
`
`46
`
`CLIENT EXECUTABLE OBJECT CODE
`
`PROVIDER INDICATOR
`
`CURRENT INDICATOR
`
`74
`
`76
`
`78
`
`
`
`
`
`
`
`OLDEST IMPLEMENTATION INDICATOR
`
`
`PROVIDER PROGRAM
`
`
`
`
`
`
`
`
`PROVIDER INDICATOR
`
`-/ 6 8
`
`CURRENTINDIOATOR
`
`OLDEST IMPLEMENTATION INDICATOR
`
`7°
`#72
`
`
`
`FIG. 4B
`
`Page 4 of 31
`  *
`APPLE EXHIBIT 1005 - PAGE 0004
`
`
`
  
` 
+
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 3 of 13
`
`5,613,101
`
`6 4
`
`8 0
`
`CLIENT PROGRAM EXECUTABLE CODE
`
`PROVIDER INDICATOR
`
`CURRENT INDICATOR
`
`
`
`OLDEST IMPLEMENTATION INDICATOR
`
`PROVIDER PROGRAM EXECUTABLE CODE
`
`PROVIDER INDICATOR
`
`CURRENT INDICATOR
`
`OLDEST DEFINITION INDICATOR
`
`FIG. 5
`
`Page 5 of 31
`  &
`APPLE EXHIBIT 1005 - PAGE 0005
`
`
`
  
` 

`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 4 of 13
`
`5,613,101
`
` 100
`During development of a version of a
`provider, define a current .version and
`compatibility ranges for that version
`
` 102
`
`During linking of client with a
`provider, store in the client
`
`
`
`
`
`
`
`
` 104
`
`During execution of a client, determine
`for providers linked with that client
`compatibility between the client and
`available versions of those providers
`
`
`
`information about the identity of the
`provider, the version of the provider
`and compatibility ranges of that
`version of the provider
`
`
`
`
`
`
`
`
`106
`
`
`1 1 0
`
`Is compatible version
`
`available for each of
`
`
`those providers?
`
`
`
`
`
`Indicate incompatibility
`
`
`
`1 0 8
`
`
`
`Execute client or
`otherwise indicate
`
`compatibility
`
`
`
`FIG. 6
`
`Page 6 of 31
`  ,
`APPLE EXHIBIT 1005 - PAGE 0006
`
`
`
  
` 
-
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 5 of 13
`
`5,613,101
`
`BEGIN 100
`
`
`120
`
`
`Define Current
`Indicator for
`
`
`Implementation
`
`
`Indicator for
`
`provider
`
`provider
`
` I 2 2
`Define Oldest
`
` 124
`Define Oldest
`Definition Indicator
`for orovider
`
`
`
`
`
`
`
`
`
`END 100
`
`
`
`BEGIN 102
`
`138
`
`
`
`
`
`Store in client provider
`
`indicator
`
` 140
`
`Store in client version of
`provider being linked
`
`with client,
`i.e. current
`indicator
`
` 142
`
`Store in client Oil of
`
`
`
`
`provider being linked
`with client
`
`
`
`END 102
`
`FIG. 7
`
`FIG. 8
`
`Page 7 of 31
`  .
`APPLE EXHIBIT 1005 - PAGE 0007
`
`
`
  
` 
/
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 6 of 13
`
`5,613,101
`
`
`BEGIN 104
`
` 1 58
`Determine available
`
`
`
`
` 1 6 0
`Connect client and
`
`version(s) of provider
`
`available version(s) of
`
`
`provider
`
`
`
`
` 162
`Determine
`
`
`
`
`compatibility between
`client and available
`version(s) of provider
`
`
`
`
`
`
`END 104
`
`FIG. 9 '
`
`
`BEGIN 162
`
`
`
`180
`
`
`Was the client linked with
`184
`
`
`
`Is client newer
`the same version of the
`provider which is
`than provider?
`
`
`
`vailable at execution
`time?
`
`
`
`1 86
`1 90
`
`
`
`1 8 2
`Is client too old
`
`Is provider too
`
`
`
`old for client?
`Compatibility exists
`for provider?
`
`
`
`
`
`END 162
`
`
`
` 1 8 8
`Incompatibility
`
`exists
`FIG. 10
`
`Page 8 of 31
`  0
`APPLE EXHIBIT 1005 - PAGE 0008
`
`
`
  
` 
1
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 7 of 13
`
`5,613,101
`
`BEGIN 162
`
`
`
`204
`200
`
`
`
`Does value or absolute
`
`Is value (or absolute
`
`
`value of current indicator
`value) of current indicator
`
`
`
`stored in client greater
`
`
`
`than value (or absolute
`
`
`alue) of current indicator
`indicator of provider?
`
`
`
`of provider?
`
`
`stored in client specify
`same version as current
`
`
`
`206
`
`208
`
`
`
`Is value (or absolute
`
`Is value (or absolue value)
`
`
`value) of Oil stored in
`of ODl of provider less than
`
`
`
`client less than or equal to
`or equal to value (or
`
`
`
`value (or absolute value)
`absolute value) of current
`
`
`
`of current indicator of
`indicator stored in client?
`
`
`
`provider?
`
`
`
` 21 0
`
`
`Signal
`
`Incompatibility
`
`
`
`
`2 0 2
`
`Signal
`
`
`Compatibility
` 21 2
`
`Incompatibility
`
`Signal
`
`
`
`
`
`
`
`FIG. 11
`
`Page 9 of 31
`  2
`APPLE EXHIBIT 1005 - PAGE 0009
`
`
`
  
` 
3
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 8 of 13
`
`5,613,101
`
`Provider Indicator
`
`Current Indicator
`
`Current Indicator
`
`Provider Indicator
`
`FIG. 12
`
`Page 10 of31
`  %
`APPLE EXHIBIT 1005 - PAGE 0010
`
`
`
  
` 

`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 9 of 13
`
`5,613,101
`
`BEGIN 102
`
` 2 4 0
`Add new field to
`
`provider
`
`
`list
`
`
`
`
`
`
`
`
`
` 242
`Set provider
`
`identification in new
`field
`
`
`
` 244
`
`Set current indicator
`in new field
`
` 246
`
`Set Oil in new field
`
`FIG. 13
`
`Page 11 of31
`  
`APPLE EXHIBIT 1005 - PAGE 0011
`
`
`
  
` 

`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 10 of 13
`
`5,613,101
`
`42
`
`Provider Indicator
`
`Provider Location
`
`Current Indicator
`
`Provider Location
`
`Current Indicator
`
`FIG. 14
`
`Page 12 of31
`  '
`APPLE EXHIBIT 1005 - PAGE 0012
`
`
`
  
` 
(
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 11 of 13
`
`5,613,101
`
`BEGIN 104
`
`278
`
`Form implementation
`provider
`list
`
`280
`
`Initialize compatibility
`
`indicator
`
`
`
`
`
`
`
`
`
`
`search?
`
`2 8 2
`
`
`More fields to
`
`
`2 8 4
`
`
`Select field not yet
`
`searched
`
`286
`
`
`Is version of provider
`
`
`identified in field
`compatible with client?
`
`
`
`
`288
`
`
`Is version provider
`
`specified by field better
`
`than the one specified by
`the compatibility
`indicator?
`
`
`2 90
`
`
`Update compatibility indicator
`
`
`to specify version indicated by
`
`selected field or to specify the
`field itself
`
`
`
`FIG. 15
`
`Page 13 of31
`  
`APPLE EXHIBIT 1005 - PAGE 0013
`
`
`
  
` 
)
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 12 of 13
`
`5,613,101
`
`300
`
`320 J
`
` 32601 {1:326
`
`326
`
`320
`
`FIG. 16
`
`Page 14 of31
`  *
`APPLE EXHIBIT 1005 - PAGE 0014
`
`
`
  
` 
+
`
`

`

`US. Patent
`
`Mar. 18, 1997
`
`Sheet 13 of 13
`
`5,613,101
`
`
`
`3 4 8
`
`Define set of version checking
`signals (current
`indicator,
`
`
`Oil, GUI) based on exchanged
`signals
`
`
`3 5 0
`
`
`When a device is connected to a
`system, exchange signals to
`
`
`connect the sender (client) and
`the receiver (provider)
`
`352
`
`
`Sender transmits its current
`indicator to a receiver
`
`FIG. 17
`
`
`
`
`
`
`354
`
`Does the current indicator
`
`from the sender and the
`
`current indicator of the
`receiver specify the same
`version?
`
`
`
`
`
`358
`
`is version specified by
`
`
`
`receiver's current
`
`
`indicator newer than the
`version specified by
`
`
`
`
`
`360
`
`Is the version indicated by
`
`the current indicator of
`
`3 5 6
`
`the sender older than the
`
`
`Receiver signals the
`ODl of the receiver?
`
`
`
`sender that they are
`
`compatible
`
`
`
`362
`
`
`Receiver signals
`
`
`sender to determine
`com natibilit
`
`
`3 6 8
`
`
`Receiver sends its
`
`
`current indicator to
`sender
`
`
`
`
`
`
`
`
`
`370
`
`
`
`Is version specified by
`
`
`receiver's current
`374
`
`
`indicator older than the
`Signal Compatibility
`
`
`
`
`version specified by
`sender's Oll?
`
`
`
`
`
`364
`
`Signal
`
`
`
`Incompatibility
`
`
`
`
`
`Page 15 of31
`  &
`APPLE EXHIBIT 1005 - PAGE 0015
`
`
`
  
` 

`
`

`

`1
`METHOD AND APPARATUS FOR
`DETERMINING AT EXECUTION
`COMPATIBILITY AMONG CLIENT AND
`PROVIDER COMPONENTS WHERE
`PROVIDER VERSION LINKED WITH
`CLIENT MAY DIFFER FROM PROVIDER
`VERSION AVAILABLE AT EXECUTION
`
`This is a continuation of application Ser. No. 08/058,345
`filed May 5, 1993 now abandoned.
`
`10
`
`LIMITED COPYRIGHT WAIVER
`
`A portion of the disclosure of this patent document
`contains material to which the claim of copyright protection
`is made. The copyright owner has no objection to the
`facsimile reproduction by any person of the patent document
`or the patent disclosure, as it appears in the US. Patent and
`Trademark Oflice file or records, but reserves all other rights
`whatsoever.
`
`FIELD OF THE INVENTION
`
`This invention relates generally to compatibility between
`various components of a computer system and, more spe-
`cifically, to checking whether interoperating components are
`compatible within a specified compatibility range.
`
`BACKGROUND OF THE INVENTION
`
`In a computer system, compatibility between various
`components, both hardware and software, of the system may
`be important. A new component or an upgrade of an existing
`component may be incompatible with other components in
`a system, rendering the entire system inaccurate or inopera-
`tive. Thus, it is important to have a mechanism for verifying
`compatibility between components of a system.
`Compatibility plays an important role in a client-provider
`relationship wherein a provider supplies services to a client
`because it is important that the provider be able to satisfy
`expectations of the client. A client—provider relationship may
`exist between two computer software programs, two com-
`puter hardware components or between a software program
`and a hardware component. An example of a client—provider
`relationship is a relationship between a shared library (pro-
`vider), that is a collection of routines which can be accessed
`by other computer programs, and a computer program
`(client) which accesses the routines in the library.
`Typically, as computer programs are modified, upgraded
`or otherwise improved, new versions of the computer pro-
`grams are released. To differentiate between different ver-
`sions of a computer program, a version number is typically
`assigned to each release of the computer program. Usually,
`version numbers are assigned such that a newer version of
`a computer program has a higher version number than an
`earlier version of that computer program. For example, if a
`particular version of a computer program has a version
`number of 2, then a subsequent version of that computer
`program may have a version number greater than 2.
`Computer programs are typically written originally in
`source code in a computer language such as C or Pascal, or
`in an assembly language. To prepare the program for execu—
`tion on a computer system, a compiler (or assembler)
`converts one or more source code modules into arr object
`code file. A compiler (or assembler) is specific to the
`language used and the computer system on which it will be
`executed. A linker routine, which is either a separate pro—
`
`15
`
`2O
`
`25
`
`30
`
`35
`
`4o
`
`45
`
`50
`
`55
`
`60
`
`65
`
`5,613,101
`
`2
`
`gram or is part of the compiler, combines the object code
`files into a single output file, known as an “executable”
`object code file. One or more executables are then loaded
`together into memory by a loader program, and control is
`transferred to a start address to initiate program execution.
`Typically, in a client-provider relationship between two
`software programs, it is important for compatibility to exist
`between the version of a provider such as a shared library
`linked to a client and the version of the provider (shared
`library) used during execution of the client. During linking
`in a client/provider relationship, imports (unresolved exter-
`nal symbols in the client) are resolved to exports from the
`provider (symbols in the provider that are visible to the
`client). At link time, the provider supplies definitions of
`symbols (the API) but not the actual implementation of
`routines and variables (the code). Thus, the version of the
`provider used at link time is called a “definition version”.
`When a client is executed, the imports in the client are
`connected to the associated exports in the provider. The
`connection could be in hardware such as a wire between the
`
`two, or in software such as an operating system, a code
`fragment manager, or other shared library or code manager.
`At runtime, the provider supplies actual implementation of
`routines and variables, i.e. code. Since the API is supplied at
`link time and the code is supplied at runtime, it is important
`that the definitions supplied by a provider at link time are
`compatible with the implementation of the provider used at
`runtime.
`
`In the VMS operating system by Digital Equipment
`Corp., Inc., typically a version of a provider is designed to
`be compatible with previous versions, i.e. a version of a
`provider is backwards compatible. VMS is a trademark of
`Digital Equipment Corporation. Thus, a client can be
`executed using a version of the provider which is newer than
`the version with which it was built. However, a version of
`the provider which is older than the version used to build the
`client may not support features available in newer versions
`of the provider. Therefore, a client can not be executed using
`a version of a provider which is older than the version used
`to build the client, because the older provider may not be
`compatible with the newer version.
`In VMS, as shown in “VAX/VMS Internals and Data
`Structures”, version 4.4, Lawrence J. Kenah, Ruth E. Gold—
`berg, Simon F. Bate (Digital Press: 1988), section 21.1.1.2,
`a provider typically has a revision number comprising a
`major number component and a minor component, usually
`denoted as “majorminor” or “major/minor”. VAX is a
`trademark of Digital Equipment Corporation. When a new
`revision of a provider contains substantial changes from a
`prior instance of the provider, then the major number is
`incremented. However,
`if the changes are only minor
`changes, then usually only the minor number is incremented.
`At link time, the revision number of the provider supplying
`the definitions is stored in the executable object code. At
`execution time, the major number of the stored revision
`number in the client is compared to the major number in the
`revision code of the provider being accessed to implement
`the client. If the major number of the revision of the
`implementation provider is less than the major number of
`the revision number stored in the client’s executable object
`code, then the client and provider are considered incompat-
`ible, regardless of whether the two are in fact incompatible.
`For example, if the client is linked with a provider having
`a revision number of 7.1,
`then it would be considered
`incompatible with a provider having a major number less
`than 7 such as 6.5, 5.0, etc. .
`.
`.
`, but it would be considered
`
`Page 16 of31
`  ,
`APPLE EXHIBIT 1005 - PAGE 0016
`
`
`
  
` 
-
`
`

`

`3
`
`4
`
`5,613,101
`
`compatible with a provider having a major number greater
`than or equal to 7 such as 7.5, 8.0, etc .....
`The backwards compatibility scheme in VMS presents
`several problems. First,
`it discourages a developer of a
`provider from assigning to a current version of the provider
`being developed a major number higher than that assigned
`to the prior version, even though that version may be
`substantially difierent from prior versions of the provider.
`Second, in this versioning scheme it is usually desirable
`to use the newest version of an operating system to utilize
`features or enhancements unavailable in previous versions.
`However,
`the newest version of an operating system is
`usually compatible with the newest version of a shared
`library and not compatible with older versions of the shared
`library. Therefore, clients which were built using newer
`versions of the shared library on a developer’s system can
`not be executed using the older version of the shared library
`on an end user’s system. Thus, developers are encouraged to
`maintain old system installations in order to link with the
`oldest available version of a provider, thereby increasing the
`number of versions of the provider with which it is com—
`patible. Moreover, older versions of the shared library might
`be retained just to execute clients which were built with
`older versions of the shared library. These older versions
`occupy memory space which might otherwise be available
`for other purposes.
`For example, consider a situation where two versions of
`a provider are available at link time, an earlier version
`having a version number of 2.0 and a later version having a
`version number of 4.2. The 4.2 version has some features
`which are not present in the 2.0 version and which would be
`advantageous to the client to use. In order to utilize the
`advantageous features, it is preferable to link with the 4.2
`version. However, since it is unknown which version of a
`provider will be available at runtime, it is also preferable to
`link with the version with the most likelihood of being
`compatible with a version available at runtime. In this case,
`since version 2.0 is compatible with versions greater than or
`equal to 2.0 and 4.2 is compatible with versions greater than
`or equal to 4.2, version 2.0 is more likely to be compatible
`with an available version of a provider than the 4.2 version.
`Thus,
`in this case, a client has a choice between either
`utilizing the advantageous features of the 4.2 version or
`increasing likelihood of compatibility with 2.0. By choosing
`to increase the likelihood of compatibility at runtime and
`thus, linking with the earliest version of a provider available,
`a client foregoes the advantageous features of later versions
`of that provider which are also available and which, may, in
`fact, be compatible with those earlier versions.
`In other operating systems such as OS/2, as discussed in
`“Inside 08/2”, Gordon Letwin, (Microsoft Press: 1988),
`section 7.11.3, and Windows, version numbers are not used
`for providers such as shared libraries. OS/2 is a registered
`trademark of Internation Business Machines Corporation. In
`these systems, older versions are designed to be compatible
`with newer versions and newer versions are designed to be
`compatible with older versions. In other words, a version of
`a provider is designed to be backwards and upwards com—
`patible with other versions of that provider. This places a
`burden on developers of the shared library to maintain
`compatibility even when the changes are extensive and even
`when the older versions may only be used infrequently.
`SUMMARY OF THE INVENTION
`
`The invention is a method and apparatus for controlling
`and verifying compatibility between modular components of
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`4O
`
`45
`
`50
`
`55
`
`60
`
`65
`
`a computer system wherein such components share a client-
`provider relationship and a version of a provider used to
`build the system may be difierent than a version of the
`provider used to execute or run the system. Briefly, accord—
`ing to the invention, a provider indicator, a current indicator
`of a provider and a compatibility range are defined for each
`of a client and a provider. A provider indicator identifies a
`particular type of provider. A current indicator of a provider
`specifies that version of the provider. When a client is linked
`with a version of a provider the current indicator of that
`provider is stored in the executable client produced, thereby
`identifying the version of the provider, herein called a
`“definition provider”, used to build the client.
`The compatibility range for the client identifies the range
`of versions of the provider which can be used to execute the
`client, i.e. which have an implementation which is compat-
`ible with the definitions supplied by the definition provider.
`Preferably, the compatibility range for the client specifies the
`oldest version of the provider which can be used to execute
`the client. The compatibility range for the provider identifies
`the range of versions of the provider which could be used to
`build a client capable of operating with the current version
`of the provider. Preferably, the compatibility range for the
`provider specifies the oldest version of the provider which
`could have been used to build a compatible client. Prefer—
`ably,
`the versions within each of the two compatibility
`ranges are older than or equal in age to the current version.
`The invention also includes a connector for connecting at
`runtime the client and the provider which will be used to
`execute the client, herein called an “implementation pro-
`vider” to determine compatibility between the client and the
`implementation provider. Compatibility checks are per-
`formed between a client and available versions of the
`provider(s), implementation providers, with which it has
`been linked. For each available version of each type of
`provider compatibility with a client exists in three situations.
`First, if the definition provider specified in the client and the
`implementation provider are the same version of that pro-
`vider, then the client and provider are compatible. Second,
`if the definition provider specified in the client is newer than
`the implementation provider,
`then if the version of the
`implementation provider is no older than the oldest imple-
`mentation provider specified in the client,
`the two are
`compatible, otherwise they are incompatible. Third, if the
`definition provider specified in the client is older than the
`implementation provider,
`then if the definition provider
`specified in the client is no older than the oldest definition
`provider specified in the implementation provider, then the
`two are compatible.
`The invention can be used in systems having multiple
`clients and providers. In that case, for each client a list of
`providers is maintained. For each provider in the list, a
`current version and a compatibility range are defined. At
`runtime,
`the list can be searched to find a compatible
`provider, if any exists. Preferably, if more than one com-
`patible provider is found, the “best” is chosen. For example,
`the best provider may be the most current version of the
`provider which is compatible or it may be the version of the
`provider which is closest to the version of the definition
`provider.
`By defining compatibility ranges for a client and for a
`provider, the invention provides several advantages. First,
`the invention permits a client to run with versions of a
`provider which are older than the definition version of the
`provider used to build the client. Thus, a client does not have
`to build only with the oldest version of the provider that it
`will ever be used with. This provides a developer of a client
`
`Page 17 of3l
`  .
`APPLE EXHIBIT 1005 - PAGE 0017
`
`
`
  
` 
/
`
`

`

`5,613,101
`
`5
`
`with flexibility in determining the version of the provider
`with which to build the client. Additionally since a client
`may be linked with a version which is newer than the oldest
`version of the provider, the client may be able to utilize
`features or enhancements, in the newer provider which may
`not exist in the oldest provider. Features or enhancements
`may be explicitly different from previous versions, e.g. the
`feature was not available in any form in the previous
`versions or a new mechanism is used to utilize the feature,
`or they may be implicitly different, e.g. the performance of
`an existing feature is enhanced in the newer version. Pref—
`erably, a client verifies the availability of explicit features
`and enhancements.
`
`Second, the invention permits a client to be executed with
`a provider which is newer than the client, i.e. a provider
`which is newer than the version of the provider which was
`used to build the client. Thus, developers of a provider can
`freely change version numbers of the provider and not affect
`the compatibility of the client and the provider unless the
`changes to the provider render it incompatible with older
`versions of the client. In that case, the compatibility range of
`the provider changes to reflect the changes in compatibility.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The above and further advantages of the invention may be
`better understood by refening to the following description in
`conjunction with the accompanying drawings, in which:
`FIG. 1 is a symbolic, simplified block diagram of a system
`which may incorporate the invention;
`FIG. 2 is a symbolic, simplified block diagram of a
`computer system which may incorporate the invention;
`FIG. 3 illustrates contents of a disk drive of the computer
`system of FIG. 2;
`FIGS. 4A and 4B illustrate contents at the start and end,
`respectively, of link time of a memory of the computer
`system of FIG. 2;
`FIG. 5 depicts contents at execution time of a memory of
`the computer system of FIG. 2;
`FIG. 6 is a flow chart depicting in general the steps of the
`invention;
`FIG. 7 is a more detailed flow chart depicting the steps of
`block 100 of FIG. 6;
`FIG. 8 is a more detailed flow chart depicting the steps of
`block 102 of FIG. 6;
`
`FIG. 9 is a more detailed flow chart depicting the steps of
`block 104 of FIG. 6;
`
`FIG. 10 is a detailed flow chart depicting steps of block
`162 of FIG. 9;
`FIG. 11 is a more detailed flow chart of steps performed
`at block 162 of FIG. 9;
`FIG. 12 shows a provider list which is used when a client
`is linked with multiple types of providers;
`FIG. 13 is a flowchart of steps of block 102 of FIG. 6
`when a client is linked with multiple types of providers;
`FIG. 14 shows an implementation provider list which is
`used when multiple versions of a provider are available at
`execution of a client;
`
`FIG. 15 is a flowchart depicting preferable steps for
`determining compatibility at block 104 of FIG. 6 when
`multiple versions of a provider are available at execution of
`a client;
`
`FIG. 16 is a simplified block diagram of a primarily
`hardware type system of FIG. 1 incorporating the invention;
`and
`
`10
`
`IS
`
`20
`
`25
`
`30
`
`35
`
`4o
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`FIG. 17 is a flowchart generally depicting steps of the
`invention in a system of FIG. 16.
`
`DETAILED DESCRIPTION OF THE DRAWINGS
`
`Numeral 30 in FIG. 1 generally indicates a system incor-
`porating the invention. System 30 may be hardware, soft-
`ware, or a combination thereof, and includes a client 32 and
`a provider 34 connected by a connector 36 such that infor—
`mation from the client and provider can be compared.
`FIG. 2 illustrates a computer system 40, comprised of
`hardware and software, which may be used to implement the
`invention. Computer system 40 comprises a bus 42 inter-
`connecting a processor 44 such as a central processing unit
`(“CPU”), a memory 46 and a disk drive 48. Many types of
`computer systems may be used, but in the present embodi-
`ment, computer software is usually stored on the disk drive
`48 and brought into memory 46 over bus 42 by the processor
`44.
`
`As shown in FIG. 3, prior to linking a client with a
`provider, this computer software typically includes an oper-
`ating system 50 such as, for example, Macintosh System 7
`or AIX, a compiler 52 such as an IBM xlc or xlC compiler
`and a linker 54 such as IBM ld linker. Macintosh System 7
`and AIX are both commercially available. Background
`information on the Macintosh System 7 operating system
`can be found in “Inside Macintosh”, Vol. VI, Addison—
`Wesley Publishing Co., Inc., 1991, and background infor-
`mation on the AIX operating system can be found in “Calls
`and Subroutines, AIX Version 3 for RISC System/6000”,
`Vols.
`I—VI, IBM, 1990, 1991. The IBM xlc compiler is
`described in “XL C User’s Guide, AIX Version 3 for RISC
`System/6000”, chapters 2—4, IBM Corporation, 1990, the
`disclosure of which is hereby incorporated by reference.
`AIX and RISC System/6000 are trademarks of International
`Business Machines Corporation. The ld linker is discussed
`in an article entitled “ld Command” published in IBM,
`“R6000 InfoExplorer”, (CD-ROM 1991), the disclosure of
`which is herein incorporated by reference.
`Compiler 52 and linker 54 may also be part of the same
`computer program, rather than sepa

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket