XDL - Extended Data Language
A modern Rust implementation of the Extended Data Language (XDL), providing IDL-compatible data analysis and visualization capabilities with GPU acceleration.
Active Development - Beta Release - 100+ functions, 50+ ML features, GPU acceleration, and 60-70% IDL compatibility! 🚀
🚀 Getting Started
Installation
git clone https://github.com/TuringWorks/xdl
cd xdl
cargo build --release
cargo install --path xdl-cli
Quick Example
; Create data and visualize
x = findgen(100)
y = sin(x * !pi / 50)
plot, x, y, title='XDL Plot'
Installation Guide → Quick Start → GPU Demo →
📚 Documentation Sections
Getting Started
Essential resources to begin using XDL
- Quick Start Guide - Get up and running in minutes
- Quick Start - Detailed quick start guide
- Examples Gallery - Visual examples with generated plots
- GPU Acceleration Demo - GPU features walkthrough
- Graphics Quick Start - 2D graphics basics
- 3D Visualization Quick Start - 3D visualization basics
- Examples - Sample code and tutorials
Core Features
Language implementation and core functionality
- Implementation Status - Current implementation progress
- Control Flow - IF/THEN/ELSE, FOR, WHILE loops
- Array Operations - N-dimensional array support
- Multi-dimensional Arrays - Advanced array features
- Keyword Arguments - Function keyword arguments
Graphics & Visualization
Comprehensive 2D and 3D graphics capabilities
2D Graphics
- Graphics Overview - 2D graphics implementation
- Graphics Quick Reference - Command reference
- Charting Status - Chart and plot features
- ECharts Integration - Web-based charting
- Bezier Curves - Curve drawing features
3D Visualization
- 3D Visualization Complete - Full 3D guide
- 3D Browser Rendering - Browser-based 3D
- Three.js Integration - Three.js backend
- 3D Performance - Optimization guide
- Scientific Visualization - Scientific plotting
GPU Acceleration
High-performance GPU computing features
- GPU Compute Implementation - GPU acceleration overview
- Performance Impact Analysis - Benchmarks and metrics
- AMP Multi-Backend - Multiple GPU backends
- GPU Demo Guide - GPU examples and tutorials
Compatibility
IDL/GDL and MATLAB compatibility layers
IDL/GDL Compatibility
- IDL Command Status - Supported IDL commands
- GDL/IDL Compatibility - Compatibility layer
- GDL/IDL Syntax - Syntax reference
- Gap Analysis - Feature comparison
MATLAB Compatibility
- MATLAB Support - MATLAB compatibility overview
- MATLAB Plotting - MATLAB plot functions
- MATLAB Compatibility Functions - LINSPACE, LOGSPACE, REPMAT, SQUEEZE, NDGRID, INTERP1, MESHGRID
- MATLAB Limitations - Known limitations
- Tiled Layout - Tiled layout support
Advanced Topics
Machine learning, Python integration, and more
- Machine Learning Overview - ML capabilities and reference
- Python Integration - Python 3.13 integration
- Advanced Visualization - Complex visualizations
- Moving Average - Signal processing
- Rayleigh-Taylor Demo - Physics simulation
Development
Contributing and building XDL
- Build Guide - Building from source
- Session Summary - Development updates
- Validation - Validation reports
- Slow Tests - Test organization
✨ Key Features
Memory Safety
Leveraging Rust’s ownership system for safe memory management
Performance
Native code performance with zero-cost abstractions and GPU acceleration
Concurrency
Safe parallelism using Rust’s async/await and threading primitives
Interoperability
FFI interfaces to existing scientific libraries and Python 3.13 integration
🏗️ Architecture
XDL is structured as a Cargo workspace with the following crates:
| Crate | Description |
|---|---|
xdl-core | Core data structures, types, and array operations |
xdl-parser | Lexer and parser for XDL/IDL syntax |
xdl-interpreter | AST interpreter and execution engine |
xdl-runtime | Runtime system with memory management |
xdl-stdlib | Standard library functions |
xdl-ffi | Foreign function interfaces |
xdl-cli | Command-line interface and REPL |
xdl-gui | Graphical user interface |
xdl-amp | GPU acceleration module |
xdl-viz3d | 3D visualization engine |
xdl-charts | Charting library |
📊 Project Status
| Phase | Status | Description |
|---|---|---|
| Phase 1 | ✅ Complete | Foundation & Core Types |
| Phase 2 | ✅ Complete | Parser & Interpreter |
| Phase 3 | ✅ Complete | Standard Library (100+ functions) |
| Phase 4 | ✅ Complete | Graphics & Visualization (50+ procedures) |
| Phase 5 | ✅ Complete | 3D Visualization |
| Phase 6 | ✅ Complete | MATLAB Compatibility (basic to moderate) |
| Phase 7 | ✅ Complete | IDL/GDL Compatibility (60-70% compatible) |
| Phase 8 | ✅ Complete | GPU Acceleration (XDL-AMP) |
| Phase 9 | ✅ Complete | Machine Learning (50+ functions) |
| Phase 10 | 🚧 Current | Compatibility & Bug Fixes |
| Phase 11 | 📋 Planned | Performance Optimization |
Current Focus (Phase 10):
- User-defined procedures (PRO/ENDPRO) - critical missing feature
- Complex number edge cases
- Advanced array indexing improvements
- Test coverage expansion
- Error message improvements
🤝 Contributing
Contributions are welcome! We appreciate:
- Bug reports and feature requests
- Code contributions via pull requests
- Documentation improvements
- Performance benchmarks and optimizations
See our Contributing Guide for more details.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.