Introduction

Joule — Joule — self-hosted energy-aware programming language with compile-time energy budgets.

This is the official documentation for Joule. The full source code lives in the private -core mirror; the public release surface is at openIE-dev/joule-lang.

What you'll find here

  • Install — get the joulec binary on your machine
  • Hello, Joule — first program in 30 seconds
  • Tutorial — a 30-minute hands-on guided tour
  • Reference — every feature, every flag, every API
  • Cookbook — task-oriented recipes
  • Design — why Joule exists and how it fits with the rest of openIE-dev

The openIE-dev ecosystem

Joule is one of five public openIE-dev projects. All five share a common substrate (flowG) and energy-metering layer (substrate-energy):

  • flow-g — the IR + runtime substrate
  • lux-lang — reactive language compiling to flowG
  • jmax — math-native language
  • joule-lang — energy-budgeted compiled language
  • jouledb — energy-metered database

License

Joule binaries are distributed under BSL-1.1. Documentation under CC-BY-4.0. Examples under Apache-2.0.

Install

joulec is published to crates.io and to GitHub Releases.

Fastest: cargo binstall

cargo binstall joulec

cargo-binstall fetches the prebuilt binary for your platform from GitHub Releases without compiling anything.

If you don't have cargo-binstall yet:

cargo install cargo-binstall

From source: cargo install

cargo install joulec

This compiles the source. Slower; useful if your platform isn't in our prebuilt list.

Direct download

curl -fsSL -o joulec.tar.gz \
  https://github.com/openIE-dev/joule-lang/releases/latest/download/joulec-$(uname -s)-$(uname -m).tar.gz
tar xzf joulec.tar.gz
mv joulec-*/joulec /usr/local/bin/

Verify

joulec --version

Hello, Joule

The minimum example. See the source in examples/hello/.

For a richer walkthrough, see the tutorial.

Tutorial

A 30-minute guided tour of Joule from install to a working program.

Tutorial chapters coming with v0.2.0. For now see examples/ for runnable code.

Reference

Complete API, syntax, and runtime reference.

Reference chapters coming with v0.2.0. For embedding APIs see docs.rs/joulec.

Cookbook

Task-oriented recipes.

Cookbook recipes coming with v0.2.0.

Why Joule

Joule exists because [reasoning forthcoming with v0.2.0 docs].

Position in the openIE-dev ecosystem

See How it fits.

How Joule fits the openIE ecosystem

Five public projects share a common substrate:

                       lux-lang   jmax    joule-lang
                            \     |     /
                             \    |    /
                              ▼   ▼   ▼
                             flow-g  ←  ← ← jouledb (metered persistence)
                                ▲
                                │
                          substrate-energy
                              (joules)

[Detailed design discussion in v0.2.0 docs.]