Introduction

JOEL v0.1.0 is here! →

JOEL is a polymodal
programming language

JOEL is a fast, incrementally adoptable all-in-one programming language. Use it for systems programming, AI/ML, Web3, UI development, workflows, and more. Choose [Interpreted] for fast development or [Compiled] for maximum performance — all from a simple file header.

Install JOEL
View install script
$ curl -fsSL https://joel.val-x.com/api/install | bash
USED BY
Compiling 10,000 lines of code
Build time in milliseconds (Linux x64)
JOEL
269.1 ms
269.1 ms
Rust
494.9 ms
494.9 ms
Go
571.1 ms
571.1 ms
Node.js
1,608 ms
1,608 ms

What is JOEL?

Polymodal Execution

Choose [Interpreted] for fast development or [Compiled] for maximum performance — all from a file header.

🌐

Cross-Platform

Compile to native binaries, WASM, EVM, or Solana. One codebase, multiple targets.

📦

Gradual Types

Start with dynamic types, add static types as needed. Type inference throughout.

🔒

Ownership-Lite

Rust-inspired memory safety without the complexity. Automatic memory management with zero-cost abstractions.

🚀

Async/Actor Model

Built-in concurrency with actors and async/await. Perfect for distributed systems and Web3.

💻

Modern Syntax

Clean, readable syntax inspired by Rust, Python, and JavaScript. Pattern matching, modules, and more.

Why JOEL?

1

Language

7+

Domains

4

Targets

Possibilities

Quick Examples

Hello World

[Interpreted]

fn main() {
  print("Hello, JOEL!")
}

Systems Programming

[Compiled]

fn fibonacci(n: int) -> int {
  if n <= 1 {
    return n
  }
  return fibonacci(n - 1) + fibonacci(n - 2)
}

fn main() {
  print(fibonacci(10))  // 55
}

Smart Contracts

[Compiled]
#target: EVM

actor Wallet {
  balance: int = 0
  
  fn deposit(amount: int) {
    self.balance += amount
  }
  
  fn withdraw(amount: int) {
    if amount <= self.balance {
      self.balance -= amount
    }
  }
}

UI Components

[Compiled]
#target: WASM

component Button {
  label: str
  onClick: fn()
  
  fn render() -> Element {
    return <button onClick={self.onClick}>
      {self.label}
    </button>
  }
}

Get Started

  1. Install JOEL — One command to get started
  2. Write your first program — See Quick Start
  3. Explore the docs — Learn about syntax, features, and examples

JOEL — One Language, All Layers 🚀