Hello! I'm LunaStev, the developer of Wave.
We are excited to announce Wave v0.1.1-pre-beta
—
This update introduces inline assembly (asm {}
) support, enabling you to write low-level system code directly in Wave, such as making syscalls with direct register manipulation.
Additionally, Wave now fully supports pointer chaining (ptr<ptr<i32>>
) and array types (array<T, N>
), including index access, address-of operations, and validation of literal lengths — expanding Wave's capability for systems-level and memory-safe programming.
These improvements bring Wave closer to its vision as a low-level but expressive programming language.
✅ Added Features
⚙️ Inline Assembly (asm { ... }
) Support
-
Introduced asm { ... }
block syntax to embed raw assembly instructions directly within Wave code.
-
Supports instruction strings (e.g., "syscall"
) and explicit register constraints via in("reg") var
and out("reg") var
.
-
Variables used in in(...)
are passed into specified registers; variables in out(...)
receive output from registers.
-
Supports passing literal constants directly to registers (e.g., in("rax") 60
).
-
Pointer values (e.g., ptr<i8>
) are correctly passed to registers such as rsi
, enabling low-level syscalls like write
.
-
Internally leverages LLVM's inline assembly mechanism using Intel syntax.
-
Currently supports single-output only; multiple out(...)
constraints will overwrite each other.
-
Does not yet support clobber lists or advanced constraint combinations.
-
Provides essential capability for system-level programming (e.g., making direct syscalls, writing device-level code).
⚠️ This is not a fully general-purpose inline ASM facility yet, but it enables practical low-level operations within Wave. Full support is planned for later phases.
⚙️ Make pointer chain explicit
-
Nested parsing like ptr<i32>
, ptr<ptr<i32>>
-
Can create ptr<T>
for any type (no restrictions on T
)
-
Support for consecutive deref
operations (e.g., deref deref deref
)
⚙️ Array type complete
-
IndexAccess (numbers[0]
) handling
-
ArrayLiteral → Parse into AST and validate length
-
AddressOf → Support array literals with address-of values (e.g., [&a, &b]
)
-
Confirmed that array<T, N>
supports any type as T
✨ Other Changes
🧠 Library and Binary 2 Coexist
- Add lib.rs for easy package manager creation, development, and easy access.
Showcase










Thank you for using Wave! Stay tuned for future updates and enhancements.
Installation Guide
For Linux:
-
Download and Extract:
- Download the
wave-v0.1.1-pre-beta-x86_64-linux-gnu.tar.gz
file from the official source.
- Use the wget command:
wget https://github.com/LunaStev/Wave/releases/download/v0.1.1-pre-beta/wave-v0.1.1-pre-beta-x86_64-linux-gnu.tar.gz
- Extract the archive:
sudo tar -xvzf wave-v0.1.1-pre-beta-x86_64-linux-gnu.tar.gz -C /usr/local/bin
-
Setting up LLVMs
- Open a terminal and type:
sudo apt-get update
sudo apt-get install llvm-14 llvm-14-dev clang-14 libclang-14-dev lld-14 clang
sudo ln -s /usr/lib/llvm-14/lib/libLLVM-14.so /usr/lib/libllvm-14.so
export LLVM_SYS_140_PREFIX=/usr/lib/llvm-14
source ~/.bashrc
-
Verify Installation:
- Open a terminal and type:
- If the version number displays, the installation was successful.
Contributor
@LunaStev | 🇰🇷
Website
Website
GitHub
Discord
Ko-fi