|
| 1 | +======================== |
| 2 | +Specification versioning |
| 3 | +======================== |
| 4 | + |
| 5 | +This document describes the versioning of the specification for oneAPI |
| 6 | +elements (e.g. oneMKL, oneVPL) and for oneAPI, which includes all the |
| 7 | +elements. Specification versioning is independent of oneAPI product |
| 8 | +versioning. |
| 9 | + |
| 10 | +Product specification vs standard specification |
| 11 | +=============================================== |
| 12 | + |
| 13 | +A *product specification* documents a single implementation. It is |
| 14 | +typically completed before implementation to get feedback, and as a |
| 15 | +reference for implementation, testing, and the creation of end-user |
| 16 | +documentation. A *standard specification* documents the standard, |
| 17 | +which may have multiple implementations. It is used to get feedback |
| 18 | +and agreement between potential implementations. oneAPI specification |
| 19 | +is primarily a standard specification. An implementation may contain |
| 20 | +features that are not part of the standard. It may be a feature being |
| 21 | +considered for standardization, or features that are not suitable for |
| 22 | +inclusion in oneAPI standard. |
| 23 | + |
| 24 | + |
| 25 | +oneAPI specification versioning |
| 26 | +=============================== |
| 27 | + |
| 28 | +Versioning is MAJOR.MINOR rev REVISION |
| 29 | + |
| 30 | +Increment the: |
| 31 | + |
| 32 | +1. MAJOR version when adding major new functionality and making |
| 33 | + incompatible API changes, including removing APIs. |
| 34 | + |
| 35 | +2. MINOR version when adding minor functionality and API changes |
| 36 | + that are backwards compatible. |
| 37 | + |
| 38 | +3. REVISION when making backwards compatible bug fixes or any editing |
| 39 | + change in the document, including minor changes such as correcting |
| 40 | + typos. Initial REVISION is 1. |
| 41 | + |
| 42 | +The distinction between major and minor functionality is determined by |
| 43 | +the core group. Latest REVISION is implicit because REVISIONs do not |
| 44 | +change the meaning. |
| 45 | + |
| 46 | +Element versioning |
| 47 | +================== |
| 48 | + |
| 49 | +By default, elements do not have independent versioning. An element |
| 50 | +may incorporate another specification by reference, and may include |
| 51 | +extensions or other features that are not part of the included |
| 52 | +specification. DPC++ is an example, as it includes SYCL, which is used |
| 53 | +independent of oneAPI and DPC++ and has its own standards body. Other |
| 54 | +elements can be split out and have independent versioning if the need |
| 55 | +arises with agreement of the oneAPI core team. An example would be |
| 56 | +when an element has multiple implementations, and the implementation |
| 57 | +does not include the rest of the elements. |
| 58 | + |
| 59 | +Specification version approval |
| 60 | +============================== |
| 61 | + |
| 62 | +The oneAPI specification must be approved by its `core team |
| 63 | +<core-teams.rst>`__. Element specifications must be approved by its |
| 64 | +core team and the oneAPI spec core team. Updates which only change |
| 65 | +the revision may be approved by the leads. |
| 66 | + |
| 67 | + |
| 68 | +Provisional versions |
| 69 | +==================== |
| 70 | + |
| 71 | +A specification may be published before approval, but must be labeled |
| 72 | +provisional. Provisional specifications are published as a series of |
| 73 | +revisions until approval. After approval, the provisional label is |
| 74 | +removed and the rev is set to 1. |
| 75 | + |
| 76 | +Example |
| 77 | + | oneAPI provisional 1.1 rev 1 |
| 78 | + | oneAPI provisional 1.1 rev 2 |
| 79 | + | oneAPI provisional 1.1 rev 3 |
| 80 | + | oneAPI 1.1 rev 1 |
| 81 | +
|
0 commit comments