Осознанная инженерия
Процесс создания BDUI-движка наполнен интересными задачами: создание стабильного и гибкого API, обеспечение высокой производительности, четкое разделение ответственности между клиентом и сервером. Но есть задача, которая ставит перед архитектором особый вызов: поддержка динамического выполнения кода.
Когда движок должен не просто отрисовывать интерфейсы, а исполнять логику, написанную «поверх него», без пересборки и перезапуска. Классическое решение - внедрить third-party рантайм, но за его удобство почти всегда приходится платить чужими ограничениями и... "особенностями".
Ранее я уже погружался в эту тему и сейчас возвращаюсь к ней с новым багажом знаний и опыта. Мой инструмент в этом путешествии - Hetu, встраиваемый скриптовый язык для Dart. Лёгкий интерпретатор с синтаксисом, похожим на Kotlin, который позволяет анализировать, компилировать и выполнять код во прямо время работы приложения.
Но вернулся я к нему не для того, чтобы просто использовать, мирясь с недостатками. А чтобы разобрать до винтиков и собрать заново. Понять, как устроены языки программирования и их инфраструктура под капотом. И главное - сделать эту “подкапотную магию” прозрачной и понятной широкому кругу разработчиков, которым, как и мне, интересно заглянуть глубже и дальше, чем уровень прикладного кода.
Почему именно Hetu?
Во-первых, проектов подобного уровня и сложности под Dart почти нет. Примеров адекватных и более-менее функциональных реализаций днем с огнем не найти, а production-ready не существует в природе!
Во-вторых - Hetu, при всей своей глубине и отсутствии амбиций (автор оригинальной реализации называет hetu_script своим "домашним развлечением"), страдает некоторыми вполне себе взрослыми и серьезными проблемами:
- Монолитная архитектура, которую сложно расширять - это тормозит адаптацию под новые сценарии и мешает безопасно заменять/переписывать части движка.
- Перформанс далёк от идеала (мягко говоря) - беглый осмотр кодовой базы показал большое количество "шероховатостей", которые напрямую влияют на скорость работы.
- Код местами запутан и перегружен динамическими типами. Во многих местах разработчик языка лишен статической проверки типов, что увеличивает риск ошибок.
- Отсутствие инженерных стандартов: нет документации критически важных частей проекта, нет уверенности, что очередное изменение не ломает проект.
Именно это делает проект идеальной целью: он живой, сложный и настоящий. Это не абстрактная задача из учебника, а реальный и работоспособный runtime поверх Dart. Это шанс разобрать работающий механизм, понять каждую шестеренку, отполировать ее и собрать обратно - уже в новом качестве.
Цели проекта и почему эта работа важна
Мои цели - не просто починить несколько багов и добавить пару фич, они гораздо обширнее и глубже:
- Показать техническую эволюцию большого и сложного проекта. Разобрать архитектуру Hetu, устранить слабые места языка и превратить движок во что-то, что хотя бы приближается к production-ready качеству.
- Дать образовательную ценность. Показать, как инженер может мыслить системно - от структуры байткода до дизайна языков и паттернов проектирования. На конкретных примерах и реальном коде.
- Сформировать практические артефакты. Каждый этап работы превращается в наглядную историю инженерного процесса и того, что можно брать сложные, “страшные” темы - и делать их понятными и полезными для всех, кто пишет код.
Моя цель - провести полную трансформацию и создать Hetu++. Для мира Dart это уникально, поскольку язык не считается пригодным для "системного" программирования. Попытка развенчать этот миф - крутейший и вдохновляющий поинт для любого инженера!
Hetu++ - это не просто форк, а исследовательский и образовательный проект с реальной практической ценностью. Шаг за шагом я буду разбирать, как работают интерпретаторы, компиляторы и языки программирования в целом. Без академического пафоса - только практика, Dart и живой процесс, который вы можете наблюдать своими глазами.
Что ждет тебя в рамках этого проекта
- 🔍 Глубокие технические статьи и разборы - от структуры байткода Hetu до архитектуры и устройства интерпретаторов и компиляторов
- ⚙️ Инженерные заметки и прототипы - черновики, идеи и эксперименты, которые не публикуются в открытом доступе
- 💬 Доступ в закрытый чат - обсуждения, помощь с архитектурой, идеи для контрибьюта и возможность влиять на вектор развития Hetu++
- 🚀 Совместное исследование - возможность идти по этому пути вместе
- 📚 Переводы книг и статей по теме проекта, которых нет на русском языке
🔔 Часть контента будет эксклюзивной для Boosty, поэтому рекомендую подписаться или хотя бы нажать «наблюдать», чтобы не пропустить обновления.
Наблюдать за эволюцией кода можно в репозитории форка:
осознанная инженерия
htxx
hetu
language design