স্কিপ করে মূল কন্টেন্ট এ যান

13 পোস্টস সঙ্গে ট্যাগ্গেড "Version"

Version Tag

সমস্ত ট্যাগ্স দেখুন

Introduction to Wave v0.1.3-pre-beta: Syntax tweaks, bug fixes, and enhanced type and import handling.

· 2 মিনিট পড়া
LunaStev
Programming Language Engineer

Hello! I'm LunaStev, the developer of Wave.

We are pleased to announce Wave v0.1.3-pre-beta — We changed the function parameter syntax from semicolons to commas, fixed LLVM IR generation for arrays of pointers and index access, and allowed parameters to have multiple types. We also fixed bugs related to parameter parsing and if statements, improved inline assembly support for negative values, and restructured the import system.

PR and Commits

Showcase

The showcase is available at Wave-Test.


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

  1. Download:

    • Download to Curl.
      curl -fsSL https://wave-lang.dev/install.sh | bash -s -- --version v0.1.3-pre-beta
  2. Verify Installation:

    • Open a terminal and type:
      wavec --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub Discord Ko-fi

Introduction to Wave v0.1.2-pre-beta: Assignment Operators, Added Remainder and Generalized Indexing Support

· 3 মিনিট পড়া
LunaStev
Programming Language Engineer

Hello! I'm LunaStev, the developer of Wave.

We are pleased to announce Wave v0.1.2-pre-beta — This update supports indexing, supports the rest of the operators. And I added an assignment operator. And I fixed a number of bugs.


✅ Added Features

🔍 Generalized Indexing Support

  • Extended arr[index] syntax to support variable indexing in any context.

  • Now supports dynamic indexing like arr[i], ptr[j], get_array()[k] inside if, while, return, and assignments.

  • Internally handles pointer types (e.g., i8*) using GEP and performs automatic type casting (e.g., i8 vs i64) for comparisons and assignments.

➕ Added % (Remainder) Operator Support

  • Wave now supports the modulo operator % for integer types.

  • Expressions like a % b, 10 % 3, and var x: i32 = a % b are now fully parsed and compiled to LLVM IR using srem (signed remainder).

  • Parser was updated to recognize % as TokenType::Remainder, and IR generation uses build_int_signed_rem for correct runtime behavior.

  • % is fully supported inside expressions, assignments, conditionals, and return statements.

⚙️ Assignment Operators (+=, -=, *=, /=, %=)

  • Supports compound assignment operators for both integers (i32) and floating-point numbers (f32).

  • Operators implemented: +=, -=, *=, /=, %=.

  • Type-safe operation with proper distinction between integer and float IR instructions:

    • add, sub, mul, sdiv, srem for integers.

    • fadd, fsub, fmul, fdiv, frem (uses fmodf) for floats.

  • Implicit type casting during assignment (e.g., assigning an int to a float variable triggers intfloat conversion).

  • Proper LLVM IR generation for all supported operations, including float remainder via external fmodf call (linked with -lm).

🐛 Bug Fixes

🔢 Accurate Token Differentiation Between Integers and Floats

  • Number parsing logic has been overhauled to properly distinguish between integer literals (e.g., 42) and floating-point literals (e.g., 3.14, 42.0).

  • Previously, all numeric literals were parsed as Float(f64) tokens, even when no decimal point was present. → Now, tokens like 123 are correctly parsed as Number(i64), and 123.45 as Float(f64).

  • Introduced internal flag is_float to detect presence of . during scanning. If found, the number is parsed as a float; otherwise, as an integer.

  • Implemented type-safe error handling:

    • Fallbacks to TokenType::Number(0) or TokenType::Float(0.0) on parse failure, ensuring the lexer remains stable on malformed input.
  • This fix improves downstream type checking, IR generation, and expression evaluation, especially for typed languages like Wave where i64 and f64 must be handled distinctly.

✨ Other Changes

🧠 Library and Binary 2 Coexist

  • Add lib.rs for easy package manager creation, development, and easy access.

Showcase

The showcase is available at Wave-Test.


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

  1. Download:

    • Download to Curl.
      curl -fsSL https://wave-lang.dev/install.sh | bash -s -- --version v0.1.2-pre-beta
  2. Verify Installation:

    • Open a terminal and type:
      wavec --version
    • If the version number displays, the installation was successful.

PR and Commits


Contributor

@LunaStev | 🇰🇷


Website

Website GitHub Discord Ko-fi

Introduction to Wave v0.1.1-pre-beta: Inline Assembly, Pointer Chain, and Array Support

· 3 মিনিট পড়া
LunaStev
Programming Language Engineer

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

Image1description

Image2description


Image3description

Image4description


Image5description

Image6description


Image7description

Image8description


Image9description

Image10description


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

For Linux:

  1. 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
  2. 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
  3. Verify Installation:

    • Open a terminal and type:
      wavec --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub Discord Ko-fi

Introduction to Wave v0.1.0-pre-beta: Add Import and UTF-8 Support

· 2 মিনিট পড়া
LunaStev
Programming Language Engineer

Hello! I'm LunaStev, the developer of Wave.

We are very pleased to introduce Wave 'v0.1.0-pre-beta' — This update supports the import function and UTF-8, allowing you to output other characters, unlike previous versions that only supported ASCII.


✅ Added Features

📦 Local File Import Support

  • Introduced import("..."); statement in Wave syntax.

  • Supports importing .wave source files relative to the current file's directory.

  • Prevents duplicate imports automatically using an internal HashSet.

  • Imported files are parsed, converted to AST, and merged into the main program at compile time.

  • Enables modular project structure by allowing multi-file composition.

🔧 Bug Fixes

🐞 UTF-8 Handling in Lexer

  • Fixed tokenizer crash on non-ASCII characters.

  • Lexer now correctly processes UTF-8 multi-byte characters, enabling support for Korean and other languages in source code.

🐞 Underscore (_) Support in Identifiers

  • Variable and function names can now contain underscores.

  • Lexer now treats identifiers like my_var or some_function as valid.


Showcase

Image1description

Image2description

Image3description


Image4description

Image5description


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

For Linux:

  1. Download and Extract:

    • Download the wave-v0.1.0-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.0-pre-beta/wave-v0.1.0-pre-beta-x86_64-linux-gnu.tar.gz
    • Extract the archive:
      sudo tar -xvzf wave-v0.1.0-pre-beta-x86_64-linux-gnu.tar.gz -C /usr/local/bin
  2. 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
  3. Verify Installation:

    • Open a terminal and type:
      wavec --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub Ko-fi

Introduction to Wave v0.0.9-pre-beta: Explicit Mutability, Smarter Functions, and Safer Pointers

· 3 মিনিট পড়া
LunaStev
Programming Language Engineer

Hello! I'm Lunastev, the developer of Wave.

We are very excited to introduce Wave 'v0.0.9-Free Beta' — A version that offers Explicit Mutability, Smarter Functions, and Safer Pointers.

Wave is designed with low-level features in mind, and in this version, We are making a big leap in that direction.


📐 Language Specification Updates

🧠 Introduction of let, let mut, and var for Explicit Mutability

  • Wave now supports three types of variable declarations to express mutability explicitly:

    • var: fully mutable, intended for general-purpose variables

    • let: immutable, reassignment is forbidden

    • let mut: mutable under immutable declaration context (safe controlled mutability)

  • This design introduces clearer ownership intent and improves safety in low-level and system-oriented programming.

🧠 Default Parameter Values in Function Declarations

  • Wave functions can now define parameters with default values:

    fun main(name: str = "World") {
    println("Hello {}", name);
    }
  • If an argument is not provided at runtime, the default value will be inserted automatically by the compiler.

  • This enables more expressive and flexible function declarations.

✅ Added Features

🧠 Parser and IR support for explicit mutability

  • Introduced internal Mutability enum: Var, Let, LetMut

  • Implemented parse_let() with optional mut keyword for parsing

  • Wave's IR generation now restricts let variables from being reassigned

🧠 IR handling of function parameter defaults

  • When default values are present in function parameters, they are now correctly recognized and handled during LLVM IR generation

  • If an argument is not passed at runtime, the default value is inserted directly into the stack-allocated variable

🔧 Bug Fixes

🐛 Incorrect string output in println() format

  • Fixed an issue where str values (i8*) were printed as raw addresses

  • The format translation now maps i8* to %s correctly

  • Values are passed directly to printf as string pointers, avoiding ptr_to_int conversion

🐛 Incorrect handling of deref assignment

  • Fixed an issue where dereferencing a pointer and assigning its value caused type mismatches in the generated IR.

  • The IR now properly handles dereferencing a pointer (deref p1 = deref p2;) and assigning the values correctly without causing i32** mismatches.

✨ Other Changes

🧠 IR-level enforcement of immutability

  • Reassignment attempts to let variables now cause a compile-time panic

  • All memory operations (store/load) respect mutability constraints

🧠 IR-level enforcement of pointer dereferencing

  • Introduced a fix to ensure that pointer dereferencing (deref p1 = deref p2;) is handled correctly in the IR.

  • Adjusted the generate_address_ir() function to properly dereference pointers and load/store values without causing pointer type mismatches.


Showcase

Image1description

Image3description


Image2description

Image4description


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

For Linux:

  1. Download and Extract:

    • Download the wave-v0.0.9-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.0.9-pre-beta/wave-v0.0.9-pre-beta-x86_64-linux-gnu.tar.gz
    • Extract the archive:
      sudo tar -xvzf wave-v0.0.9-pre-beta-x86_64-linux-gnu.tar.gz -C /usr/local/bin
  2. 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
  3. Verify Installation:

    • Open a terminal and type:
      wavec --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub Ko-fi

Introduction to Wave v0.0.8-pre-beta: Pointer Support Arrives

· 3 মিনিট পড়া
LunaStev
Programming Language Engineer

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 &x address-of operator
    → Compiles to LLVM IR as store i32* %x

  • Implemented deref p dereference operator
    → Generates IR as load 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
    %ld used for pointer-to-int cast in formatted output
    println("address = {}", p); prints memory address

🔧 Bug Fixes

🐛 Fixed Pointer Initialization Parsing Issue

  • Changed VariableNode.initial_value from Option<Literal> to Option<Expression>
  • Allowed &x to be accepted as a valid initializer expression

🐛 Fixed LLVM IR Crash on AddressOf Expression

  • Added support for Expression::AddressOf in IR generation
  • Prevented crash by checking for variable reference inside address-of

🐛 Fixed printf format mismatch for pointers

  • %s%ld for pointer values
  • Ensured correct casting of i32* to i64 before 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

Imag3e description

Ima3ge description


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

For Linux:

  1. Download and Extract:

    • Download the wave-v0.0.8-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.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
  2. 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
  3. Verify Installation:

    • Open a terminal and type:
      wavec --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub Ko-fi

Introduction to Wave v0.0.7-pre-beta: Fixed infinite recursive and stack overflow bugs due to previously incorrect ASTNode reuse

· 2 মিনিট পড়া
LunaStev
Programming Language Engineer

Hello! I'm LunaStev, the developer of Wave.

We are very happy to introduce Wave v0.0.7-pre-beta.

This release has previously addressed the issue of infinite recursive and stack overflow due to incorrect ASTNode reuse.

We also changed the name of the Wave compiler binary from wave to wavec.

Wave is growing fast, and we are very excited to share our future plans.


🔧 Bug Fixes

🐛 Fixed else if IR Infinite Loop Bug

  • Resolved a critical bug where stmt was reused inside the else if block IR generation loop
  • Previously caused infinite recursion and stack overflow due to incorrect ASTNode reuse
  • Fixed by replacing stmt with else_if when iterating over else_if_blocks

✨ Other Changes

🛠 Renamed wave to wavec

  • Renamed the Wave compiler binary from wave to wavec
  • This change was made to prepare for the integration of Vex, the official package manager for Wave
  • Separating the compiler tool (wavec) from the language name (Wave) aligns with future plans for Vex integration

Showcase

12

34


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

For Linux:

  1. Download and Extract:

    • Download the wave-v0.0.7-pre-beta-linux.tar.gz file from the official source.
    • Use the wget command:
      wget https://github.com/LunaStev/Wave/releases/download/v0.0.7-pre-beta/wave-v0.0.7-pre-beta-linux.tar.gz
    • Extract the archive:
      sudo tar -xvzf wave-v0.0.7-pre-beta-linux.tar.gz -C /usr/local/bin
  2. 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
  3. Verify Installation:

    • Open a terminal and type:
      wavec --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub

Introduction to Wave v0.0.6-pre-beta: Strong Typing, Function Returns, and continue Support

· 4 মিনিট পড়া
LunaStev
Programming Language Engineer

Hello! I'm Lunastev, the developer of Wave.

I'm very happy to introduce Wave v0.0.6-pre-beta, which is an important step forward in the evolution of language.

The release focuses on expanding the type system, enhancing feature support, and introducing powerful new features such as 'continue' doors and floating arithmetic. With the structured 'WaveType' Enum now replacing all string-based types, Wave has taken a strong step towards becoming a statically typed system language.

The function return type is now fully supported, enabling expressive and reusable logic. You can define the function as -&gt; i32 and return the value using the return keyword. LLVM IR generation logic has also been upgraded to be fully type-aware, ensuring safer and more accurate lower-level output.

The waves are growing fast, and we are very excited to share our future plans. Thank you for supporting me on this journey 💙


✅ Added Features

💬 Comment Support

  • Supports single-line comments using //
  • Supports multi-line comment blocks using /* */

✅ continue statement Support

  • Possible to skip to the next iteration depending on the condition within the 'while' loop
  • Syntax supported for if (condition) {continue; }
  • In LLVM IR, 'continue' is treated as a condition check block for the corresponding loop

🧠 Strong Typing for Variables and Parameters

  • Replaced string-based types with structured WaveType enums in the AST
  • Fully supports types like i32, u64, f32 for both variables and parameters
  • Enables static type checking and safer LLVM IR generation

🔢 Float Type Support (f32)

  • Supports f32 literals (e.g., 12.34)
  • Allows declaration, initialization, and reassignment of f32 variables
  • Enables use of f32 values in arithmetic and comparison operations (e.g., if, while)
  • Promotes float to double using fpext when passing to printf to conform to the C ABI

🖨️ Formatted Print (println("...", value))

  • Automatically maps Wave types to proper C format specifiers (%d, %f, %s)
  • Correctly handles printing of f32, i32, and string types with type inference

🌀 Type-Aware LLVM IR Generation

  • LLVM alloca, store, and load instructions are generated based on WaveType
  • Supports both integer and float value initialization
  • Uses BasicTypeEnum and BasicValueEnum to unify value handling
  • Ensures correctness in mixed-type binary expressions and conditionals

🧩 Function Definition and Calls

  • Supports user-defined functions with multiple parameters
  • Parameters support explicit typing (e.g., i32, str)
  • Functions can be called with literals or variables as arguments
  • LLVM IR correctly handles parameter passing using %0, %1, ... style
  • Parameter values are properly stored and loaded from the stack
  • Enables composable and reusable logic with full IR-level integration

🧠 Function Return Type Support

  • Functions can now specify return types using -> syntax (e.g., -> i32)
  • Supported return types: i32, f32, str (more planned)
  • Return statements (return expr;) emit the appropriate LLVM ret instruction
  • If no return is specified in a void function, ret void is automatically inserted
  • Ensures matching return types between Wave AST and LLVM IR generation

Showcase

Image des2cription

Image descri3ption


Image descr2iption

Image descr3iption


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

For Linux:

  1. Download and Extract:

    • Download the wave-v0.0.6-pre-beta-linux.tar.gz file from the official source.
    • Use the wget command:
      wget https://github.com/LunaStev/Wave/releases/download/v0.0.6-pre-beta/wave-v0.0.6-pre-beta-linux.tar.gz
    • Extract the archive:
      sudo tar -xvzf wave-v0.0.6-pre-beta-linux.tar.gz -C /usr/local/bin
  2. 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
  3. Verify Installation:

    • Open a terminal and type:
      wave --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub

Introduction to Wave v0.0.5-pre-beta: Add While Features

· 2 মিনিট পড়া
LunaStev
Programming Language Engineer

Hello! I'm LunaStev, the developer of Wave. I'm very excited to release the v0.0.5 pre-beta version. I'm very excited to share the 5th version of Wave.

In this version, we have added a while statement.


✅ Added Features

🔁 Loops: Full Support for while Statements

  • Basic while loops

  • Nested while loops

  • Variable declaration and initialization inside loops

  • Loop termination condition handling (supports comparison operators like <=, <, ==, etc.)

  • print and println functions work inside loops

🧨 Control Flow

  • Support for break statements

  • Allows breaking out of loops in the middle

  • Works correctly even inside nested loops

  • (⏳ Next version: continue support planned)

🧠 Variable Handling

  • Fully correct local variable scoping (e.g., a new j is created in each loop)

  • Supports var declarations (must specify types like i32, u32, etc.)

  • Allows variable reassignment (handles patterns like i = i + 1)


Showcase

Image description

Image description


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

For Linux:

  1. Download and Extract:

    • Download the wave-v0.0.5-pre-beta-linux.tar.gz file from the official source.
    • Use the wget command:
      wget https://github.com/LunaStev/Wave/releases/download/v0.0.5-pre-beta/wave-v0.0.5-pre-beta-linux.tar.gz
    • Extract the archive:
      sudo tar -xvzf wave-v0.0.5-pre-beta-linux.tar.gz -C /usr/local/bin
  2. 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
  3. Verify Installation:

    • Open a terminal and type:
      wave --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub

Introduction to Wave v0.0.4-pre-beta: If statement completed

· 2 মিনিট পড়া
LunaStev
Programming Language Engineer

Hello! I'm LunaStev, the developer of Wave. I'm excited to release the v0.0.4 pre-beta version. I'm very excited to share the 4th version of Wave.

In this version, we have added an if statement.


✨ Major Updates

⚠️ if Statement Partially Functional

Basic conditional branching with if statements is now working, but the implementation is not yet perfect. While if and else blocks are parsed and compiled to LLVM IR, some edge cases or complex conditions may not behave correctly. Improvements are ongoing.

✅ Arithmetic Expression Support

Arithmetic expressions like a + b and c * d are now properly represented in the AST and converted into LLVM IR. BinaryExpression is now fully supported.

✅ Expression Output in Format Strings

Expressions can now be directly used inside format strings. Example: println("{}", a + a) works flawlessly, allowing real-time expression results to be printed.

✅ Expanded Code Generator Structure

Introduced generate_expression_ir() for full recursive processing of expressions. Ready for further expansion to support more complex and diverse expression types.


Showcase

image

image


Thank you for using Wave! Stay tuned for future updates and enhancements.


Installation Guide

For Linux:

  1. Download and Extract:

    • Download the wave-v0.0.4-pre-beta-linux.tar.gz file from the official source.
    • Use the wget command:
      wget https://github.com/LunaStev/Wave/releases/download/v0.0.4-pre-beta/wave-v0.0.4-pre-beta-linux.tar.gz
    • Extract the archive:
      sudo tar -xvzf wave-v0.0.4-pre-beta-linux.tar.gz -C /usr/local/bin
  2. 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
  3. Verify Installation:

    • Open a terminal and type:
      wave --version
    • If the version number displays, the installation was successful.

Contributor

@LunaStev | 🇰🇷


Website

Website GitHub