U Standard Library Reference
Every function in U belongs to a namespace. Bare function calls are not allowed except print(). To use a namespace, import it at the top of your file:
import Math
import Tensor
import Dataframe
import NN
import Autograd
import IO
Built-in types (I, N, S, B, Tree, [T], {K:V}) and print() require no import.
Math
Basic math functions. All operate on N (double) values.
import Math
| Function |
Signature |
Description |
Math.sqrt(xx) |
N → N |
Square root |
Math.abs(xx) |
N → N |
Absolute value |
Math.floor(xx) |
N → I |
Floor |
Math.ceil(xx) |
N → I |
Ceiling |
Math.round(xx) |
N → I |
Round to nearest |
Math.sin(xx) |
N → N |
Sine |
Math.cos(xx) |
N → N |
Cosine |
Math.tan(xx) |
N → N |
Tangent |
Math.asin(xx) |
N → N |
Arc sine |
Math.acos(xx) |
N → N |
Arc cosine |
Math.atan(xx) |
N → N |
Arc tangent |
Math.atan2(yy, xx) |
(N, N) → N |
Two-argument arc tangent |
Math.exp(xx) |
N → N |
e^x |
Math.ln(xx) |
N → N |
Natural log |
Math.log2(xx) |
N → N |
Base-2 log |
Math.log10(xx) |
N → N |
Base-10 log |
Math.pow(base, exp) |
(N, N) → N |
Power |
Math.min(aa, bb) |
(N, N) → N |
Minimum |
Math.max(aa, bb) |
(N, N) → N |
Maximum |
Math.clamp(xx, lo, hi) |
(N, N, N) → N |
Clamp to range |
Math.PI |
N |
3.14159... |
Math.E |
N |
2.71828... |
Math.INF |
N |
Infinity |
System
System I/O and process control. print() is the only bare function — everything else is namespaced.
import System
| Function |
Signature |
Description |
print(xx) |
Tree → none |
Print any value (bare — no import needed) |
System.log(msg) |
S → none |
Log to stderr |
System.warn(msg) |
S → none |
Warning to stderr |
System.error(msg) |
S → none |
Error to stderr |
System.exit(code) |
I → none |
Exit process |
System.args() |
→ [S] |
Command-line arguments |
System.env(key) |
S → S +N |
Environment variable |
System.time() |
→ N |
Current time (seconds since epoch) |
Tensor
N-dimensional array operations. The core numeric type for ML and scientific computing.
import Tensor
Construction
| Function |
Signature |
Description |
Tensor.zeros(shape) |
[I] → Tensor |
All zeros |
Tensor.ones(shape) |
[I] → Tensor |
All ones |
Tensor.full(shape, val) |
([I], N) → Tensor |
Fill with value |
Tensor.eye(nn) |
I → Tensor |
Identity matrix |
Tensor.from_data(data, shape) |
([N], [I]) → Tensor |
From flat array |
Tensor.arange(start, stop, step) |
(N, N, N) → Tensor |
Range |
Tensor.linspace(start, stop, count) |
(N, N, I) → Tensor |
Evenly spaced |
Tensor.rand(shape) |
[I] → Tensor |
Uniform random [0,1) |
Tensor.randn(shape) |
[I] → Tensor |
Normal random (mean=0, std=1) |
Tensor.xavier_uniform(shape) |
[I] → Tensor |
Xavier/Glorot init |
Tensor.he_normal(shape) |
[I] → Tensor |
He/Kaiming init |
Element-Wise Ops
| Function |
Signature |
Description |
Tensor.add(aa, bb) |
(Tensor, Tensor) → Tensor |
a + b |
Tensor.sub(aa, bb) |
(Tensor, Tensor) → Tensor |
a - b |
Tensor.mul(aa, bb) |
(Tensor, Tensor) → Tensor |
a * b |
Tensor.div(aa, bb) |
(Tensor, Tensor) → Tensor |
a / b |
Tensor.scale(tt, ss) |
(Tensor, N) → Tensor |
t * scalar |
Tensor.neg(tt) |
Tensor → Tensor |
-t |
Tensor.abs(tt) |
Tensor → Tensor |
|
Tensor.sqrt(tt) |
Tensor → Tensor |
√t |
Tensor.clamp(tt, lo, hi) |
(Tensor, N, N) → Tensor |
Clip to range |
Tensor.where(cond, aa, bb) |
(Tensor, Tensor, Tensor) → Tensor |
Conditional select |
Reductions
| Function |
Signature |
Description |
Tensor.sum(tt) |
Tensor → N |
Sum all elements |
Tensor.mean(tt) |
Tensor → N |
Mean |
Tensor.max(tt) |
Tensor → N |
Maximum |
Tensor.min(tt) |
Tensor → N |
Minimum |
Tensor.argmax(tt) |
Tensor → I |
Index of maximum |
Tensor.argmin(tt) |
Tensor → I |
Index of minimum |
Tensor.norm(tt) |
Tensor → N |
L2 norm |
Tensor.dot(aa, bb) |
(Tensor, Tensor) → N |
Dot product |
Linear Algebra
| Function |
Signature |
Description |
Tensor.matmul(aa, bb) |
(Tensor, Tensor) → Tensor |
Matrix multiply |
Tensor.transpose(tt) |
Tensor → Tensor |
Transpose |
Tensor.reshape(tt, shape) |
(Tensor, [I]) → Tensor |
Zero-copy reshape |
Tensor.cat(aa, bb) |
(Tensor, Tensor) → Tensor |
Concatenate |
Tensor.stack(tensors, count) |
([Tensor], I) → Tensor |
Stack 1D → 2D |
Activations
| Function |
Signature |
Description |
Tensor.relu(tt) |
Tensor → Tensor |
max(0, x) |
Tensor.sigmoid(tt) |
Tensor → Tensor |
1 / (1 + e^-x) |
Tensor.tanh(tt) |
Tensor → Tensor |
Hyperbolic tangent |
Tensor.softmax(tt) |
Tensor → Tensor |
Softmax (last dim) |
Tensor.gelu(tt) |
Tensor → Tensor |
GELU (tanh approx) |
Tensor.swish(tt) |
Tensor → Tensor |
x · sigmoid(x) |
Tensor.silu(tt) |
Tensor → Tensor |
Same as swish |
Tensor.leaky_relu(tt, alpha) |
(Tensor, N) → Tensor |
max(αx, x) |
Tensor.elu(tt, alpha) |
(Tensor, N) → Tensor |
ELU |
Tensor.relu6(tt) |
Tensor → Tensor |
clamp(relu(x), 0, 6) |
NN
Neural network layers and operations.
import NN
| Function |
Signature |
Description |
NN.linear(input, weight, bias) |
(Tensor, Tensor, Tensor +N) → Tensor |
Dense layer: input @ W^T + b |
NN.conv2d(input, kernel, stride, padding) |
(Tensor, Tensor, I, I) → Tensor |
2D convolution |
NN.maxpool2d(input, size, stride) |
(Tensor, I, I) → Tensor |
2D max pooling |
NN.layer_norm(tt, gamma, beta, eps) |
(Tensor, Tensor, Tensor, N) → Tensor |
Layer normalization |
NN.rms_norm(tt, weight, eps) |
(Tensor, Tensor, N) → Tensor |
RMS normalization (Llama-style) |
NN.batch_norm(tt, g, b, mean, var, eps, training) |
(...) → Tensor |
Batch normalization |
NN.dropout(tt, rate, training) |
(Tensor, N, B) → Tensor |
Dropout |
NN.embedding(table, indices) |
(Tensor, [I]) → Tensor |
Embedding lookup |
NN.attention(qq, kk, vv, heads, mask) |
(Tensor, Tensor, Tensor, I, Tensor +N) → Tensor |
Multi-head attention |
NN.rope(qq, kk, head_dim) |
(Tensor, Tensor, I) → none |
Rotary position embedding (in-place) |
NN.causal_mask(seq_len) |
I → Tensor |
Upper-triangle mask (-∞) |
Optimizers
| Function |
Signature |
Description |
NN.sgd_step(params, grads, lr) |
([Tensor], [Tensor], N) → none |
SGD: w -= lr * grad |
NN.adam_step(params, grads, mm, vv, lr, beta1, beta2, eps, step) |
(...) → none |
Adam optimizer |
Loss Functions
| Function |
Signature |
Description |
NN.mse_loss(pred, target) |
(Tensor, Tensor) → N |
Mean squared error |
NN.cross_entropy(logits, labels, batch) |
(Tensor, [I], I) → N |
Cross-entropy loss |
Autograd
Automatic differentiation via tape-based recording.
import Autograd
| Function |
Signature |
Description |
Autograd.begin() |
→ none |
Start recording operations |
Autograd.end() |
→ none |
Stop recording |
Autograd.leaf(tt) |
Tensor → none |
Mark tensor as trainable parameter |
Autograd.backward(tape, loss_grad) |
(Tape, Tensor +N) → none |
Compute all gradients |
Autograd.grad(tape, tt) |
(Tape, Tensor) → Tensor +N |
Get gradient for a tensor |
Supported gradient operations: add, mul, matmul, relu, scale.
Dataframe
Columnar data operations for tabular data.
import Dataframe
Construction
| Function |
Signature |
Description |
Dataframe.from_csv(path) |
S → Dataframe +A |
Load CSV (async) |
Dataframe.from_csv_string(csv) |
S → Dataframe |
Parse CSV string |
Dataframe.from_json(rows) |
[Tree] → Dataframe |
From JSON array |
Dataframe.from_columns(cols) |
{S: [Tree]} → Dataframe |
From column map |
Selection & Filtering
| Function |
Signature |
Description |
df.select(cols) |
[S] → Dataframe |
Keep columns |
df.drop(col) |
S → Dataframe |
Remove column |
df.head(nn) |
I → Dataframe |
First n rows |
df.sort(col, desc) |
(S, B) → Dataframe |
Sort by column |
df.filter_mask(mask) |
Column → Dataframe |
Keep rows where mask=true |
df.unique(col) |
S → Dataframe |
Deduplicate by column |
df.sample(nn) |
I → Dataframe |
Random sample |
Aggregation
| Function |
Signature |
Description |
df.get_column(name) |
S → Column |
Get column by name |
df.count() |
→ I |
Row count |
df.groupby_agg(group, agg, func) |
(S, S, S) → Dataframe |
GroupBy + aggregate ("sum"/"mean"/"count"/"min"/"max") |
df.with_column(name, col) |
(S, Column) → Dataframe |
Add/replace column |
df.join(other, on, how) |
(Dataframe, S, S) → Dataframe |
Join ("inner"/"left"/"right") |
Column
Typed array operations on individual columns.
import Column
Aggregation
| Function |
Signature |
Description |
col.sum_I() |
→ I |
Sum (integer column) |
col.sum_N() |
→ N |
Sum (float column) |
col.mean() |
→ N |
Mean |
col.min_I() / col.max_I() |
→ I |
Min/max (integer) |
col.min_N() / col.max_N() |
→ N |
Min/max (float) |
Comparison (returns boolean Column)
| Function |
Signature |
Description |
col.gt_I(val) |
I → Column |
Greater than |
col.lt_I(val) |
I → Column |
Less than |
col.eq_I(val) |
I → Column |
Equal to |
String Operations
| Function |
Signature |
Description |
col.str_len() |
→ Column[I] |
String lengths |
col.str_upper() |
→ Column[S] |
Uppercase |
col.str_lower() |
→ Column[S] |
Lowercase |
col.str_contains(pat) |
S → Column[B] |
Contains substring |
Conversion
| Function |
Signature |
Description |
col.to_tensor() |
→ Tensor |
Column → Tensor |
Safetensors
Load model weights from HuggingFace safetensors format.
import Safetensors
| Function |
Signature |
Description |
Safetensors.load(path) |
S → SafetensorFile +A |
Load from file |
Safetensors.parse(buffer) |
[Q8] → SafetensorFile |
Parse from bytes |
Safetensors.get(file, name) |
(SafetensorFile, S) → Tensor +N |
Get tensor by name |
Safetensors.info(file) |
SafetensorFile → S |
List all tensors |
Supported dtypes: F16, BF16, F32, F64.
Tokenizer
Text tokenization for NLP models.
import Tokenizer
| Function |
Signature |
Description |
Tokenizer.load(vocab) |
S → Tokenizer |
Load from vocab text |
Tokenizer.encode(tok, text) |
(Tokenizer, S) → [I] |
Text → token IDs |
Tokenizer.decode(tok, ids) |
(Tokenizer, [I]) → S |
Token IDs → text |
Tokenizer.encode_bytes(text) |
S → [I] |
Byte-level tokenization |
KVCache
Key-value cache for autoregressive transformer generation.
import KVCache
| Function |
Signature |
Description |
KVCache.new(layers, max_seq, d_model) |
(I, I, I) → KVCache |
Allocate cache |
KVCache.append(kv, layer, kk, vv) |
(KVCache, I, Tensor, Tensor) → none |
Cache one token's K,V |
KVCache.get_k(kv, layer) |
(KVCache, I) → Tensor |
Get cached keys |
KVCache.get_v(kv, layer) |
(KVCache, I) → Tensor |
Get cached values |
KVCache.advance(kv) |
KVCache → none |
Increment position |
KVCache.reset(kv) |
KVCache → none |
Clear cache |
IO
File and network I/O (async by default).
import IO
| Function |
Signature |
Description |
IO.read(path) |
S → S +A |
Read file to string |
IO.write(path, data) |
(S, S) → none +A |
Write string to file |
IO.read_bytes(path) |
S → [Q8] +A |
Read file to bytes |
IO.write_bytes(path, data) |
(S, [Q8]) → none +A |
Write bytes to file |
Template Tags (no import needed)
Template tags are built-in and produce format-safe typed strings:
| Tag |
Type |
Example |
HTML\...`` |
Formats.HTML |
HTML\{{name}} `` |
SQL\...`` |
Formats.SQL |
SQL\SELECT * FROM {{table}}`` |
CSS\...`` |
Formats.CSS |
CSS\color: {{color}}`` |
JSON\...`` |
Formats.JSON |
JSON\{"key": {{val}}}`` |
Regex\...`` |
Formats.Regex |
Regex\[a-z]+`` |
Dataframe\...`` |
Formats.Dataframe |
Dataframe\select {{cols}} from {{df}}`` |
Shell\...`` |
Formats.Shell |
Shell\ls {{dir}}`` |
URL\...`` |
Formats.URL |
URL\/api/{{resource}}`` |
Markdown\...`` |
Formats.Markdown |
Markdown\# {{title}}`` |
Modifiers (no import needed)
| Modifier |
Meaning |
Example |
+M |
Mutable |
count: I +M = 0 |
+N |
Nullable |
name: S +N = none |
+R |
Heap (refcounted) |
data: [I] +R |
+A |
Async |
f fetch(url: S) -> S +A |
+V |
Vectorized / GPU |
Tensor.add(aa, bb) +V |
+W |
Lazy (streaming) |
df.filter(pred) +W |
+R(GPU) |
GPU-resident memory |
weights +R(GPU) |
GGUF
Load models from llama.cpp GGUF format.
import GGUF
| Function |
Signature |
Description |
GGUF.parse(buffer) |
[Q8] → GGUFFile |
Parse GGUF from bytes |
GGUF.get(file, name) |
(GGUFFile, S) → Tensor +N |
Get tensor (auto-dequantizes Q4_0/Q8_0/F16/BF16/F32) |
GGUF.get_u32(file, key) |
(GGUFFile, S) → I |
Get metadata integer |
GGUF.get_f32(file, key) |
(GGUFFile, S) → N |
Get metadata float |
GGUF.get_str(file, key) |
(GGUFFile, S) → S |
Get metadata string |
GGUF.info(file) |
GGUFFile → S |
List all tensors and metadata |
BitNet
Ternary (1.58-bit) weight quantization and matmul.
import BitNet
| Function |
Signature |
Description |
BitNet.quantize(weight) |
Tensor → BitNetWeight |
Float → 2-bit ternary (-1, 0, +1) |
BitNet.matmul(input, weight) |
(Tensor, BitNetWeight) → Tensor |
Add/sub only — no float multiply |
LoRA
Low-Rank Adaptation for model customization without retraining.
import LoRA
| Function |
Signature |
Description |
LoRA.load(file, layers, rank, alpha) |
(SafetensorFile, I, I, N) → LoRAAdapter |
Load adapter from safetensors |
LoRA.linear(input, weight, bias, aa, bb, scale) |
(...) → Tensor |
Linear + LoRA: W + A×B×scale |
Steering
Activation steering for behavior control.
import Steering
| Function |
Signature |
Description |
Steering.load(file, name, strength, layer) |
(...) → SteeringConfig |
Load vector from safetensors |
Steering.apply(hidden, config, current_layer) |
(Tensor, SteeringConfig, I) → none |
Add direction to activations |
Steering.compute(positive, negative) |
([Tensor], [Tensor]) → Tensor |
Compute from contrastive pairs |
SessionPool
Multi-user inference with fork() and CoW memory sharing.
import SessionPool
| Function |
Signature |
Description |
SessionPool.new(model, tokenizer, max, seq_len) |
(...) → SessionPool |
Create pool |
SessionPool.warmup(pool, prompt) |
(SessionPool, S) → none |
Pre-compute system prompt KV |
SessionPool.save_warmup(pool, path) |
(SessionPool, S) → none |
Save to ZFS |
SessionPool.load_warmup(pool, path) |
(SessionPool, S) → none |
Load from ZFS |
SessionPool.handle(pool, message, fd) |
(SessionPool, S, I) → I |
fork() and handle request |
SessionPool.reap(pool) |
SessionPool → none |
Clean up finished sessions |