Язык программирования Elixir уже давно завоевал популярность среди разработчиков благодаря своей функциональности и надежности, особенно в создании крупных распределенных систем и обработки параллельных задач. Однако одно из ограничений Elixir до недавнего времени заключалось в невозможности выполнения кода непосредственно в браузере. Это изменилось с выходом первой версии Popcorn — инструмента, который позволяет запускать Elixir-код в веб-среде, открывая новые возможности для интерактивного обучения, разработки и экспериментов. Почему запуск Elixir в браузере важен? Традиционно для работы с Elixir требуется локальная установка среды выполнения BEAM и сопутствующих компонентов. Новый подход с Popcorn устраняет эти требования, предоставляя разработчикам простую и доступную платформу для быстрого тестирования кода без сложных настроек.
Это особенно полезно для новичков, которые хотят экспериментировать и изучать язык в интерактивном режиме через веб-интерфейсы с функциями REPL, интерактивными туториалами и примерами, доступными прямо в браузере. Технология, лежащая в основе Popcorn, интересна и новаторска. Были рассмотрены разные способы достижения задачи запуска Elixir в браузере. Один из них — компиляция Elixir в WebAssembly (Wasm) — технически сложен и не обеспечивает полноценного исполнения полной виртуальной машины BEAM в веб-среде. Проект Firefly, который использовал такой подход, был остановлен из-за высокой сложности и ограниченных возможностей.
Другой путь — транспиляция Elixir в JavaScript, который также сопряжен с необходимостью эмуляции большого количества функций стандартной библиотеки Elixir и элементов OTP в среде JavaScript. Проект ElixirScript пытался реализовать такой способ, но он также прекратил развитие. Popcorn выбрал компромиссное решение — использование меньшей и более компактной реализации виртуальной машины Erlang — AtomVM. Эта виртуальная машина изначально разработана для микроконтроллеров и других ограниченных по ресурсам систем, поэтому она более подходящая для запуска через WebAssembly в браузере. Однако AtomVM поддерживает лишь ограниченный набор функций Erlang и Elixir, что потребовало доработок и адаптаций со стороны разработчиков Popcorn.
Они модифицировали стандартные библиотеки и сами возможности виртуальной машины, чтобы расширить потенциал выполнения кода. Интересным аспектом Popcorn является интеграция с JavaScript API. Это позволяет не только запускать Elixir-код на клиенте, но и взаимодействовать с браузерными возможностями через вызовы из Elixir в JavaScript и наоборот. Такой подход открывает широкие горизонты для создания браузерных приложений и библиотек с применением привычного разработчикам Elixir синтаксиса и парадигм. Несмотря на значительный прогресс, в Popcorn все еще существуют ограничения.
Текущая версия поддерживает только конкретные версии Elixir (1.17.3) и OTP (26.0.2).
Некоторые ключевые функции Elixir и OTP пока не реализованы в AtomVM, включая работу с большими целыми числами, битстроками и расширенными возможностями ETS. Кроме того, общий размер скомпилированных артефактов достаточно велик — более 3 МБ, что создает определенные сложности при использовании в веб-приложениях, ориентированных на скорость загрузки и производительность. Разработчики Popcorn активно работают над оптимизацией кода, рассматривая методы tree-shaking и другие подходы для уменьшения конечного размера библиотек и виртуальной машины. Это позволит сократить размер загрузки без потери функциональности и сделать Popcorn более пригодным для реальных проектов. Сообщество играет важную роль в становлении Popcorn.
Разработчики призывают всех заинтересованных попробовать инструмент, сообщать об ошибках, предлагать улучшения и участвовать в развитии проекта. Популяризация и распространение Popcorn может радикально изменить подход к написанию и тестированию кода на Elixir, особенно в образовательном и прототипном сегментах. Что делать разработчикам сейчас? Если вы хотите быстро проверить идею на Elixir или хотите познакомить новичков с языком максимально просто, Popcorn — это идеальный инструмент для начала. Интерфейс позволяет запускать функции, создавать процессы и даже компилировать Elixir-код на лету без необходимости загружать или устанавливать дополнительные компоненты. Такой уровень доступности и удобства может существенно повысить эффективность обучения и прототипирования.
Популярность Elixir растет благодаря его способности обрабатывать масштабируемые и отказоустойчивые приложения, особенно в области веб-сервисов и обработки данных в реальном времени. С выходом Popcorn появляется возможность расширить экосистему языка, привлекая новых разработчиков и создавая целые фронтенд-решения, основанные на Elixir. Вместо традиционных JavaScript-фреймворков перед нами может открыться новая эра «браузерного Elixir» с уникальными инструментами и подходами. Проекты с открытым исходным кодом, такие как Popcorn, особенно ценны, поскольку они инновационно решают комплексные задачи и развивают среду развития языков программирования. Инструмент поддерживается компанией Software Mansion из Кракова — известной лабораторией разработчиков, которая активно участвует в развитии React Native и Membrane Framework.
Их опыт и экспертиза гарантируют дальнейшее качественное развитие Popcorn и интеграцию с другими современными технологиями. Будущее Popcorn видится очень многообещающим. Возможна интеграция с Livebook — интерактивной средой для написания кода Elixir, полностью работающей в браузере. Также можно ожидать появление локальных приложений с возможностью работы офлайн, использования LiveView hooks, и даже развития полноценного фронтенд-фреймворка на базе Elixir, выполняющегося непосредственно в браузере. Для всех, кому интересна разработка на Elixir и кто хочет расширить свои горизонты в веб-программировании, Popcorn предоставляет возможность войти в новую эру инструментов и возможностей.