Skip to main content

Vera

Vera is a programming language designed for large language models to write. It has mandatory contracts, algebraic effects, typed slot references instead of variable names, and a compiler that emits WebAssembly. Contracts are verified statically with Z3 where Z3 can decide them, and the compiled program also checks its contracts at run time. A contract code generation cannot express, such as a quantified ensures, is reported as a runtime check but is not compiled into one. Recursion must be shown to terminate (decreases) or declare that it may not (Diverge), every runtime trap names its cause, and SQL injection is a compile-time error.

Full documentation, examples, and the language specification are available at veralang.dev and in the GitHub repository.

Install a released version

Vera requires Python 3.11 or later. Create a virtual environment and install the veralang distribution:

python -m venv .venv
source .venv/bin/activate
python -m pip install veralang

On Windows, activate the environment with .venv\Scripts\activate instead. For editor and agent integration through the language server, install the LSP extra:

python -m pip install "veralang[lsp]"

VS Code users can pair that server with Vera Language from the VS Code Marketplace; the extension supplies syntax highlighting and starts vera lsp automatically.

The distribution is named veralang, but the installed command remains vera, and Python code still imports it as import vera. Do not run pip install vera: that name belongs to an unrelated ERAV citizen-science project on PyPI. The wheel ships the compiler and the vera command only — the bundled examples, the conformance suite, and the specification live in the GitHub repository.

Upgrading to 0.2.0: the checker and verifier are stricter than in 0.1.x, so 0.2.0 refuses some programs 0.1.13 accepted — most often a recursive function with neither decreases nor Diverge (E137), a decreases measure that is not proved to decrease (E502), or a name, type or effect the checker cannot resolve. The CHANGELOG lists each new check.

Install from GitHub source

The source route provides the full environment — the examples, conformance programs, and specification alongside the toolchain (the recommended setup for agents learning the language) — and remains the route for compiler development, unreleased changes, and testing the current main branch:

git clone https://github.com/aallan/vera.git
cd vera
python -m venv .venv
source .venv/bin/activate
python -m pip install -e .

Use python -m pip install -e ".[lsp]" for the language server or python -m pip install -e ".[dev]" when working on the compiler.

Try it

public fn safe_divide(@Int, @Int -> @Int)
  requires(@Int.1 != 0)
  ensures(@Int.result == @Int.0 / @Int.1)
  effects(pure)
{
  @Int.0 / @Int.1
}

public fn main(-> @Int)
  requires(true)
  ensures(@Int.result == 5)
  effects(pure)
{
  safe_divide(2, 10)
}
vera check program.vera
vera verify program.vera    # proves main returns 5 from safe_divide's contract
vera run program.vera       # prints 5
vera verify --timeout-ms 60000 program.vera  # raise the per-query Z3 budget

See the CLI cookbook, language reference, supported-platform policy, and issue tracker for more.

Metadata

Release files for veralang 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for veralang 0.2.1
File Size Uploaded
veralang-0.2.1.tar.gz 4.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for veralang 0.2.1
File Interpreter ABI Platform
veralang-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 5.8 MB

Release files / veralang-0.2.1.tar.gz

Download URL veralang-0.2.1.tar.gz
Size 4.1 MB
Tags Source
SHA-256 checksum
How to use checksums
03a8f1fd1e77774b73a15915015323ed9d3c73f1f0ee9f00c478f41d9b2683a7
BLAKE2b-256 checksum
How to use checksums
405bb900741c8362ddd98232f80b2e05d1eeafcaa18d407254da74c39651ff09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / veralang-0.2.1-py3-none-any.whl

Download URL veralang-0.2.1-py3-none-any.whl
Size 1.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9625511570592f504f72325ee31fea894892b501d373214cc79fffa852f351f6
BLAKE2b-256 checksum
How to use checksums
4695df817f319a0cda8751b33523650880858dc355d3e0a30e7cbda7b0e6b773
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page