# 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` | |