📊 Статистика дайджестов

Всего дайджестов: 34022 Добавлено сегодня: 0

Последнее обновление: сегодня
Авторы:

Joel Nyholm, Wojciech Mostowski, Christoph Reichenbach

Саммари на русском не найдено
Доступные поля: ['id', 'arxiv_id', 'title', 'authors', 'abstract', 'summary_ru', 'categories', 'published_date', 'created_at']
Annotation:
Energy consumption is a growing concern in several fields, from mobile devices to large data centers. Developers need detailed data on the energy consumption of their software to mitigate consumption issues. Previous approaches have a broader focus, such as on specific functions or programs, rather than source code statements. They primarily focus on estimating the CPU's energy consumption using point estimates, thereby disregarding other hardware effects and limiting their use for statistical r...
ID: 2512.02738v1 cs.PL, cs.CL
Авторы:

Youwei Xiao, Yuyang Zou, Yun Liang

Саммари на русском не найдено
Доступные поля: ['id', 'arxiv_id', 'title', 'authors', 'abstract', 'summary_ru', 'categories', 'published_date', 'created_at']
Annotation:
Hardware synthesis from high-level descriptions remains fundamentally limited by the sequential optimization of interdependent design decisions. Current methodologies, including state-of-the-art high-level synthesis (HLS) tools, artificially separate implementation selection from scheduling, leading to suboptimal designs that cannot fully exploit modern FPGA heterogeneous architectures. Implementation selection is typically performed by ad-hoc pattern matching on operations, a process that does ...
ID: 2511.15323v1 cs.PL, cs.CL
Авторы:

Jun Gao, Yun Peng, Xiaoxue Ren

Саммари на русском не найдено
Доступные поля: ['id', 'arxiv_id', 'title', 'authors', 'abstract', 'summary_ru', 'categories', 'published_date', 'created_at']
Annotation:
Large Language Models (LLMs) have achieved remarkable progress in code-related tasks. Despite their advancement, empirical evidence reveals that they still struggle with \emph{deductive code reasoning}, the ability to reason about the program execution process. While prior studies have recognized this limitation, the underlying causes remain largely underexplored. In this paper, we begin by presenting a comprehensive empirical study that reveals three key challenges undermining deductive code re...
ID: 2511.00488v1 cs.PL, cs.CL
Авторы:

Jianhong Zhao, Everett Hildenbrandt, Juan Conejero, Yongwang Zhao

## Контекст Modern программирование становится все более сложным, и одним из ключевых аспектов этого процесса является эффективное компилирование. Одна из сложностей заключается в том, что программы часто представлены в разных моделях языка, что требует решения проблем связанных с переводом, оптимизацией и управлением сложностью. Более того, существующие подходы не всегда удается добиться максимальной эффективности, независимо от того, насколько язык программирования оптимизирован. Это создает мотивацию для разработки новых алгоритмов и подходов, которые могут улучшить скорость и качество компиляции, а также сделать процесс более универсальным и автоматизированным. Данная статья предлагает новый подход, который включает в себя использование формальных проверок для повышения эффективности компиляции, а также стремится обеспечить лучшую оптимизацию для различных языков программирования. ## Метод Предлагаемый подход, известный как "Compiling by Proving", основывается на использовании формальных проверок и символьного выполнения для создания оптимизированных правил выполнения. Фундаментальная идея заключается в использовании **All-Path Reachability Proofs (APRP)**, которые позволяют генерировать компилятор, который не только корректен по определению, но и оптимален в своих операциях. Данный подход включает в себя следующие этапы: 1. **Symbolic Execution**: Запускается символьное выполнение программы, чтобы создать все пути, которые могут быть выполнены в программе. 2. **All-Path Reachability Proofs**: Берутся все возможные пути и проверяются их достижимость. Эта процедура позволяет понять все возможные ситуации, которые могут возникать в программе. 3. **Graph-Based Compilation**: Используется граф, который описывает все пути и связи между ними. Этот граф используется для генерации оптимизированных правил выполнения, которые могут быть использованы в компиляторе. 4. **Language-Agnostic Compilation**: Решение является языковой-независимым, что позволяет применять эту технологию для различных языков программирования без необходимости изменять основную архитектуру компилятора. ## Результаты Для оценки эффективности нового подхода проведены несколько экспериментов. В этих экспериментах использовались различные языки программирования, включая C, Java и Rust. Основные результаты показали следующее: - **Opcode-Level Optimizations**: Были выполнены оптимизации на уровне инструкций (opcode-level), что привело к существенным улучшениям в скорости выполнения программ. Эти оптимизации позволили сократить время выполнения в десятки раз, в сравнении с базовым компилятором. - **Whole-Program Compilation**: Установлено, что при целой-программной
Annotation:
Verification proofs encode complete program behavior, yet we discard them after checking correctness. We present compiling by proving, a paradigm that transforms these proofs into optimized execution rules. By constructing All-Path Reachability Proofs through symbolic execution and compiling their graph structure, we consolidate many semantic rewrites into single rules while preserving correctness by construction. We implement this as a language-agnostic extension to the K framework. Evaluation ...
ID: 2509.21793v1 cs.PL, cs.CL
Авторы:

Julien Vanegue, Jules Villard, Peter O'Hearn, Azalea Raad

## Контекст В современной программной инженерии становится все важнее обеспечивать надежность и стабильность больших программных систем. Одной из сложных проблем, с которой сталкиваются разработчики, является поиск места неограниченного выполнения программы (неотмененность). Традиционные подходы к этой задаче либо неэффективны, либо неточны при работе с масштабными кодовыми базами, где количество строк кода достигает миллионов. Недостаточное обнаружение неотмененности может привести к серьезным проблемам, таким как потребление неограниченных ресурсов, сбои в системах и даже критические сбои в критически важных приложениях. Необходимо разработать новые методы, позволяющие эффективно и аккуратно обнаруживать неотмененность в больших кодовых базах. ## Метод Наше исследование основывается на использовании прообразных техник для доказательства неотмененности в программах. Мы реализовали наш подход в инструменте Pulse Infinite, который работает на основе **композиционной** и **под-представительской** методологии. **Композиционная** методология позволяет разбивать программу на меньшие компоненты, что упрощает обработку и увеличивает масштабность. **Под-представительская** техника гарантирует, что результаты доказательства неотмененности являются точными, даже при ограниченном представлении программы. Мы применяем Pulse Infinite к более чем 100 миллионам строк кода (LoC), написанных на языках C, C++ и Hack, чтобы определить возможные места неотмененности. Это позволяет использовать инструмент в реальных программных системах, где традиционные подходы не могут быть применены с достаточной точностью. ## Результаты Мы применили Pulse Infinite к более чем 100 миллионам строк кода, составляющих программные системы, написанные на C, C++ и Hack. Инструмент смог обнаружить более 30 новых мест неотмененности, которые ранее не были обнаружены любыми другими методами. Это приводит к улучшению **стандарта золота** в области обнаружения неотмененности в больших кодовых базах. Эксперименты показали, что Pulse Infinite эффективно обнаруживает проблемы, которые могут привести к неограниченному выполнению программ, даже в условиях огромных кодовых баз. Эти результаты демонстрируют значительное потенциал инструмента для применения в промышленных системах. ## Значимость Проблема неотмененности является критической для многих областей, где необходимо обеспечивать надежность и эффективность программ. Наш инструмент Pulse Infinite может использоваться в сферах, таких как финансовые системы, космическая отрасль, автоматизированные системы, где недостаточное обнаружение неотмененности может привести к критическим потерям. Одним из основных преи
Annotation:
We report on our tool, Pulse Infinite, that uses proof techniques to show non-termination (divergence) in large programs. Pulse Infinite works compositionally and under-approximately: the former supports scale, and the latter ensures soundness for proving divergence. Prior work focused on small benchmarks in the tens or hundreds of lines of code (LoC), and scale limits their practicality: a single company may have tens of millions, or even hundreds of millions of LoC or more. We report on applyi...
ID: 2509.05293v1 cs.PL, cs.CL, cs.SE, D.3; F.3
Авторы:

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-программирование и графическое программирование**, где необходимы разные языки для разных платформ. - **Системное программирование**, позволяющее эффек
Annotation:
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 co...
ID: 2508.21256v1 cs.PL, cs.CL, cs.GR, 68N20, 68N15, 68W10, D.3.4; D.3.2; D.1.3