High-Performance LISP-like language for Scientific Computing and AI written in C
The high-performance LISP-like language that brings scientific computing and AI to the next level
Important: Eshkol is currently in early development. This preview release is intended for developers interested in exploring the language and potentially contributing to its development. It is not yet ready for production use.
Component | Status | Completion | Notes |
---|---|---|---|
Core Language Features | In Progress | 65% | Basic Scheme syntax and core special forms implemented |
Function Composition | In Progress | 75% | Basic composition works, advanced patterns may have issues |
Closure System | In Progress | 65% | Basic closures work, global variable initialization improved |
Type System | In Progress | 55% | Optional type annotations and basic inference working |
Scientific Computing | In Progress | 70% | Vector operations and autodiff implemented |
MCP Tools | In Progress | 80% | Analysis tools available for development |
See our ROADMAP.md for development plans and KNOWN_ISSUES.md for current limitations and workarounds.
Eshkol is a revolutionary programming language that combines the elegant, expressive syntax of Scheme with the raw performance of C. Designed specifically for scientific computing and artificial intelligence applications, Eshkol delivers the perfect balance between developer productivity and computational efficiency.
Unlike other languages that force you to choose between expressiveness and performance, Eshkol gives you both:
Powerful Scheme Foundation - Core special forms and operations implemented:
define
, if
, lambda
, begin
, quote
, set!
, let
, and
, or
cons
, car
, cdr
, list
, pair?
, null?
, list?
, set-car!
, set-cdr!
Arena-Based Memory Management - Deterministic performance without GC pauses:
Vector Calculus Operations - Built-in support for mathematical operations:
Automatic Differentiation - First-class support for gradient-based methods:
Type System - Comprehensive static typing with Scheme compatibility:
MCP Tools Integration - Development tools for analysis and debugging:
Type System Improvements - Enhancing type inference and checking:
Scheme Compatibility - Working towards R5RS and R7RS-small compatibility:
Scientific Computing Enhancements - Expanding numerical capabilities:
Scientific Computing Primitives - Built-in support for numerical computation:
Automatic Differentiation - First-class support for gradient-based methods:
C Interoperability - Seamless integration with existing codebases:
VSCode Integration - Modern development experience:
Comprehensive Scheme Compatibility - Full implementation of R5RS and R7RS-small:
Advanced Concurrency - Efficient parallel computation:
GPU Acceleration - Leverage the power of graphics processors:
Interactive Development Environment - Rapid prototyping and exploration:
Eshkol is designed from the ground up for high performance:
Early benchmarks show performance comparable to hand-optimized C code for numerical workloads, while maintaining the expressiveness of a high-level language.
mkdir -p build
cd build
cmake ..
make
Create a file named hello.esk
:
(define (main)
(display "Hello, Eshkol!"))
Compile and run:
./eshkol hello.esk
Check out the examples/
directory for sample programs demonstrating Eshkol’s capabilities:
Fully Working Examples:
hello.esk
- Basic “Hello, World!” programdisplay_test.esk
- Basic “Hello, World!” program using display
functionfactorial.esk
- Recursive factorial calculationarithmetic.esk
- Basic arithmetic operationstail_recursive_factorial.esk
- Tail-recursive factorial implementationfibonacci.esk
- Fibonacci sequence calculationExamples in Development (May Have Limitations):
function_composition.esk
- Higher-order functions and compositionmutual_recursion.esk
- Demonstration of mutual recursionlist_operations.esk
- Demonstration of list operationsminimal_lambda.esk
- Basic lambda and closure demonstrationType System Examples (In Development):
untyped.esk
- Standard Scheme code without type annotationsimplicit_typed.esk
- Using type inference without explicit annotationsinline_typed.esk
- Using inline explicit type annotationsexplicit_param_typed.esk
- Using explicit parameter type annotationsseparate_typed.esk
- Using separate type declarationssimple_typed.esk
- Simple examples of typed functionsScientific Computing Examples (In Development):
vector_calculus.esk
- Vector operations and calculusautodiff_example.esk
- Automatic differentiation in actionComprehensive documentation is available to help you learn and master Eshkol:
Eshkol uses the following file extensions:
.esk
- Eshkol source files.eskh
- Eshkol header files.eskir
- Intermediate representation.eskc
- Generated C code.esklib
- Compiled library.eskmod
- Module file.eskproj
- Project configuration.eskpkg
- Package definitionEshkol is an ambitious project, and we welcome contributions from the community! Whether you’re interested in language design, compiler implementation, scientific computing, or AI, there’s a place for you in the Eshkol ecosystem.
Check out our Implementation Status and Scheme Compatibility Implementation Plan to see where you can help.
MIT
If you use Eshkol in your research, please cite it as:
@software{tsotchke2025eshkol,
author = {tsotchke},
title = {Eshkol: A High-Performance LISP-like language for Scientific Computing and AI},
year = {2025},
url = {https://github.com/tsotchke/eshkol}
}