The Statically-Typed Language for Architectural Systems.

Prady combines the developer ergonomics of TypeScript with zero-cost LLVM native compilation, 28 production data structures, and compiler-enforced architectural contracts.

>irm https://raw.githubusercontent.com/technopradyumn/prady/main/install.ps1 | iex

After installation, open a new terminal and run prady version, then prady run .\hello.pr (CMD: prady run hello.pr).See all installation steps, manual downloads, and source-build commands.

Idiomatic Prady

Designed for Clean Systems and Fast Execution

Explore language ergonomics: from compiler-enforced layer contracts to functional collection pipelines and native algorithmic types.

architecture.pr
// Enforce architectural boundaries at compile-time
architecture EnterpriseApp {
    layer Core {
        spec: "Business models & domain interfaces"
    }
    layer Data {
        spec: "Database access and persistence"
    }
    layer Presentation {
        spec: "REST controllers & GraphQL endpoints"
    }

    // Core layer is protected from database coupling
    contract CleanArchitecture {
        Core cannot import Data;
        Core cannot import Presentation;
    }
}

// Compiler immediately flags any invalid cross-boundary import!
// First-class functional collections
fn processMetrics(events: List<Event>) -> Map<String, Int> {
    let activeUsers = events
        .filter(fn(e: Event) -> Bool {
            return e.timestamp > 1000 && e.status == "ACTIVE";
        })
        .map(fn(e: Event) -> String {
            return e.userId;
        });

    let frequency = Map<String, Int>();
    foreach id in activeUsers {
        let count = frequency.get(id) ?? 0;
        frequency.set(id, count + 1);
    }
    return frequency;
}
// All 28 data structures are native standard types
fn main() {
    // Self-balancing Red-Black Tree with O(log N) lookup
    let tree = RedBlackTree<Int, String>();
    tree.insert(42, "Prady");
    tree.insert(17, "Compiler");
    tree.insert(99, "LLVM");

    // Zero-overhead LRU Cache with capacity enforcement
    let cache = LRUCache<String, UserProfile>(1000);
    cache.put("usr_101", fetchUserProfile());

    // Prefix Trie for O(K) autocomplete search
    let dictionary = Trie();
    dictionary.insert("algorithm");
    print("Has prefix 'algo': " + dictionary.startsWith("algo"));
}
// Exhaustive matching and clean control structures
fn handleRequest(path: String, method: String) -> Response {
    switch path {
        case "/api/v1/health":
            return Response(200, "OK");

        case "/api/v1/compile":
            if (method != "POST") {
                return Response(405, "Method Not Allowed");
            }
            return compilePradySource();

        case "/api/v1/download":
            return serveLatestBinary();

        default:
            return Response(404, "Endpoint Not Found");
    }
}
Core Pillars

Why Modern Engineers Build with Prady

Architecture-as-Code

Define boundaries and module constraints (cannot import, spec, contract) directly in source files. The compiler rejects architectural erosion before code ever merges.

Read Architecture Guide →

28 Built-In Data Structures

Stop reimplementing or searching for external packages. Self-balancing Red-Black Trees, Tries, LRU/LFU Caches, Heaps, and Graphs are first-class standard types.

Browse 28 Data Structures →

Native LLVM Compilation

Compiles down to standalone, zero-dependency native binaries for Windows, macOS, and Linux. Enjoy predictable performance and instant startup times.

Installation Details →

Complete Developer Tooling

Equipped with an official VS Code extension, Language Server Protocol (LSP), diagnostics, hover tooltips, and an automated package manager (prady add).

Explore Tooling →
The Rationale

Why Prady over Traditional Stacks?

In modern systems programming, teams often struggle balancing low-level machine efficiency against cognitive overhead and architectural decay.

✓
Memory Safety & Native Speed without Header Hell

Unlike C or C++, Prady eliminates dangerous memory bugs, pointer arithmetic surprises, and complicated include hierarchies while matching raw compiled performance.

✓
TypeScript-Grade Developer Ergonomics

Features structural type inference, modern lambdas, higher-order collection pipelines, and readable error diagnostics that feel familiar from minute one.

✓
Compiler-Enforced Enterprise Architecture

No separate architectural linter required. Define layer rules in code, and the compiler ensures your code base never turns into an unmaintainable monolith.

Quick Start Guide

Up and Running in 4 Simple Steps

From installing the compiler and editor extension to compiling your first native standalone binary.

1

Install the Prady Toolchain

One-command install

Install the latest native compiler and language server without setting up Rust or building from source.

Windows PowerShell
irm https://raw.githubusercontent.com/technopradyumn/prady/main/install.ps1 | iex
💡 This command must be run in PowerShell. For Command Prompt, macOS, Linux, or a source build, see the installation guide.
2

Install the Official VS Code Extension

IDE & Language Server

Get rich IDE support: syntax highlighting for all 32 keywords, inline error diagnostics, hover tooltips, and real-time architecture enforcement.

Terminal / VS Code CLI
code --install-extension technopradyumn.prady-lang
💡 In VS Code:Open Extensions panel (Ctrl+Shift+X or Cmd+Shift+X) and search for Prady Language.
3

Write Your First Program (main.pr)

Source Code

Create a file named main.pr and add a function with collection manipulation and printing:

main.pr
fn main() {
    print("Welcome to Prady v1.0.0!");
    let numbers = [1, 2, 3, 4, 5, 6];
    let evens = numbers.filter(fn(x: Int, i: Int) -> Bool {
        return x % 2 == 0;
    });
    print("Even numbers: " + evens.join(", "));
}
4

Execute or Compile to Native LLVM Binary

Build & Run

Run immediately in development mode, or compile directly into an optimized standalone binary.

1. Run immediately in development
prady run main.pr
2. Build standalone optimized native binary
prady build main.pr -o my-app
3. Verify architecture contracts & types without executing
prady check main.pr