A modern, safe, and performant programming language with advanced runtime features
Quick Start β’ Documentation β’ Examples β’ Contributing
Veyra is a production-ready programming language that combines the safety of modern language design with powerful runtime features. Built with Rust, it offers:
- Memory Safety - Advanced garbage collection with mark-and-sweep algorithm
- High Performance - JIT compilation with optimization passes
- Modern Concurrency - Built-in async/await and actor model support
- Developer Experience - Comprehensive toolchain with IDE integration
- Production Ready - Complete runtime system with thread pools and memory management
- Dynamic Typing with runtime type checking
- First-class Functions with closures and higher-order functions
- Pattern Matching for elegant control flow
- Rich Operators including compound assignments and power operators
- Exception Handling with try-catch-finally blocks
- Module System for code organization
- Garbage Collector - Automatic memory management
- JIT Compiler - Dynamic compilation for performance
- Async Runtime - Native async/await support
- Thread Pool - Work-stealing scheduler for parallelism
- Actor System - Message-passing concurrency
- REPL - Interactive development environment
- LSP Server - Full IDE integration with IntelliSense
- Debugger - Step-through debugging with breakpoints
- Linter - Code quality and style checking
- Package Manager - Dependency management
- VS Code Extension - Syntax highlighting and language support
- Rust 1.70 or higher (Install Rust)
- Git
Download the latest release for your platform from the releases page:
- Linux x64:
veyra-linux-x64.tar.gz - Linux ARM64:
veyra-linux-arm64.tar.gz - Windows x64:
veyra-windows-x64.zip - Windows ARM64:
veyra-windows-arm64.zip - macOS x64 (Intel):
veyra-macos-x64.tar.gz - macOS ARM64 (Apple Silicon):
veyra-macos-arm64.tar.gz
Each release includes all tools and the standard library.
# Clone the repository
git clone https://github.com/k6w/veyra.git
cd veyra
# Quick build (Unix/Linux/macOS)
./scripts/build-release.sh
# Quick build (Windows PowerShell)
.\scripts\build-release.ps1
# Manual build
cd compiler && cargo build --release && cd ..
cd tools && cargo build --release && cd ..Download the veyra-lang-*.vsix file from releases and install it in VS Code:
- Open VS Code
- Press
Ctrl+Shift+P(orCmd+Shift+Pon macOS) - Type "Extensions: Install from VSIX"
- Select the downloaded
.vsixfile
Create a file hello.vey:
# Classic Hello World
fn main() {
println("Hello, Veyra!")
}
main()
Run it:
# If using pre-built release
veyc hello.vey
# If built from source
./compiler/target/release/veyc hello.vey# If using pre-built release
veyra-repl
# If built from source
./tools/target/release/veyra-repl>>> let x = 42
>>> let y = x * 2
>>> println(y)
84
>>> fn greet(name) { return "Hello, " + name + "!" }
>>> greet("World")
"Hello, World!"
- Language Specification - Complete language reference
- Grammar - EBNF grammar specification
- Quick Start Guide - Get up and running quickly
- Design Philosophy - Language design principles
let name = "Alice"
let age = 30
let pi = 3.14159
let active = true
let items = [1, 2, 3, 4, 5]
fn fibonacci(n) {
if n <= 1 {
return n
}
return fibonacci(n - 1) + fibonacci(n - 2)
}
println(fibonacci(10)) # Output: 55
fn check_grade(score) {
if score >= 90 {
return "A"
} elif score >= 80 {
return "B"
} elif score >= 70 {
return "C"
} else {
return "F"
}
}
# Arrays
let numbers = [1, 2, 3, 4, 5]
for num in numbers {
println(num * 2)
}
# Dictionaries
let person = {"name": "Bob", "age": 25}
println(person["name"])
fn safe_divide(a, b) {
try {
return a / b
} catch e {
println("Error: " + e)
return null
} finally {
println("Division attempted")
}
}
More examples in the examples/ directory.
# Start the language server
./tools/target/release/veyra-lspProvides:
- Auto-completion
- Go to definition
- Hover information
- Error diagnostics
- Code formatting
# Debug a program
./tools/target/release/veyra-dbg program.veyFeatures:
- Breakpoints
- Step through execution
- Variable inspection
- Call stack viewing
# Lint your code
./tools/target/release/veyra-lint program.veyChecks for:
- Code style violations
- Potential bugs
- Best practices
# Install a package
./tools/target/release/veyra-pkg install package-name
# Update dependencies
./tools/target/release/veyra-pkg update# Run compiler tests
cd compiler
cargo test
# Run tool tests
cd tools
cargo test
# Run language test suite
./compiler/target/release/veyra tests/comprehensive_test_suite.veyveyra/
βββ compiler/ # Veyra compiler (lexer, parser, interpreter)
βββ runtime/ # Advanced runtime (GC, JIT, async, actors)
βββ tools/ # Developer tools (REPL, LSP, debugger, etc.)
β βββ repl/ # Interactive REPL
β βββ lsp/ # Language Server Protocol implementation
β βββ debugger/ # Debugger
β βββ linter/ # Code linter
β βββ package_manager/ # Package manager
β βββ vscode_extension/ # VS Code extension
βββ stdlib/ # Standard library modules
βββ spec/ # Language specification
βββ docs/ # Additional documentation
βββ examples/ # Example programs
βββ tests/ # Test suite
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Fork and clone
git clone https://github.com/k6w/veyra.git
cd veyra
# Build all components
cargo build
# Run tests
cargo test
# Format code
cargo fmt
# Run linter
cargo clippyThis project is licensed under the MIT License - see the LICENSE file for details.
- Built with Rust
- Inspired by modern programming language design
- Community-driven development
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with β€οΈ by the Veyra community