Wave is a pure systems programming language designed for ultimate low-level control. Unlike other languages, Wave has zero builtin functions - giving you complete control over your program's behavior. Wave operates in two distinct modes:
|
|
β οΈ Development Status
Wave is in active development. The compiler is functional but many features are still being implemented. See our roadmap for current progress.
- LLVM 14+
- Linux(Debian etc.) (Windows/macOS support coming soon)
curl -fsSL https://wave-lang.dev/install.sh | bash -s -- latest
# Create a simple program
echo 'fun main() { }' > hello.wave
# Compile in low-level mode (no standard library)
wavec build hello.wave
# Or compile with Vex integration (when available)
wavec build hello.wave --with-vex
Absolutely no builtin functions or runtime. What you write is what you get - pure machine code with no hidden costs or surprises. |
Choose your abstraction level: raw system calls for maximum control, or rich standard library through Vex package manager. |
Rust-style error messages, advanced CLI, and seamless integration with the upcoming Vex ecosystem. |
# Display help
wavec help
# Compile a Wave program
wavec build <file> [options]
# Run a Wave program directly
wavec run <file>
# Build options
wavec build program.wave -o output # Specify output file
wavec build program.wave --debug # Enable debug mode
wavec build program.wave -O2 # Optimization level
wavec build program.wave --with-vex # Enable Vex integration
Wave provides Rust-style error messages to help you debug quickly:
error: standard library module 'std::iosys' requires Vex package manager
--> program.wave:1:8
|
1 | import("std::iosys");
| ^^^^^^^^^^^^
|
= help: Wave compiler in standalone mode only supports low-level system programming
= suggestion: Use 'vex build' or 'vex run' to access standard library modules
Wave is an open-source project and we welcome contributions! Whether you're fixing bugs, adding features, improving documentation, or sharing feedback, every contribution matters.
Ready to contribute code? Check out our contributing guidelines and development setup. |
Join our Discord community to discuss features, get help, and connect with other Wave developers. |
// Bare-metal: Direct system calls only
fun main() {
asm {
"mov ah, 0x0e"
"mov al, 0x48"
"int 0x10"
}
}
import("std::iosys");
fun fibonacci(n: i32) -> i32 {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
fun main() {
var i: i32 = 0;
while (i <= 10) {
println("fibonacci({}) = {}", i, fibonacci(i));
i += 1;
}
}
fun main() {
var a: i32 = 42;
var b: i32 = 84;
// Direct pointer manipulation
var ptr_a: ptr<i32> = &a;
var ptr_b: ptr<i32> = &b;
// Swap values through pointers
var temp: i32 = deref ptr_a;
deref ptr_a = deref ptr_b;
deref ptr_b = temp;
// a is now 84, b is now 42
}
π More examples in the repository
Explore the test/
directory for more examples:
- Basic syntax: Variables, functions, control flow
- Pointers & Memory: Direct memory manipulation
- System calls: Low-level OS interaction
- Module system: Import and organization
- Inline assembly: Hardware-level programming
Wave is actively developed with a clear roadmap:
- Core Compiler - Basic Wave language compilation to LLVM
- Dual Mode Architecture - Low-level and high-level compilation modes
- Advanced Error Handling - Rust-style diagnostic messages
- CLI Interface - Modern command-line experience
- Vex Package Manager - Standard library and package ecosystem
- For Loop Implementation - Complete control flow structures
- Advanced Type System - Enhanced safety and ergonomics
- Cross-platform Support - Windows, macOS, Linux
- IDE Integration - Language server and tooling
- Standard Library - Core functionality via Vex
See our GitHub Projects for detailed progress tracking.
Wave is released under the LSD License.
- @LunaStev - Creator and Lead Developer
- LLVM Project(Temporary) - Code generation backend
- Rust Community - Inspiration for tooling and error messages
- Systems Programming Community - Feedback and requirements
Built with β€οΈ by the Wave community
Β© 2024 Wave Programming Language β’ LSD License