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 часто сравнивают с другими языками, используемыми в веб-разработке:
| Характеристика | Ravenna | PHP | JavaScript (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 →