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...
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* %xImplemented
deref pdereference operator
→ Generates IR asload i32, i32* %pSupported pointer-based initialization
→var p: ptr<i32> = &x;is now fully parsed and compiledEnabled dereferencing for both expression and assignment
→ Example:deref p = 42;is valid and stored directly via IRAddress 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 generationPrevented crash by checking for variable reference inside address-of
🐛 Fixed printf format mismatch for pointers
%s→%ldfor pointer valuesEnsured 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.gzExtract 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 --versionIf the version number displays, the installation was successful.
Contributor
@LunaStev | 🇰🇷