CrossTL: A Universal Programming Language Translator with Unified Intermediate Representation
2508.21256v1
cs.PL, cs.CL, cs.GR, 68N20, 68N15, 68W10, D.3.4; D.3.2; D.1.3
2025-09-02
Авторы:
Nripesh Niketan, Vaatsalya Shrivastva
Резюме на русском
#### Контекст
Современное программирование становится все более усложненным из-за чрезвычайного разнообразия языков и платформ. Разработчикам требуется владение несколькими языками для создания решений, работающих на разных платформах (например, GPU или мобильных устройствах). Эта ситуация приводит к высоким затратам на обучение и трудоемкость в разработке. Кроме того, традиционные подходы к переводу кода между языками требуют создания отдельных систем для каждой пары языков, что приводит к экспоненциальному росту сложности при увеличении количества языков. На этой почве возникает необходимость в разработке универсального инструмента, позволяющего эффективно переводить код между языками с минимальными затратами и усилий.
#### Метод
CrossTL является универсальной системой для перевода между программированием языков, основанной на универсальном интерпретаторе CrossGL. Методология включает несколько ключевых компонентов:
1. **Лексеры и парсеры**, конвертирующие исходный код в абстрактные синтаксические деревья (AST) для каждого языка.
2. **Бибилиотеки для перевода**, включающие:
- Конвертеры ToCrossGLConverter для перевода исходного кода в универсальный CrossGL.
- Генераторы CodeGen для целевых платформ.
3. **Общие модули**, обеспечивающие полный перевод полного программного кода.
Гибкость CrossTL обеспечивается модульной архитектурой, позволяющей легко добавлять новые языки. Для этого необходимо разработать только специализированный фронтенд (лексер/парсер) и бэкенд (CodeGen) для поддерживаемого языка.
#### Результаты
В ходе экспериментов CrossTL был протестирован на следующих языках: CUDA, HIP, Metal, DirectX HLSL, OpenGL GLSL, Vulkan SPIR-V, Rust и Mojo (Slang находится в разработке). Для каждого языка проводился полный цикл тестирования:
1. Выполнение перевода из исходного кода в CrossGL.
2. Обратный перевод из CrossGL в целевой язык.
3. Компиляция и выполнение на соответствующей платформе.
Результаты показали, что CrossTL успешно обеспечивает компиляцию и выполнение по всем тестируемым языкам и платформам. Это доказывает практическую применимость и эффективность универсального подхода к переводу кода.
#### Значимость
CrossTL представляет собой значительный прорыв в области компьютерных технологий, позволяя создавать программы, которые могут запускаться на разных платформах без необходимости повторного написания кода. Он может применяться в следующих областях:
- **GPU-программирование и графическое программирование**, где необходимы разные языки для разных платформ.
- **Системное программирование**, позволяющее эффек
Abstract
We present CrossTL, a universal programming language translator enabling
bidirectional translation between multiple languages through a unified
intermediate representation called CrossGL. Traditional approaches require
separate translators for each language pair, leading to exponential complexity
growth. CrossTL uses a single universal IR to facilitate translations between
CUDA, HIP, Metal, DirectX HLSL, OpenGL GLSL, Vulkan SPIR-V, Rust, and Mojo,
with Slang support in development. Our system consists of: language-specific
lexers/parsers converting source code to ASTs, bidirectional CrossGL
translation modules implementing ToCrossGLConverter classes for importing code
and CodeGen classes for target generation, and comprehensive backend
implementations handling full translation pipelines. We demonstrate
effectiveness through comprehensive evaluation across programming domains,
achieving successful compilation and execution across all supported backends.
The universal IR design enables adding new languages with minimal effort,
requiring only language-specific frontend/backend components. Our contributions
include: (1) a unified IR capturing semantics of multiple programming
paradigms, (2) a modular architecture enabling extensibility, (3) a
comprehensive framework supporting GPU compute, graphics programming, and
systems languages, and (4) empirical validation demonstrating practical
viability of universal code translation. CrossTL represents a significant step
toward language-agnostic programming, enabling write-once, deploy-everywhere
development.