exo
by
exo-lang

Description: Exocompilation for productive programming of hardware accelerators

View on GitHub ↗

Summary Information

Updated 1 hour ago
Added to GitGenius on April 13th, 2025
Created on August 7th, 2020
Open Issues & Pull Requests: 129 (+0)
Number of forks: 56
Total Stargazers: 733 (+0)
Total Subscribers: 11 (+0)

Issue Activity (beta)

Open issues: 55
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 958 days
Stale 30+ days: 55
Stale 90+ days: 54

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • C: Scheduling (24)
  • T: Bug (19)
  • C: Prog Analysis (18)
  • S: Available (18)
  • C: Codegen (13)
  • S: Needs Triage (13)
  • S: Needs Discussion (9)
  • C: Internal (8)

Most active issues this week

No issue events were indexed in the last 7 days.

Repository Insights (GitGenius)

Median issue/PR response: 32.0 hours
Mean response time: 124.6 days
90th percentile: 457.0 days
Tracked items: 29

Most active contributors

Detailed Description

Exo is a domain-specific language and compiler framework designed for productive programming of hardware accelerators. Written in Python and supporting versions 3.9 and above, Exo enables developers to write high-level specifications of computations that can be compiled down to optimized C code for various hardware targets. The project provides both direct Python execution of Exo files and a command-line compiler tool called exocc that generates C and header files with customizable output directories and file naming conventions.

The core purpose of Exo is to address the challenge of programming hardware accelerators by providing a scheduling language that allows developers to express algorithmic intent separately from low-level optimization decisions. This separation enables more productive development workflows compared to hand-writing optimized accelerator code. The framework includes comprehensive documentation and examples in dedicated directories, along with a live interactive environment available at godbolt.exo-lang.dev for experimentation.

From a technical perspective, Exo functions as both an interpreter and code generator. It leverages PySMT for symbolic reasoning about program transformations, with Z3 solver integration to handle constraint solving during compilation. The build system relies on CMake version 3.21 or newer and uses Ninja as its default backend, though this can be configured. The test infrastructure generates C code and compiles it using system compilers, ensuring that generated code works correctly across different platforms.

The project demonstrates active maintenance and community engagement. GitGenius tracking shows a median issue and pull request response latency of 32 hours across 29 tracked items, indicating responsive maintainers. The most active contributor tracked is yamaguchi1024 with 41 events, followed by gilbo with 9 events. Bug reports represent the most common issue type with 15 tracked instances, while program analysis discussions account for 7 active items. The project maintains connections with related repositories including LLVM, WebAssembly tools, and open-source UI projects through overlapping contributor networks.

Development setup follows standard Python practices with strong recommendations for virtual environments. The project uses pre-commit hooks for code formatting and requires careful dependency management, particularly around PySMT solver configuration. For advanced testing scenarios, Exo optionally supports the Intel Software Development Emulator for testing x86 features like AVX-512 and AMX on systems that lack native support.

Exo's intellectual foundation is grounded in peer-reviewed research. The original framework was published at PLDI 2022 in a paper titled "Exocompilation for Productive Programming of Hardware Accelerators" by Ikarashi, Bernstein, Reinking, Genc, and Ragan-Kelley. A follow-up paper, "Exo 2: Growing a Scheduling Language," was published at ASPLOS 2025, documenting the evolution of the scheduling language and its capabilities. The design principles underlying the system are documented in Design.md within the repository.

The project is maintained by researchers at MIT, with contact available through [email protected] and [email protected]. The framework is classified across multiple programming language and compiler design categories, reflecting its role as both a language implementation and a tool for code generation targeting hardware accelerators.

exo
by
exo-langexo-lang/exo

Repository Details

Fetching additional details & charts...