5.20.7 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:

  • Use instance_checkFunctionSupport() to determine whether a specific function or set of functions is supported. You 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 without breaking existing clients in the following ways:

    • If new details are returned, for example static register information, the return value objects are extended with new members. Existing clients will ignore these additions and new clients can reliably see them.
    • 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 will not specify these new arguments and will receive the previous behavior.
    • 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 will not know about this new function and will 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_03_en
Copyright © 2018, 2019 Arm Limited or its affiliates. All rights reserved.