# `nupp.checksum.spi` Implementation interfaces for `nupp.checksum` algorithm catalogs. The facade chooses the unique highest priority during module initialization. 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. The chosen catalog replaces matching built-in algorithms and may add names; other built-in algorithms remain available. Empty discovery 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 ... ``` Immutable algorithm identity, output metadata, and a factory for fresh state. #### Members | Name | Kind | Description | | --- | --- | --- | | [`name`](#nupp.checksum.spi.Algorithm.name) | field | Canonical algorithm name, matching the catalog map key. | | [`width`](#nupp.checksum.spi.Algorithm.width) | field | Number of meaningful checksum bits. | | [`create`](#nupp.checksum.spi.Algorithm.create) | method | Creates independent owned state; self is the retained descriptor. | #### `name` _field_ ```nupp name: string ``` `@readonly` Canonical algorithm name, matching the catalog map key. #### `width` _field_ ```nupp width: integer ``` `@readonly` Number of meaningful checksum bits. #### `create` _method_ ```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` | | ### `Provider` _interface_ ```nupp interface Provider ... ``` A selectable implementation catalog. Extra descriptor members are permitted. #### Members | Name | Kind | Description | | --- | --- | --- | | [`priority`](#nupp.checksum.spi.Provider.priority) | field | | | [`algorithms`](#nupp.checksum.spi.Provider.algorithms) | field | Canonical names mapped to checked, independent-state factories. | #### `priority` _field_ ```nupp priority: integer? ``` `@readonly` #### `algorithms` _field_ ```nupp algorithms: {[string]: Algorithm} ``` `@readonly` Canonical names mapped to checked, independent-state factories. ### `State` _interface_ ```nupp interface State is nupp.Closeable ... ``` Independent incremental state; close consumes its ownership without suspension. #### Members | Name | Kind | Description | | --- | --- | --- | | [`close`](#nupp.checksum.spi.State.close) | method | Releases all state resources. | | [`update`](#nupp.checksum.spi.State.update) | method | Processes this borrowed chunk without retaining its bytes. | | [`value`](#nupp.checksum.spi.State.value) | method | Returns the current unsigned checksum without consuming state. | #### `close` _method_ ```nupp close: @nosuspend function(takes self: State): nil ``` Releases all state resources. ##### Arguments | Name | Type | Description | | --- | --- | --- | | `takes self` | `State` | | ##### Returns | Type | Description | | --- | --- | | `nil` | | #### `update` _method_ ```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` _method_ ```nupp value: function(self: State): uint64 ``` Returns the current unsigned checksum without consuming state. ##### Arguments | Name | Type | Description | | --- | --- | --- | | `self` | `State` | | ##### Returns | Type | Description | | --- | --- | | `uint64` | |