Как стать автором
Обновить

Представлен язык программирования Moonbit, оптимизированный для создания приложений, компилируемых в WebAssembly

Время на прочтение3 мин
Количество просмотров5.4K

Представлен новый язык программирования Moonbit, который специально оптимизирован для создания приложений, компилируемых в универсальный промежуточный код WebAssembly. Проект нового языка анонсировал Хунбо Чжан (Hongbo Zhang) — основной разработчик языка программирования ReScript, а также специалист, участвовавший в разработке языков OCaml и Flow.

Согласно данным OpenNET, ключевыми целями разработки Moonbit являются предоставление простого синтаксиса, высокая скорость компиляции, генерация компактного и быстрого промежуточного кода WebAssembly. Предоставляется несколько бэкендов для генерации кода, среди которых имеются бэкенды для JavaScript и нативного кода.

Необходимость создания нового языка объясняется тем, что разработка приложений для WebAssembly на низкоуровневых языках, таких как C++ и Rust, сопряжена со сложностью изучения и замедлением разработки из-за длительной компиляции. Высокоуровневые языки, такие как Go, проще для изучения и написания программ, но отстают по эффективности и компактности результирующего кода. Разработчики Moonbit попытались объединить лучшие стороны низкоуровневых и высокоуровневых языков, в контексте их использования с технологией WebAssembly.

Для достижения высокой производительности выполнения программ в компиляторе Moonbit задействован многоуровневый промежуточный код (MLIR Multi-Level Intermediate Representation), предоставляющий дополнительные возможности для оптимизаций, учитывающих графы потоков управления и данных, а также позволяющий более эффективно использовать процессорный кэш. Применение MLIR даёт возможность проводить оптимизацию и исключать избыточные конструкции на более высоком уровне, учитывающем структуру всей программы как единого целого, а не отдельных её частей.

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

Язык Moonbit поддерживает несколько парадигм программирования, включая элементы объектно-ориентированного и функционального программирования, предоставляет простую систему типов и реализует архитектуру, ориентированную на обработку данных.

Синтаксис Moonbit разработан с оглядкой на простоту языка Go и некоторые расширенные возможности Rust, такие как поддержка сопоставления с образцом, вывода типов, дженериков и специализированного полиморфизма (подобие типажей). Для упрощения разработки в Moonbit, как и в языке Go, используется автоматическое управление памятью и рекурсивные замыкания. При этом в отличие от языка Go, в Moonbit изначально не поддерживаются потенциально опасные элементы, такие как указатели.

В рамках проекта Moonbit развивается полноценная платформа разработки, включающая в себя компилятор, сборочный инструментарий, пакетный менеджер и интегрированную среду разработки, доступ к которой осуществляется через web-браузер (поддерживается как работа в облаке, так и запуск в offline-режиме). Также доступен плагин для редактора кода VSCode. В настоящее время проект находится на начальной стадии альфа-тестирования, на которой доступны только бинарные сборки компилятора и online-окружение для проведения экспериментов.

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

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 15: ↑15 и ↓0+15
Комментарии4

Другие новости

Истории

Работа

Ближайшие события

Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область