Introduction to Wave v0.0.8-pre-beta: Pointer Support Arrives
Hello! I'm LunaStev, the developer of Wave. We are very happy to introduce Wave v0.0.8-pre-beta — a version that officially brings first-class pointer support to the language. W...
Wave Foundation
Introduction to Wave v0.0.8-pre-beta: Pointer Support Arrives
Hello! I'm LunaStev, the developer of Wave.
We are very happy to introduce Wave v0.0.8-pre-beta — a version that officially brings first-class pointer support to the language.
Wave was designed with low-level capabilities in mind, and in this version, we’re making a major leap in that direction.
✅ Added Features
🧠 Pointer System: First-Class Pointer Support in Wave
-
Introduced
ptr<T>type syntax for defining typed pointers
→ Example:var p: ptr<i32>; -
Implemented
&xaddress-of operator
→ Compiles to LLVM IR asstore i32* %x -
Implemented
deref pdereference operator
→ Generates IR asload i32, i32* %p -
Supported pointer-based initialization
→var p: ptr<i32> = &x;is now fully parsed and compiled -
Enabled dereferencing for both expression and assignment
→ Example:deref p = 42;is valid and stored directly via IR -
Address values can be printed as integers
→%ldused for pointer-to-int cast in formatted output
→println("address = {}", p);prints memory address
🔧 Bug Fixes
🐛 Fixed Pointer Initialization Parsing Issue
-
Changed
VariableNode.initial_valuefromOption<Literal>toOption<Expression> -
Allowed
&xto be accepted as a valid initializer expression
🐛 Fixed LLVM IR Crash on AddressOf Expression
-
Added support for
Expression::AddressOfin IR generation -
Prevented crash by checking for variable reference inside address-of
🐛 Fixed printf format mismatch for pointers
-
%s→%ldfor pointer values -
Ensured correct casting of
i32*toi64before printing
✨ Other Changes
🧠 Improved Format String Handling in IR
-
Added dynamic format string generation based on argument types
-
Format strings now automatically adapt for int, float, and pointer types
Showcase


Thank you for using Wave! Stay tuned for future updates and enhancements.
Installation Guide
For Linux:
-
Download and Extract:
-
Download the
wave-v0.0.8-pre-beta-x86_64-linux-gnu.tar.gzfile from the official source. -
Use the wget command:
wget https://github.com/LunaStev/Wave/releases/download/v0.0.8-pre-beta/wave-v0.0.8-pre-beta-x86_64-linux-gnu.tar.gz -
Extract the archive:
sudo tar -xvzf wave-v0.0.8-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:
wavec --version -
If the version number displays, the installation was successful.
-
Contributor
@LunaStev | 🇰🇷