Открыть сервис

Ravenna

Ravenna — это язык программирования, разработанный компанией «1С-Битрикс» (входит в экосистему «1С») для создания веб-приложений и серверной логики в среде управления сайтами «1С-Битрикс: Управление сайтом». Относится к классу интерпретируемых, динамически типизированных языков с синтаксисом, близким к C-подобным языкам (JavaScript, C#). Основное назначение — написание обработчиков событий, компонентов, модулей и интеграций в рамках платформы «1С-Битрикс», а также автоматизация задач администрирования. Язык является проприетарным и распространяется исключительно в составе лицензионных продуктов компании «1С-Битрикс».

История

Разработка Ravenna началась в 2018 году как внутренний проект компании «1С-Битрикс». Основной целью было создание альтернативы PHP — основному языку, на котором написана платформа «1С-Битрикс: Управление сайтом». PHP, несмотря на широкую распространённость, имеет ряд ограничений в контексте высоконагруженных проектов и сложной бизнес-логики: недостаточная строгость типизации, уязвимости к инъекциям, сложность отладки. Ravenna проектировался как более безопасный, производительный и удобный для разработчиков инструмент, интегрированный непосредственно в ядро CMS.

Первая публичная демонстрация Ravenna состоялась на конференции «Битрикс-2019» (мероприятие компании «1С-Битрикс»). В 2020 году язык был внедрён в качестве экспериментального модуля в версии «1С-Битрикс: Управление сайтом» 20.0. К 2022 году Ravenna стал обязательным компонентом для всех новых установок платформы начиная с версии 21.0. По состоянию на 2024 год язык продолжает развиваться, выходят обновления, расширяющие его функциональность, в том числе поддержка асинхронного выполнения и интеграция с внешними API.

Архитектура и принципы работы

Ravenna является интерпретируемым языком, выполняемым на виртуальной машине, встроенной в ядро «1С-Битрикс». Исходный код на Ravenna компилируется в байт-код, который затем исполняется интерпретатором. Это обеспечивает изоляцию от основного PHP-окружения и повышенную безопасность: код на Ravenna не может напрямую обращаться к файловой системе сервера или выполнять системные вызовы без явного разрешения.

Ключевые особенности архитектуры:

  • Песочница (sandbox): выполнение кода Ravenna ограничено изолированной средой, что предотвращает выполнение вредоносных операций.
  • Типизация: динамическая, но с поддержкой строгих типов (int, float, string, bool, array, object, null). В отличие от PHP, Ravenna не допускает неявного приведения типов в опасных контекстах (например, сравнение строки с числом).
  • Управление памятью: автоматическое (сборщик мусора), с возможностью ручного освобождения ресурсов.
  • Многопоточность: поддерживается асинхронное выполнение через корутины (сопрограммы), что позволяет обрабатывать несколько запросов параллельно без блокировки основного потока.

Синтаксис и возможности

Синтаксис Ravenna сознательно приближен к C-подобным языкам, чтобы снизить порог входа для разработчиков, знакомых с JavaScript, C# или Java. Основные конструкции:

  • Объявление переменных: let x = 10; (тип выводится автоматически) или let x: int = 10; (явное указание).
  • Функции: function add(a: int, b: int): int { return a + b; }
  • Условные операторы: if, else if, else, switch.
  • Циклы: for, while, do-while.
  • Работа с массивами: let arr = [1, 2, 3]; arr.push(4);
  • Объекты: let obj = { name: "Иван", age: 30 };
  • Обработка ошибок: try, catch, finally.
  • Асинхронность: async function fetchData() { ... } и await.

Пример кода на Ravenna:

```ravenna function calculateDiscount(price: float, userGroup: string): float { let discount = 0.0; if (userGroup == "vip") { discount = 0.2; } else if (userGroup == "regular") { discount = 0.1; } return price * (1 - discount); }

let finalPrice = calculateDiscount(1000.0, "vip"); // finalPrice == 800.0 ```

Применение

Ravenna используется исключительно в экосистеме «1С-Битрикс». Основные сценарии:

  • Разработка компонентов и модулей: замена PHP-кода в пользовательских компонентах, обработчиках событий, агентах (запланированных задачах).
  • Интеграция с внешними сервисами: написание адаптеров для API (платёжные системы, CRM, мессенджеры).
  • Администрирование: автоматизация рутинных операций (очистка кэша, обновление данных, генерация отчётов).
  • Безопасность: выполнение пользовательского кода (например, в конструкторах форм или кастомных калькуляторах) без риска для сервера.

Критика и ограничения

Несмотря на преимущества, Ravenna имеет ряд недостатков, отмечаемых разработчиками:

  • Закрытость: язык является проприетарным и не может быть использован вне платформы «1С-Битрикс». Это ограничивает его распространение и сообщество.
  • Зависимость от версии CMS: обновления языка привязаны к релизам «1С-Битрикс: Управление сайтом», что может замедлять внедрение новых возможностей.
  • Ограниченная документация: по состоянию на 2024 год официальная документация по Ravenna неполная, отсутствуют подробные руководства по сложным сценариям (например, работа с сокетами, многопоточность).
  • Сложность отладки: инструменты для отладки (IDE, профилировщик) находятся в стадии разработки, что усложняет поиск ошибок.
  • Производительность: в некоторых тестах (например, интенсивные вычисления) Ravenna уступает нативному PHP из-за накладных расходов на интерпретацию байт-кода.

Сравнение с аналогами

Ravenna часто сравнивают с другими языками, используемыми в веб-разработке:

ХарактеристикаRavennaPHPJavaScript (Node.js)Python (Django)
ТипизацияДинамическая, строгаяДинамическая, слабаяДинамическая, слабаяДинамическая, строгая
Безопасность (песочница)ВстроеннаяОтсутствует (требуются расширения)Отсутствует (требуются расширения)Отсутствует (требуются расширения)
АсинхронностьКорутиныРасширения (Swoole, ReactPHP)Встроенная (Event Loop)Встроенная (asyncio)
ЭкосистемаТолько «1С-Битрикс»Широкая (Laravel, Symfony, WordPress)Огромная (React, Angular, Express)Широкая (Django, Flask)
ПроизводительностьСредняяВысокая (с OPcache)Высокая (V8)Средняя

Перспективы развития

Компания «1С-Битрикс» анонсировала планы по расширению функциональности Ravenna, включая:

  • Поддержку модульного тестирования.
  • Интеграцию с популярными IDE (PhpStorm, Visual Studio Code).
  • Улучшение производительности за счёт JIT-компиляции (Just-In-Time).
  • Расширение библиотеки встроенных функций (работа с изображениями, шифрование, HTTP-запросы).

Интересные факты

  • Название «Ravenna» происходит от итальянского города Равенна, известного своими мозаиками и древними памятниками. Выбор названия символизирует «мозаичность» и гибкость языка.
  • Ravenna не поддерживает прямое наследование классов, вместо этого используется композиция и трейты (примеси), что упрощает архитектуру и уменьшает связанность кода.
  • В 2023 году на Ravenna был написан официальный модуль «Интеграция с Telegram» для «1С-Битрикс: Управление сайтом», что стало первым крупным публичным примером использования языка.

Источники

  • Официальная документация «1С-Битрикс: Управление сайтом» (раздел «Ravenna»).
  • Материалы конференции «Битрикс-2019» (презентация Ravenna).
  • Статья «Ravenna: новый язык программирования для 1С-Битрикс» на портале «Хабр» (2020).
  • Релизные заметки «1С-Битрикс: Управление сайтом» версий 20.0–21.0.
  • Обсуждения на форуме разработчиков «1С-Битрикс» (темы по Ravenna, 2021–2024).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →