# `nupp.runtime.services.checksum`
Canonical `nupp.checksum` API 1 provider catalog.
Setup imports `service` here and selects an implementation before requiring
`nupp.checksum`. Importing this declaration does not load storage or algorithms.
A provider supplies an algorithms map keyed by canonical algorithm name. Each
descriptor's name agrees with its key, and each create returns independent owned
state. An explicitly selected catalog replaces matching built-in algorithms and
may add names; other built-in algorithms remain available. Without selection the
facade uses the built-in catalog. Discovery order never selects a provider.
The facade validates and retains descriptors while requiring the module. Lookup,
listing, and context creation then use cached descriptors without SPI resolution.
Provider state processes chunks incrementally and retains neither input nor
output spans. Cleanup consumes state without suspension. Reuse these canonical
State and Algorithm identities, including ownership and borrowing signatures.
value returns a non-consuming uint64 snapshot; width specifies its meaningful
bits from 1 through 64. Standard names retain their standard widths and exact
CRC parameters. Checksums detect corruption and provide no authentication.
## Types
### `Algorithm` _interface_
```nupp
interface Algorithm
readonly name: string
readonly width: integer
create: function(self: Algorithm): State
end
```
Immutable algorithm identity, output metadata, and a factory for fresh state.
#### Methods
##### `create`
```nupp
create: function(self: Algorithm): State
```
Creates independent owned state; self is the retained descriptor.
###### Arguments
| Name | Type | Description |
| --- | --- | --- |
| `self` | `Algorithm` | |
###### Returns
| Type | Description |
| --- | --- |
| `State` | |
#### Fields
##### `name`
```nupp
name: string
```
Canonical algorithm name, matching the catalog map key.
##### `width`
```nupp
width: integer
```
Number of meaningful checksum bits.
### `Provider` _interface_
```nupp
interface Provider
readonly algorithms: {[string]: Algorithm}
end
```
A selectable implementation catalog. Extra descriptor members are permitted.
#### Fields
##### `algorithms`
```nupp
algorithms: {[string]: Algorithm}
```
Canonical names mapped to checked, independent-state factories.
### `State` _interface_
```nupp
affine interface State is nupp.Closeable
terminal close: nosuspend function(takes self: State): nil
update: function(exclusive self: State, borrows bytes: ByteSpan): nil
value: function(self: State): uint64
end
```
Independent incremental state; close consumes its ownership without suspension.
#### Methods
##### `close`
```nupp
close: nosuspend function(takes self: State): nil
```
Releases all state resources.
###### Arguments
| Name | Type | Description |
| --- | --- | --- |
| `takes self` | `State` | |
###### Returns
| Type | Description |
| --- | --- |
| `nil` | |
##### `update`
```nupp
update: function(exclusive self: State, borrows bytes: ByteSpan): nil
```
Processes this borrowed chunk without retaining its bytes.
###### Arguments
| Name | Type | Description |
| --- | --- | --- |
| `exclusive self` | `State` | |
| `borrows bytes` | `ByteSpan` | |
###### Returns
| Type | Description |
| --- | --- |
| `nil` | |
##### `value`
```nupp
value: function(self: State): uint64
```
Returns the current unsigned checksum without consuming state.
###### Arguments
| Name | Type | Description |
| --- | --- | --- |
| `self` | `State` | |
###### Returns
| Type | Description |
| --- | --- |
| `uint64` | |
## Values
### `service` _variable_
```nupp
const service: services.Service
```
Select during setup, before the checksum facade loads.