# Module: `nupp`
The always-available standard-library namespace.
`nupp` is a table the prelude declares, so its fields are in scope everywhere
without a `require`; each implementation loads only if the checked program
actually uses it. A binding called `nupp` shadows it deliberately, the way a
binding called `string` would.
Its public namespaces are `nupp.data` (JSON, UTF-8, UUIDs, hashes and
checksums), `nupp.io` (buffers, byte views, readers and writers),
`nupp.io.Path` and `nupp.io.URI` (filesystem paths and resource identifiers),
`nupp.math` (scalar helpers and two-dimensional vectors), `nupp.peg` (textual
parsing-expression grammars compiled at either phase), and `nupp.fieldcodec`
(reflection-driven keyed codecs).
The compiler-provided ownership operations also live under this global:
`nupp.drop`, `nupp.borrow`, `nupp.intoRaw`, `nupp.fromRaw`,
`nupp.borrowFrom`, and `nupp.pin`. The compiler implements them, so they type
nothing like ordinary functions and are not values you can pass around. The
old bare spellings remain aliases, but new code should use `nupp.*`.
This module's siblings are ordinary modules shipped with the compiler, reached
with `require` and separate from the fields of the ambient global:
`nupp.bytes`, `nupp.profile`, `nupp.resources`, `nupp.zone`, and
`nupp.compiler`, which holds the self-hosted compiler implementation and is hidden
from public API documentation by its `@!internal` namespace root.
```nupp
local zone = require("nupp.zone")
```
## Submodules
| Module | Description |
| --- | --- |
| `nupp.bytes` | Typed binary reads and writes over a string.buffer.Buffer. |
| `nupp.data` | JSON, UTF-8, UUIDs, hashes and checksums. |
| `nupp.fieldcodec` | Type-directed keyed codecs materialized from semantic reflection. |
| `nupp.io` | Buffers, byte views, readers, writers, filesystem paths and URIs. |
| `nupp.log` | Leveled logging over a swappable destination. |
| `nupp.math` | Scalar helpers and two-dimensional vectors. |
| `nupp.peg` | Compiles textual parsing-expression grammars into reusable matchers. |
| `nupp.profile` | Profiling, in two channels. |
| `nupp.resource\_set` | — |
| `nupp.resources` | Owning wrappers for Lua's file handles. |
| `nupp.span` | Bounds-carrying borrowed pointer views. |
| `nupp.suspension` | Waiting, as an operation with an installable handler. |
| `nupp.workers` | Isolated worker threads. |
| `nupp.zone` | Gated LuaJIT profiler zones: the stack work is skipped until a profiler asks for it. |
## Types
### `Debug` _interface_
Values with deterministic compiler-generated debug formatting.
```nupp
interface nupp.Debug
debug: function(self): string
end
```
#### Methods
##### `debug`
```nupp
debug: function(self): string
```
###### Arguments
| Name | Type | Description |
| --- | --- | --- |
| `?` | `self` | |
###### Returns
| Type | Description |
| --- | --- |
| `string` | |