Пока мы увлечённо следили за перипетиями российской лунной миссии, в IT появился свой «лунный» проект — язык Moonbit, предназначенный для компиляции в WebAssembly. Один из авторов проекта — Хунбо Чжан, который до Moonbit участвовал в создании языков OCaml, Flow и ReScript (JS на максималках со статической типизацией и другими фишками).
В чём идея Moonbit
Если вы следите за ситуацией в веб-разработке, то наверняка слышали о WebAssembly — платформе, которая позволяет быстро исполнять в браузере код на любом языке: C++, Rust, Golang и других. Считается, что в будущем WebAssembly может забрать у JavaScript лавры главного языка фронтенда.
Но сейчас в мире разработки под WebAssembly существует проблема: очень мало языков умеют нормально работать с платформой. Так, низкоуровневые Rust и C++ собираются в компактный байт-код, но делают это долго и в целом сложны для освоения. Языки высокого уровня типа Go проще в обращении, но результирующий код получается настолько громоздким, что нивелирует все преимущества WebAssembly.
Moonbit же нацелен на то, чтобы решить сразу все эти проблемы:
- Во-первых — довольно быстро компилируется благодаря инкрементальной пересборке и распараллеливанию операций.
- Во-вторых — не использует конструкции, которые влияют на размер генерируемого кода.
- А в-третьих — обладает довольно гуманным синтаксисом, вдохновлённым Go и Rust, что можно заметить на скриншоте:

Как и язык Go, Moonbit берёт на себя работу с памятью: программисту не нужно следить за утечками и чистить программу от мусорных ссылок. При этом шансов «выстрелить в ногу» даже меньше, чем при работе с Go, — например, Moonbit не поддерживает указатели и другие опасные конструкции.
Сроки и перспективы
Сейчас проект находится на стадии альфа-тестирования: разработчикам доступны только бинарные сборки компилятора для macOS и Ubuntu, а также виртуальная среда разработки, где можно пощупать язык и собрать первую программу.
В будущем авторы языка обещают завезти продвинутые инструменты разработки, включая пакетный менеджер, плагин для VS Code и даже собственную браузерную IDE. Полноценный релиз языка и его инфраструктуры намечен на второй квартал 2024 года.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!