throbber
115;
`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
`
`
`
  
` 
1
`
`

`

`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
`
`
`
  
` 
3
`
`

`

`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

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