Joule Documentation
Welcome to the Joule programming language documentation (v1.1.7). Joule is developed by Open Interface Engineering, Inc.
For New Users
- Getting Started -- Install the compiler and write your first Joule program
- Language Tour -- Learn Joule's syntax and features through examples
Guides
- Energy System Guide -- Compile-time energy budgets: Joule's defining feature
- Compiler Reference -- CLI usage, flags, backends, and the compilation pipeline
- JIT Compilation -- Interactive development with
--jitand--watch - Polyglot Energy Analysis -- Measure energy in Python, JavaScript, and C code
- Accelerator Energy -- GPU and accelerator energy measurement across vendors
- TensorForge -- Energy-aware ML framework built on Joule
Language Reference
The formal specification of Joule's syntax and semantics.
- Types -- Primitives, compounds, generics, union types, type inference
- Expressions -- Operators, pipe operator, literals, control flow, closures
- Items -- Functions, structs, enums, traits, impls, modules, const fn, comptime
- Patterns -- Pattern matching: or patterns, range patterns, guard clauses
- Attributes -- Energy budgets, #[test], #[bench], thermal awareness
- Memory -- Ownership, borrowing, references, lifetimes
- Concurrency -- Async/await, spawn, channels, task groups, parallel for
- Energy -- Energy system specification with accelerator support
Standard Library Reference
Joule ships with 110+ batteries-included modules.
- Overview -- Index of all standard library modules
- String -- String type and operations
- Vec -- Dynamic arrays
- Option -- Optional values
- Result -- Error handling
- HashMap -- Key-value maps
- Primitives -- Numeric types, bool, char
- Collections -- All collection types
- I/O -- File and stream I/O
- Math -- Mathematical functions and linear algebra
Feedback
To report bugs, request features, or ask questions, visit joule-lang.org or open an issue on GitHub.