# aver-rt

`aver-rt` is the shared Rust runtime for Aver.

It is used by:
- the Aver VM runtime adapters in this repository
- Rust projects generated by `aver compile`

The crate exists so Aver semantics live in one place instead of being duplicated
between the VM runtime and generated Rust output.

That shared-runtime role is practical, not just architectural. Improvements to
`AverList`, `String.slice`, or service helpers here affect both generated Rust
programs and the VM-facing adapters that rely on the same semantics.

## What it contains

- `AverList<T>`: persistent list used by Aver list operations, including deep-list
  paths such as teardown, `tail`, and `list_uncons`; append-heavy chains are
  packed into structural segments so the VM and generated Rust share the
  same faster behavior on `append + get(i)` workloads
- `AverDisplay`: Aver-specific display formatting used by `Console.print` and string interpolation
- shared runtime helpers for console, time, disk, env, and string operations
- shared service types:
  - `Header`
  - `HttpResponse`
  - `HttpRequest`
  - `TcpConnection`
- shared service runtimes:
  - `tcp`
  - `http` (behind the `http` feature)
  - `http_server`

## Features

- default: no optional dependencies
- `http`: enables the HTTP client runtime via `ureq`

## Stability

This crate is primarily intended to support Aver-generated programs and the Aver
VM runtime. The public API should be treated as young and evolving.

## Repository

- Source: <https://github.com/jasisz/aver>
- Main project docs: <https://github.com/jasisz/aver/blob/main/README.md>
