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