`United States Patent
`5,613,101
`45] Date of Patent: Mar. 18, 1997
`
`Lillich
`
`
`[11] Patent Number:
`
`SACOAAACE
`
`US005613101A
`
`[54] 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
`
`[75]
`
`Inventor: Alan W. Lillich, Los Gatos, Calif.
`
`[73] Assignee: Apple Computer, Inc., Cupertino,
`Calif.
`
`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
`
`[21] Appl. No.: 483,621
`
`[57]
`
`ABSTRACT
`
`[22]
`
`Filed:
`
`Jun. 7, 1995
`
`Related U.S. Application Data
`
`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 ofa provider and a compatibility
`range are defined for each of a version of a client and a
`(63] Continuation of Ser. No. 58,345, May 5, 1993, abandoned.
`version of a provider. A version of a provider specifies an
`[51]
`Tint, C18cccccssansesecsssssssssensesssecsueeeees GO6F 11/00
`oldest
`implementation provider and an oldest definition
`[52] US. Ue eee cecsssccsecnccnecssssosssacssasscesceceneennetes 395/500
`provider. Whenaclientis linked with a particular version of
`[58] Field of Search ou... eccsssssecssessees 395/500, 700
`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.
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,558,413
`4,788,637
`
`12/1985 Schmidt et al. wees 395/600
`11/1988 Tamar se.eeesessecsccsecsreeeneoes 395/200.1
`
`FOREIGN PATENT DOCUMENTS
`
`9/1991
`0479660
`0498130 12/1991
`
`European Pat. Off.
`European Pat. Off.
`
`.
`.
`
`OTHER PUBLICATIONS
`
`Letwin, G. Inside OS/2. Redmond, Washington, Microsoft
`Press, 1988. pp. 114-116.
`Kenah, L. et al. VAX/VMSInterals and Data Structures
`Version 4.4. Maynard, Massachusetts, Digital Equipment
`Corporation, 1988. pp. 576-578.
`IBM AIX Version 3 for RISC System/6000™ XL C User’s
`Guide. White Plains, N.Y., International Business Machines
`Corporation, 1990, pp. 7-9; pp. 11-39.
`
`30
`
`\
`
`32
`
`19 Claims, 13 Drawing Sheets
`
`34
`
`CONNECTOR
`
`PROVIDER
`
`PROVIDER’
`
`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.
`
`“xcoff-h, ” RS6000 Infoexplorer CD Rom. White Plains,
`N.Y., IBM Corporation, 1989, pp. 1-3.
`
`“filehdr.h, ” RS6000 Infoexplorer CD Rom. White Plains,
`N.Y., IBM Corportion, 1989, pp. 1-3.
`
`“reloc.h, ” RS6000 Infoexplorer CD Rom. White Piains,
`N.Y., IBM Corporation, 1989. pp. 1-3.
`
`“scenhdr.h, ” RS6000 Infoexplorer CD Rom, White Plains,
`N.Y., IBM Corporation, 1989. pp. 1-2.
`
`“oader.h, ” RS6000 Infoexplorer CD Rom, White Plains,
`N.Y., IBM COrporation, 1989. pp. 1-2.
`
`“1d Command, ” RS6000 Infoexplorer CD Rom, White
`Plains, N.Y.,
`IBM Corporation,
`1991.
`pp.
`1-12.
`
`Page 2 of 31
` '
`APPLE EXHIBIT 1005 - PAGE 0002
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 1 of 13
`
`5,613,101
`
`30
`
`\
`
`32
`
`34
`
`CONNECTOR
`
`PROVIDER
`
`36
`
`34
`
`|
`
`PROVIDER
`
`FIG. 1
`
`48
`
`40
`
`46
`44
`Ne
`
` DISK DRIVE
`
`
`
`42
`
`8
`
`
`
`
`
`
`
`FIG. 2
`
`4
`
`OPERATING SYSTEM
`
`LINKER
`
`CLIENT PROGRAM
`
`PROVIDER PROGRAM
`
`FIG. 3
`
`50
`
`52
`
`54
`
`
`
` 60
` 62
`
`
`Page 3 of 31
`
`APPLE EXHIBIT 1005 - PAGE 0003
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 2 of 13
`
`5,613,101
`
`PROVIDER PROGRAM
`
`PROVIDER INDICATOR
`
`CURRENT INDICATOR
`
`FIG. 4A
`
`CLIENT EXECUTABLE OBJECT CODE
`
`64
`
`PROVIDERINDICATOR
`CURRENT INDICATOR
`
`46
`
`74
`76
`
`OLDEST IMPLEMENTATIONINDICATOR
`OLDEST IMPLEMENTATION INDICATOR | 72
`
`
`
`OLDEST IMPLEMENTATION INDICATOR|-——78
`
`PROVIDER PROGRAM
`
`62
`
`PROVIDER INDICATOR
`
`CURRENT INDICATOR
`
`— 68
`
`70
`
`FIG. 4B
`
`Page 4 of 31
` *
`APPLE EXHIBIT 1005 - PAGE 0004
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 3 of 13
`
`5,613,101
`
`CLIENT PROGRAM EXECUTABLE CODE
`
`PROVIDER INDICATOR
`CURRENT INDICATOR
`
`
`
`OLDEST IMPLEMENTATION INDICATOR
`
`PROVIDER PROGRAM EXECUTABLE CODE
`
`PROVIDER INDICATOR
`
`CURRENT INDICATOR
`
`OLDEST DEFINITION INDICATOR
`
`64
`
`80
`
`FIG. 5
`
`Page 5 of 31
` &
`APPLE EXHIBIT 1005 - PAGE 0005
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 4 of 13
`
`5,613,101
`
` 100
`During developmentof 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
`information about the identity of the
`provider, the version of the provider
`and compatibility ranges of that
`version of the provider
`
`
`
`
`
`
`
`
`
`
`
`
`
` 104
`
`
`During execution of a client, determine
`for providers linked with that client
`compatibility between the client and
`
`available versions of those providers
`
`
`
`
`
`
`106
`
`110
`Is compatible version
`
`indicate incompatibility
`available for each of
`
`
`
`those providers?
`
`
`
`
`
`108
`Execute client or
`otherwise indicate
`compatibility
`
`FIG. 6
`
`Page 6 of 31
` ,
`APPLE EXHIBIT 1005 - PAGE 0006
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar.18, 1997
`
`Sheet 5 of 13
`
`5,613,101
`
`
`
`BEGIN 100
`
` 120
`Define Current
`
`
`Indicator for
`
`provider
`
`
`
` 122
`Define Oldest
`
`
`Implementation
`Indicator for
`
`provider
`
`
`
`
` 124
`Define Oldest
`
`
`Definition Indicator
`
`
`for_ provider
`
`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
`
` 160
`Connect client and
`
`
`available version(s) of
`provider
`
`
`
`
` 158
`
`
`Determine available
`version(s) of provider
`
`
`
`
`
`
`
` 162
`Determine
`compatibility between
`client and available
`version(s) of provider
`
`
`
`END 104
`
`FIG. 9
`
`BEGIN 162
`
`
`
`
`180
`
`
`
`184
`Wasthe client linked with
`Is client newer
`the sameversion of the
`
`
`provider which is
`than provider?
`available at execution
`time?
`
`
`
`
`186
`190
`
`182
`
`
`
`Is client too old
`Is provider too
`old for client?
`Compatibility exists
`
`for provider?
`
`
`
`
`
`
`END 162
`
`
` 188
`
`Incompatibility
`FIG. 10
`exists
`
`Page 8 of 31
` 0
`APPLE EXHIBIT 1005 - PAGE 0008
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 7 of 13
`
`5,613,101
`
`
`204
`
`200
`
`
`
`Does value or absolute
`Is value (or absolute
`value) of current indicator
`
`
`value of current indicator
`
`stored in client greater
`
`stored in client specify
`
`
`same version as current
`than value (or absolute
`
`
`alue) of current indicator,
`indicator of provider?
`
`
`of provider?
`
`
`BEGIN 162
`
`
`
`
`206
`
`208
`
`Is value (or absolute
`
`
`Is value (or absolue value)
`value) of Oll stored in
`
`of ODI 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?
`
`
`
` 210
`
`
`
`Signal
`Incompatibility
`
` END 162
`
`202
`
`Signal
`Compatibility 212
`Signal
`Incompatibility
`
`
`
`
`
`
` END 162
`
`FIG. 11
`
`Page 9 of 31
` 2
`APPLE EXHIBIT 1005 - PAGE 0009
`
`
`
`
`
`
`
`Provider Indicator
`
`Current Indicator
`
`Provider Indicator
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 8 of 13
`
`5,613,101
`
`64
`
`-
`
`Current Indicator
`
`FIG. 12
`
`Page 10 of 31
` %
`APPLE EXHIBIT 1005 - PAGE 0010
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 9 of 13
`
`5,613,101
`
`BEGIN 102
`
`240
`Add newfield to
`provider
`list
`
`Set Ol in new field
`
`242
`Set provider
`identification in new
`field
`
`244
`Set current indicator
`in new field
`
`246
`
`FIG. 13
`
`Page 11 of 31
`
`APPLE EXHIBIT 1005 - PAGE 0011
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 10 of 13
`
`5,613,101
`
`42
`
`Current Indicator
`
`Provider Indicator
`
`Provider Location
`
`Current Indicator
`
`Provider Location
`
`FIG. 14
`
`Page 12 of 31
` '
`APPLE EXHIBIT 1005 - PAGE 0012
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 11 of 13
`
`5,613,101
`
`
`
`BEGIN 104
`
` 278
`
`Form implementation
`provider
`list
`
` 280
`Initialize compatibility
`indicator
`
` 282
`
`Morefields to
`search?
`
` 284
`Selectfield 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?
`
`
`
` 290
`
`
`Update compatibility indicator
`to specify version indicated by
`
`selected field or to specify the
`
`field itself
`
`FIG. 15
`
`Page 13 of 31
`
`APPLE EXHIBIT 1005 - PAGE 0013
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 12 of 13
`
`5,613,101
`
`300
`
`320
`
`324
`
`322
`
`326GE324
`
`322 326
`
`326t[326
`|
`|
`NZ 324
`
`320
`
`FIG. 16
`
`Page 14 of 31
` *
`APPLE EXHIBIT 1005 - PAGE 0014
`
`
`
`
`
`
`
`U.S. Patent
`
`Mar. 18, 1997
`
`Sheet 13 of 13
`
`5,613,101
`
`
`348
`
`
`
`Define set of version checking
`signals (current
`indicator,
`Oll, ODI) based on exchanged
`signals
`
`
` 350
`
`Whena device is connected to a
`
`
`
`
`system, exchangesignals to
`connect the sender(client) and
`the receiver (provider)
`
`
`
` 352
`Sendertransmits its current
`indicator to a receiver
`
`
`
` 354
`
`Does the current indicator
`from the sender and the
`current indicator of the
`receiver specify the same
`version?
`
`
`
`FIG. 17
`
`
`
`358
`
`
`
`
`Is version specified by
`receiver's current
`
`indicator newer than the
`
`
`version specified by
`utrent indicator of the
`
`sender?
`
`
`
`
`
` 362
`
`
`Receiver signals
`sender to determine
`
`
`compatibilit
`
`
`
` 368
`
`Receiver sendsits
`
`
`current indicator to
`sender
`
`
`
`
`
`
` 360
`
`Is the version indicated by
`the current indicator of
`
`
`
`356
`the sender older than the
`
`Receiver signals the
`
`
`
`ODI of the receiver?
`senderthat they are
`compatible
`
`
`
`
`
`
`
`
`
`Is version specified by
`receiver’s current
`
`
`374
`indicator older than the
`
`
`
`Signal Compatibility
`version specified by
`sender's Oll?
`
`370
`
`
`
`
`
`
`364
`
`
`Signal
`incompatibility
`
`
`Page 15 of 31
` &
`APPLE EXHIBIT 1005 - PAGE 0015
`
`
`
`
`
`
`
`5,613,101
`
`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.
`
`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 U.S. Patent and
`Trademark Office 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 componentsare
`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 componentor 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 importantrole in a client-provider
`relationship wherein a provider supplies servicesto a client
`because it is important that the provider be able to satisfy
`expectationsofthe client. A client-providerrelationship may
`exist between two computer software programs, two com-
`puter hardware components or between a software program
`and a hardware component. An example ofa 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 numberis 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
`eatlier 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 numbergreater 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 an object
`code file. A compiler (or assembler) is specific to the
`language used and the computer system on whichit will be
`executed. A linker routine, which is either a separate pro-
`
`20
`
`25
`
`30
`
`35
`
`40
`
`30
`
`55
`
`60
`
`65
`
`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”.
`Whena 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 numberis
`incremented. However,
`if the changes are only minor
`changes,then usually only the minor numberis incremented.
`Atlink time, the revision numberof the provider supplying
`the definitions is stored in the executable object code. At
`execution time, the major number of the stored revision
`numberin 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 numberstored 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 numberless
`than 7 such as 6.5, 5.0, etc... .
`, but it would be considered
`
`Page 16 of 31
` ,
`APPLE EXHIBIT 1005 - PAGE 0016
`
`
`
`
`
`
`
`5,613,101
`
`10
`
`20
`
`25
`
`4
`3
`a computer system wherein such components share a client-
`compatible with a provider having a major number greater
`provider relationship and a version of a provider used to
`than or equal to 7 such as 7.5, 8.0, etc... ..
`build the system may be different than a version of the
`The backwards compatibility scheme in VMSpresents
`provider used to execute or run the system. Briefly, accord-
`several problems. First,
`it discourages a developer of a
`ing to the invention, a provider indicator, a current indicator
`provider from assigning to a current version of the provider
`of a provider and a compatibility range are defined for each
`being developed a major number higher than that assigned
`of a client and a provider. A provider indicator identifies a
`to the prior version, even though that version may be
`particular type of provider. A current indicator of a provider
`substantially different from prior versions of the provider.
`specifies that version of the provider. Whena client is linked
`Second, in this versioning schemeit is usually desirable
`with a version of a provider the current indicator of that
`to use the newest version of an operating system to utilize
`provider is stored in the executable client produced, thereby
`features or enhancements unavailable in previous versions.
`identifying the version of the provider, herein called a
`However,
`the newest version of an operating system is
`“definition provider”, used to build theclient.
`usually compatible with the newest version of a shared
`The compatibility range for the client identifies the range
`library and not compatible with older versions of the shared
`of versions of the provider which can be used to execute the
`library. Therefore, clients which were built using newer
`client, i.e. which have an implementation which is compat-
`versions of the shared library on a developer’s system can
`ible with the definitions supplied by the definition provider.
`not be executed using the older version of the shared library
`Preferably, the compatibility range for the client specifies the
`oldest version of the provider which can be used to execute
`on an end user’s system. Thus, developers are encouraged to
`maintain old system installations in order to link with the
`the client. The compatibility range for the provideridentifies
`oldestavailable version of a provider, thereby increasing the
`the range of versions of the provider which could be used to
`number of versions of the provider with which it is com-
`build a client capable of operating with the current version
`patible. Moreover, older versionsof the sharedlibrary might
`of the provider. Preferably, the compatibility range for the
`be retained just to execute clients which were built with
`provider specifies the oldest version of the provider which
`older versions of the shared library. These older versions
`could have been used to build a compatible client. Prefer-
`occupy memory space which might otherwise be available
`ably,
`the versions within each of the two compatibility
`for other purposes.
`ranges are older than or equal in age to the current version.
`For example, consider a situation where two versions of
`The invention also includes a connector for connecting at
`runtime the client and the provider which will be used to
`a provider are available at link time, an earlier version
`30
`having a version numberof 2.0 andalater version having a
`execute the client, herein called an “implementation pro-
`version number of 4.2. The 4.2 version has some features
`vider” to determine compatibility between the client and the
`which are not present in the 2.0 version and which would be
`implementation provider. Compatibility checks are per-
`formed between a client and available versions of the
`advantageous to the client to use. In order to utilize the
`advantageous features, it is preferable to link with the 4.2
`provider(s), implementation providers, with which it has
`version. However, since it is unknown which version of a
`been linked. For each available version of each type of
`provider will be available at runtime,it is also preferable to
`provider compatibility with a client exists in three situations.
`link with the version with the most likelihood of being
`First, if the definition provider specified in the client and the
`compatible with a version available at runtime.In this case,
`implementation provider are the same version of that pro-
`since version 2.0 is compatible with versions greater than or
`vider, then the client and provider are compatible. Second,
`equal to 2.0 and 4.2 is compatible with versions greater than
`if the definition provider specified in the client is newer than
`or equal to 4.2, version 2.0 is more likely to be compatible
`the implementation provider,
`then if the version of the
`with an available version of a provider than the 4.2 version.
`implementation provider is no older than the oldest imple-
`Thus,
`in this case, a client has a choice between either
`mentation provider specified in the client,
`the two are
`utilizing the advantageous features of the 4.2 version or
`compatible, otherwise they are incompatible. Third, if the
`increasing likelihood of compatibility with 2.0. By choosing
`definition provider specified in the client is older than the
`to increase the likelihood of compatibility at runtime and
`implementation provider,
`then if the definition provider
`thus, linking with the earliest version of a provider available,
`specified in the client is no older than the oldest definition
`a client foregoes the advantageousfeatures of later versions
`provider specified in the implementation provider, then the
`of that provider which are also available and which, may, in
`two are compatible.
`fact, be compatible with those earlier versions.
`The invention can be used in systems having multiple
`In other operating systems such as OS/2, as discussed in
`clients and providers. In that case, for each client a list of
`“Inside OS/2”, Gordon Letwin, (Microsoft Press: 1988),
`providers is maintained. For each provider in the list, a
`section 7.11.3, and Windows, version numbers are not used
`current version and a compatibility range are defined. At
`for providers such as shared libraries. OS/2 is a registered
`tuntime,
`the list can be searched to find a compatible
`trademark of Internation Business Machines Corporation. In
`provider, if any exists. Preferably, if more than one com-
`these systems, older versions are designed to be compatible
`patible provider is found,the “best” is chosen. For example,
`with newer versions and newerversions are designed to be
`the best provider may be the most current version of the
`compatible with older versions. In other words, a version of
`provider which is compatible or it may be the version of the
`a provider is designed to be backwards and upwards com-
`provider which is closest to the version of the definition
`patible with other versions of that provider. This places a
`provider.
`burden on developers of the shared library to maintain
`By defining compatibility ranges for a client and for a
`compatibility even when the changesare extensive and even
`provider, the invention provides several advantages. First,
`when the older versions may only be used infrequently.
`the invention permits a client to run with versions of a
`provider which are older than the definition version of the
`SUMMARY OF THE INVENTION
`providerusedto build the client. Thus, a client does not have
`to build only with the oldest version of the provider that it
`wil] ever be used with. This provides a developerof a client
`
`The invention is a method and apparatus for controlling
`and verifying compatibility between modular components of
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`Page 17 of 31
` .
`APPLE EXHIBIT 1005 - PAGE 0017
`
`
`
`
`
`
`
`5,613,101
`
`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 includesa 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 implementthe
`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 42by the processor
`44,
`
`5
`with flexibility in determining the version of the provider
`with which to build the client. Additionally since a client
`maybe linked with a version which is newerthan 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 usedto 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, ie. 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 numbersofthe provider andnotaffect
`the compatibility of the client and the provider unless the
`changes to the provider render it incompatible with older
`versionsof the client. In that case, the compatibility range of
`the provider changesto reflect the changes in compatibility.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`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 xIC compiler
`and a linker 54 such as IBM Id linker. Macintosh System 7
`The above and further advantagesof the invention may be
`and AIX are both commercially available. Background
`better understood by referring to the following description in
`information on the Macintosh System 7 operating system
`conjunction with the accompanying drawings, in which:
`can be found in “Inside Macintosh”, Vol. VI, Addison-
`FIG. 1is asymbolic, simplified block diagram of a system
`Wesley Publishing Co., Inc., 1991, and background infor-
`which may incorporate the invention;
`mation on the AIX operating system can be found in “Calls
`FIG. 2 is a symbolic, simplified block diagram of a
`and Subroutines, AIX Version 3 for RISC System/6000”,
`Vols. I-VI, IBM, 1990, 1991. The IBM xlc compiler is
`computer system which may incorporate the invention;
`described in “XL C User’s Guide, AIX Version 3 for RISC
`FIG.3 illustrates contents of a disk drive of the computer
`System/6000”, chapters 2-4, IBM Corporation, 1990, the
`system of FIG. 2;
`disclosure of which is hereby incorporated by reference.
`FIGS. 4A and 4Billustrate contents at the start and end,
`AIX and RISC System/6000 are trademarksof International
`respectively, of link time of a memory of the computer
`Business Machines Corporation. The 1d linker is discussed
`system of FIG. 2;
`in an article entitled “ld Command” published in IBM,
`FIG. 5 depicts contents at execution time of a memory of
`“R6000 InfoExplorer’, (CD-ROM 1991), the disclosure of
`the computer system of FIG. 2;
`which is herein incorporated by reference.
`FIG.6 is a flow chart depicting in general the steps of the
`Compiler 52 and linker 54 may also be part of the same
`invention;
`computer program, rather than separate programs. More-
`FIG. 7 is a more detailed flow chart depicting the steps of
`over, the compiler 52 and the linker 54 may be onadifferent
`block 100 of FIG. 6;
`computer system 40 than the client 32 and providers 34.
`FIG. 8 is a more detailed flow chart depicting the steps of
`The computer software also includes one or moreclient
`block 102 of FIG. 6;
`programs 60 and one or more provider programs 62. For
`FIG. 9 is a more detailed flow chart depicting the steps of
`example, a client program 60 may be an application program
`block 104 of FIG. 6;
`that accesses routines in a shared library (a provider 62).
`This software may also be located in memory 46. A client
`FIG. 10 is a detailed flow chart depicting steps of block
`program 60 is typically in object code format produced by
`162 of FIG.9;
`passing source codefor the client through a compiler which
`FIG. 11 is a more detailed flow chart of steps performed
`generates object code as its output. A provider program 62
`at block 162 of FIG.9;
`may be in executable object code format or it may be a
`FIG. 12 showsa providerlist which is used when a client
`definition file which is specially built to provide definitions
`is linked with multiple types of providers;
`to use whenlinking. For example, object code modules of a
`FIG. 13 is a flowchart of steps of block 102 of FIG. 6
`shared library may be linked together