# `nupp.system.spi`
Implementation interface for environment facts.
Importing this declaration loads no host implementation. Facts describe the
executing Nupp ABI, including emulated environments, and remain fixed for the
loaded facade. Providers report nonempty platform and architecture names,
little or big endianness, and a 32- or 64-bit pointer width. They must agree
with the target ABI used by generated code.
availableParallelism estimates the number of execution units usable by this
process, including host restrictions, and returns an integer of at least one.
It must not create a worker pool. The browser implementation may suspend while
requesting host facts. The facade chooses an external implementation by
priority, then uses its native or browser fallback when discovery is empty.
## Types
### `Provider` _interface_
```nupp
interface Provider ...
```
Facts and a parallelism query for the executing ABI.
#### Members
| Name | Kind | Description |
| --- | --- | --- |
| [`priority`](#nupp.system.spi.Provider.priority) | field | |
| [`platform`](#nupp.system.spi.Provider.platform) | field | Platform name, such as macos, linux, windows, or browser. |
| [`architecture`](#nupp.system.spi.Provider.architecture) | field | Architecture name, such as aarch64, x8664, or wasm32. |
| [`endianness`](#nupp.system.spi.Provider.endianness) | field | Byte order: little or big. |
| [`pointerBits`](#nupp.system.spi.Provider.pointerBits) | field | Pointer width in bits: 32 or 64. |
| [`availableParallelism`](#nupp.system.spi.Provider.availableParallelism) | method | Estimates usable execution units, always at least one. |
#### `priority` _field_
```nupp
priority: integer?
```
`@readonly`
#### `platform` _field_
```nupp
platform: string
```
`@readonly`
Platform name, such as macos, linux, windows, or browser.
#### `architecture` _field_
```nupp
architecture: string
```
`@readonly`
Architecture name, such as aarch64, x86_64, or wasm32.
#### `endianness` _field_
```nupp
endianness: string
```
`@readonly`
Byte order: little or big.
#### `pointerBits` _field_
```nupp
pointerBits: integer
```
`@readonly`
Pointer width in bits: 32 or 64.
#### `availableParallelism` _method_
```nupp
availableParallelism: function(): integer
```
`@readonly`
Estimates usable execution units, always at least one.
##### Returns
| Type | Description |
| --- | --- |
| `integer` | |