категории | RSS

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

Представлен новый язык программирования 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 после готовности первой бета-версии, выпуск которой ожидается в середине следующего года.



Источник новости: habr.com

DimonVideo
2023-08-20T20:50:02Z

Здесь находятся
всего 0. За сутки здесь было 0 человек
Яндекс.Метрика