4.18.8 Interface versioning

Interface versioning is implicit and per-function in the Iris interfaces. Explicit interface versioning is not necessary for Iris interfaces and therefore is not provided.

Versioning works as follows:

  • A caller can use instance_checkFunctionSupport() to determine whether a specific function or set of functions is supported. It can also use instance_getFunctionInfo() to check which mandatory and optional arguments are supported by a specific function.
  • Callers only take the information they need from return value objects. They must ignore all object members they do not know about.
  • New functionality might be added to Iris in the following ways:

    • If new details are returned for certain queries, for example static register information, the return value objects are extended with new members. Existing clients ignore these additions and new clients can reliably see them. The target is extended without breaking existing clients.
    • If new optional features are added to a function call, they are added as optional arguments, with a default value that is fully compatible with the previous behavior of the function. Existing clients do not specify these new arguments and receive the previous behavior. The target is extended without breaking existing clients.
    • If the semantics of a function change so significantly that it cannot remain compatible with the previous behavior by adding optional arguments, a new function with a new name must be added. Existing clients do not know about this new function and call the existing function. If the existing function is no longer supported, they will find out reliably.
    • New orthogonal functions are added, extending the target without breaking existing clients.

For a new feature to become useful and usable, it must be supported by both the client and the target.

Non-ConfidentialPDF file icon PDF version101196_0100_00_en
Copyright © 2018 Arm Limited or its affiliates. All rights reserved.