Институт системного программирования Роcсийской академии наук


Инновации

Собственные технологии

LLV8: экспериментальный компилятор третьего уровня для JavaScript-движка V8

LLV8 – экспериментальный динамический (just-in-time) компилятор, задуманный в качестве третьего уровня компиляции и выполнения программ для популярного JavaScript-движка V8. В сравнении с имеющимися в V8 двумя уровнями, упор делается на максимальную эффективность производимого им машинного кода для пользовательской программы. Для этого используется LLVM MCJIT – набор библиотек для оптимизации программ и генерации кода на лету.

Статический анализ: Linux Driver Verification

Инструментарий Linux Driver Verification (LDV Tools) дополняет традиционные инструменты статического анализа, используя передовые техники верификации, обеспечивающие повышенную точность и глубину анализа исходного кода программы,  используя больше памяти и вычислительных ресурсов.

HDL Retrascope

HDL Retrascope — это инструмент обратной инженерии (reverse engineering) и трансформаций (transformation) описаний цифровой аппаратуры, выполненных на таких HDL-языках (hardware description languages), как Verilog и VHDL. Инструмент позволяет анализировать HDL-описания, реконструировать, лежащие в их основе модели (расширенные конечные автоматы), и использовать полученные модели для генерации тестов, проверки свойств и других задач.

MicroTESK

MicroTESK (Microprocessor TEsting and Specifcation Kit) — это среда генерации тестовых программ для микропроцессоров на языке ассемблера. Основной областью применения среды является функциональная верификация микропроцессоров на системном уровне. MicroTESK предоставляет простой и гибкий способ спецификации архитектуры верифицируемого микропроцессора, что позволяет минимизировать затраты на адаптацию среды к изменениям в архитектуре.

C++TESK

C++TESK Testing ToolKit является инструментом, реализованном на C++, с открытым исходным кодом, предназначенным для автоматизированного тестирования программ (в основном, написанных на C/C++) и RTL (HDL) моделей цифровой аппаратуры (написанных на языках Verilog и VHDL).

CTESK

CTESK - инструмент для тестирования программного обеспечения, реализованного на языке C. CTESK реализует технологию UniTESK автоматизированного тестирования, основанного на спецификациях. Инструмент позволяет использовать формальное описание требований для генерации тестов.

KEDR

Система KEDR предназначена для динамического (runtime и post factum) анализа модулей ядра Linux, в том числе драйверов устройств, модулей файловых систем и т.д.

RaceHound

RaceHound - система для выявления состояний гонки в модулях ядра Linux.

OTK

OTK (Optimizer Testing Kit) - инструмент для тестирования программных систем, работающих с данными, имеющими сложную структуру.

Masiw

MASIW – Modular Avionics System Integrator Workplace – «рабочее пространство»/«рабочее место» системного интегратора. Набор инструментов, позволяющий: описывать модели комплекса бортового оборудования воздушного судна, производить анализ моделей на соответствие требованиям и генерировать конфигурационные данные и бинарные образы программного кода на основе моделей.

SemaTESK

SemaTESK (Semantics Testing Kit) – метод автоматической генерации множеств тестов для фронт-эндов в трансляторах.

SynTESK

SynTESK (Syntax Testing Kit), инструмент для тестирования синтаксических анализаторов (парсеров) формальных языков.

JavaTESK

JavaTESK - инструмент для тестирования программного обеспечения, реализованного на языке Java. JavaTESK реализует технологии UniTESK автоматизированного тестирования, основанного на спецификациях. Инструмент позволяет использовать формальное описание требований для генерации тестов.

Requality

Система управления требованиями Requality – это инструмент для работы с требованиями, в первую очередь к программным системам. Requality автоматизирует основные процессы работы с требованиями.

PyTESK

PyTESK - инструмент для автоматизации тестирования программного обеспечения. PyTESK представляет собой реализацию на языке Python технологии UniTESK и некоторых дополнительных средств тестирования.

UniTESK

UniTESK - это технология тестирования программных интерфейсов (API), которая в первую очередь предназначена для модульного тестирования. Унифицированная архитектура UniTESK позволяет на ее основе реализовать инструменты для тестирования модулей на практически всех и языках программирования. В настоящее время имеются реализации UniTESK для C (CTESK), C++ (C++TESK), Java (JavaTESK и Summer), Python (PyTESK).

Динамическая компиляция SQL-запросов для СУБД

В рамках данного проекта был разработан метод динамической компиляции запросов с применением альтернативной модели выполнения запроса в СУБД. Также был разработан метод автоматической трансляции исходного кода PostgreSQL во внутреннее представление LLVM IR для использования в динамическом компиляторе, что позволило использовать один и тот же исходный код как для JIT-компилятора, так и для имеющегося интерпретатора.

Поддержка переноса вычислений на акселераторы NVIDIA в реализации OpenMP 4 в компиляторе GCC

Начиная с версии 4.0, стандарт OpenMP, предоставляющий набор расширений-прагм для написания параллельных программ, содержит поддержку для переноса части вычислений из основной программы на специализированные акселераторы, которые обычно имеют отдельную оперативную память и оптимизированную для массивно-параллельных расчетов архитектуру. Для поддержки всего многообразия функциональности OpenMP на NVIDIA-акселераторах была портирована библиотека libgomp, добавлена новая модель кодогенерации для архитектуры NVPTX в GCC, и добавлены новые стратегии преобразования OpenMP SIMD-прагм для SIMT-архитектур.

KAST - Декларативный язык поиска дефектов по синтаксическим деревьям

Декларативный язык, для поиска поддеревьев в синтаксическом дереве, построенном по исходному коду на языках C/C++, Java и C#.

Инструмент итеративного динамического анализа программ Avalanche

Инструмент Avalanche построен на основе среды динамической инструментации программ Valgrind и реализует итеративный автоматический анализ исполняемого кода программ с целью обнаружения критических ошибок времени выполнения.

API Gateway - платформа для эффективной балансировки нагрузки

API Gateway представляет платформу, предназначенную для эффективной балансировки нагрузки между вычислительными узлами и защиты от злоупотребления ресурсами.

Noon - инфраструктура для семантического поиска и исследования предметно-специфичной информации

Noon - набор инструментов для быстрой разработки предметно-ориентированных семантических поисковых и навигационных систем.

Sedna - прирожденная XML-СУБД

Полнофункциональная система управления базами данных, спроектированная специально для работы с XML-данными, с поддержкой языка W3C XQuery. XML — стандарт для хранения и обмена информацией в Вебе.

Texterra - технология для многоязычного интеллектуального анализа текста

Texterra - это технология для многоязычного интеллектуального анализа текста на основе оригинальных методов обработки текста, которые используют знания, извлеченные из пользовательского контента. Texterra предоставляет быстрое масштабируемое решение для интеллектуального анализа текста без необходимости дорогостоящей настройки.

Технологии на основе свободного ПО

Apache Spark - платформа для обработки больших данных

Большинство организаций, сталкивающихся с необходимостью обработки больших объемов данных, используют для этих целей свободные проекты экосистемы Apache Hadoop. Основой для создания Apache Hadoop послужила разработанная компанией Google парадигма параллельного программирования MapReduce. Основные достоинства MapReduce - масштабируемость, простота использования, устойчивость к сбоям. Однако реализация MapReduce в Hadoop обладает рядом недостатков, основным из которых является низкая производительность при решении итеративных алгоритмов (например, машинного обучения). Для решения этой проблемы в университете Беркли была разработана модель для организации распределенных вычислений, основанная на понятии устойчивой к сбоям распределенной коллекции данных (RDD).

Прочие технологии

Инструмент для статической инструментации кода программ для платформы ARM

Инструмент предназначен для статической инструментации бинарного кода с целью модификации поведения программ и библиотек в формате ARM ELF.