1# Platform Lexicon 2 3This lexicon defines standard platform property names and values that servers 4MAY support in the `Platform` message to facilitate interoperability. New 5values can be added by submitting a PR against this repository, which requires 6signing the [Google CLA](https://opensource.google/documentation/reference/cla). 7If signing the Google CLA is undesirable, you may submit an issue instead. 8 9The following standard property `name`s are defined: 10 11* `OSFamily`: This describes the operating system family. Multiple values 12 are not allowed and an exact match is required. 13 14 The following standard values are defined: 15 16 - `aix` 17 - `freebsd` 18 - `linux` 19 - `macos` 20 - `sunos` 21 - `windows` 22 23 Additional values may be defined by the server. For other POSIX systems 24 the recommendation is to use the output of `uname -s` in lower case. 25 26* `ISA`: This describes the instruction set architecture including 27 instruction set extensions and versions. Multiple values are allowed. If 28 multiple values are specified, they are AND-ed together: the worker is 29 required to support all of the listed values. 30 31 The following standard instruction set architecture values are defined: 32 33 - `arm-a32` (little endian) 34 - `arm-a32-be` (big endian) 35 - `arm-a64` (little endian) 36 - `arm-a64-be` (big endian) 37 - `arm-t32` (little endian) 38 - `arm-t32-be` (big endian) 39 - `la64v100` (little endian) 40 - `power-isa-be` (big endian) 41 - `power-isa-le` (little endian) 42 - `rv32g` (little endian) 43 - `rv64g` (little endian) 44 - `sparc-v9` (big endian) 45 - `x86-32` 46 - `x86-64` 47 48 The following standard instruction set extension and version values are 49 defined: 50 51 - `arm-neon` 52 - `arm-sve` 53 - `arm-vfpv3` 54 - `arm-vfpv4` 55 - `armv6` 56 - `armv7` 57 - `armv8` 58 - `x86-avx` 59 - `x86-avx2` 60 - `x86-avx-512` 61 - `x86-sse4.1` 62 - `x86-sse4.2` 63 64 Additional values may be defined by the server. Vendor-neutral names are 65 recommended. 66 67 Clients SHOULD NOT request instruction set extensions or versions without 68 requesting an instruction set architecture. 69 70 Examples with multiple values: 71 72 ```json 73 // (Platform proto) 74 { 75 "properties": [ 76 { 77 "name": "ISA", 78 "value": "x86-64" 79 }, 80 { 81 "name": "ISA", 82 "value": "x86-avx2" 83 } 84 ] 85 } 86 ``` 87 88 ```json 89 // (Platform proto) 90 { 91 "properties": [ 92 { 93 "name": "ISA", 94 "value": "arm-a64" 95 }, 96 { 97 "name": "ISA", 98 "value": "armv8" 99 }, 100 { 101 "name": "ISA", 102 "value": "arm-sve" 103 } 104 ] 105 } 106 ``` 107 108 ```json 109 // (Platform proto) 110 { 111 "properties": [ 112 { 113 "name": "ISA", 114 "value": "arm-a32" 115 }, 116 { 117 "name": "ISA", 118 "value": "armv7" 119 }, 120 { 121 "name": "ISA", 122 "value": "arm-vfpv4" 123 } 124 ] 125 } 126 ``` 127