Releases: zombocoder/o2l
O²L Programming Language v0.0.1 - "Genesis"
The first public release of O²L (Object-to-Language) - A revolutionary object-oriented programming language that reimagines software development.
🚀 What is O²L?
O²L is a modern programming language built with C++23 that eliminates primitives and null values while embracing pure object-oriented design.
Every value in O²L is an object with methods and behaviors, creating a unified and consistent programming model.
✨ Key Features
Core Language
- Everything is an Object - Numbers, booleans, strings all have methods (48 text methods alone!)
- Null Safety - No null pointer exceptions, ever. Optional values handled explicitly
- Dual Mutability - Immutable object properties, mutable method variables
- Advanced Control Flow -
if/else if/else,whileloops,try/catch/finallyblocks - Strong Type System - Records, enums, protocols, generics with collections
Comprehensive Standard Library (200+ Methods)
- 🌐 HTTP Client/Server - 30+ methods for web development
- 🔄 JSON Processing - 30+ methods with auto-detection parsing
- 🌐 URL Manipulation - 26 methods for URL handling
- 🔍 Regular Expressions - 12 methods for pattern matching
- 📐 Math Library - 40+ mathematical functions including trig, stats
- 📅 DateTime Library - 65+ functions for date/time operations
- 📁 Filesystem Operations - Complete file/directory management
- ✨ Text Processing - 48 string methods for manipulation and validation
Advanced Integration
- 🔗 Foreign Function Interface (FFI) - Seamless C library integration
- 💾 SQLite Integration - Built-in database support
- 🛠️ Development Tools - Package manager, formatter, language server
🎯 Philosophy
O²L follows four core principles:
- Everything is an Object - Unified programming model
- Immutability by Design - Eliminate race conditions and side effects
- Null Safety - No undefined behavior
- Behavior-Driven - Think in terms of collaborating objects
🛠️ Getting Started
# Download and extract the archive for your platform
tar -xzf o2l-[platform]-v0.0.1.tar.gz
# Install (adds to ~/.local/bin)
./o2l-[platform]/install.sh
# Create your first project
mkdir hello-o2l && cd hello-o2l
o2l-pkg init
# Run the generated example
o2l run src/main.obq📦 What's Included
- o2l - Main interpreter and runtime
- o2l-pkg - Package manager for project scaffolding
- o2l-fmt - Code formatter for consistent style
- o2l-lsp-server - Language Server Protocol implementation
- Complete Examples - 100+ example programs
- Documentation - Language reference and guides
🏗️ Example Code
import system.io
import json
import http.client
Object APIClient {
property baseUrl: Text
constructor(url: Text) {
this.baseUrl = url
}
@external method fetchUser(id: Int): Optional<User> {
response: HTTPResponse = client.get(this.baseUrl + "/users/" + id.toString())
if (response.isSuccess()) {
userData: JSONObject = json.parse(response.body())
return Optional.of(User.fromJSON(userData))
}
return Optional.empty()
}
}
Record User {
id: Int
name: Text
email: Text
}
📊 Technical Specifications
- Implementation: C++23 with modern standards
- Platforms: macOS 11.0+, Ubuntu 20.04+ (x86_64)
- Test Coverage: 445+ passing tests
- Performance: Optimized interpreter with efficient FFI
- Memory Safety: Automatic memory management with immutability
🔮 Future Roadmap
- Generics and type parameters
- Async/await concurrency model
- JIT compilation for performance
- Package registry and ecosystem
- IDE integrations and tooling
📚 Resources
- Language Reference: Complete syntax and feature documentation
- Standard Library: Comprehensive API documentation
- Examples: Real-world usage patterns
- Wiki: In-depth guides and tutorials
O²L v0.0.1 represents a new paradigm in programming languages - combining the safety of functional languages with the expressiveness of modern
object systems. Welcome to the future of object-oriented programming!
Built with ❤️ and C++23
This description emphasizes the revolutionary aspects of O²L while providing practical information for developers to get started. It positions
v0.0.1 as a significant milestone while acknowledging it's the beginning of the journey.