Skip to main content

Design Documents

This section contains design documents, specifications, and architectural decisions for the Ora language and compiler.

Overview

Design documents capture the rationale, trade-offs, and implementation details for major features and architectural decisions in the Ora project. These documents serve as:

  • Historical record: Why decisions were made and what alternatives were considered
  • Reference material: Detailed technical specifications for implementation
  • Collaboration tools: Shared understanding for contributors and maintainers

Document Categories

Language Design

Design decisions about the Ora language syntax, semantics, and features.

Compiler Architecture

Architectural decisions about the compiler pipeline, intermediate representations, and code generation.

Formal Verification

Design of the formal verification system, SMT solver integration, and verification condition generation.

Standard Library

Design of built-in functions, standard library modules, and language primitives.

Contributing Design Documents

When creating a new design document:

  1. Use clear structure: Include context, motivation, design decisions, and alternatives considered
  2. Link to related docs: Reference relevant specifications, examples, or implementation code
  3. Keep it updated: Update documents as designs evolve or are implemented
  4. Include status: Note whether the design is proposed, in progress, or completed

Document Template

# [Feature/Component Name]

## Status
[Proposed | In Progress | Completed | Deprecated]

## Overview
Brief description of what this document covers.

## Motivation
Why this feature/change is needed.

## Design Decisions
Key decisions and rationale.

## Alternatives Considered
Other approaches that were evaluated.

## Implementation Details
Technical specifications and implementation notes.

## References
Links to related documents, issues, or code.

Current Design Documents

Language Design

  • Type System (v0.1) - Working design document for Ora's type system, including memory regions, affine types, refinement predicates, traits, and comparison with Solidity.

Coming Soon

  • Compiler architecture decisions
  • Verification system design
  • Standard library specifications
  • Performance optimization strategies

Note: This section is actively being populated. If you're working on a design document, please add it here following the template above.