# `Hyperlang.Program`
[🔗](https://github.com/hyperbob-labs/hyperlang/blob/v0.1.0/lib/hyperlang/program.ex#L1)

An immutable, content-addressed guest program.

`Hyperlang.program/1,2` returns this struct. Treat it as an opaque value:
pass it to `Hyperlang.run/4` or `Hyperlang.module/1`, and compare or cache
it by `content_hash`. The same source and manifest always produce an equal
program. `metadata` holds public program metadata (declared exports, the
normalized manifest summary and the source snapshot listing); it never
names generated modules or helpers.

# `t`

```elixir
@type t() :: %Hyperlang.Program{
  artifact: term(),
  compiler_version: term(),
  content_hash: term(),
  manifest_hash: term(),
  metadata: term(),
  source_hash: term(),
  stdlib_version: term()
}
```

An immutable compiled program value.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
