Хонгбо Жанг (Hongbo Zhang), главен разработчик на езика за програмиране ReScript, който е допринесъл и за OCaml и Flow, представи Moonbit – нов език за програмиране, специално оптимизиран за създаване на приложения, които се компилират в универсалния междинния код на WebAssembly. Като основни цели на разработката са посочени осигуряването на прост синтаксис, висока скорост на компилиране и генериране на компактен и изключително бърз междинен WebAssembly код. Осигурени са няколко помощни средства за генериране на кода, включително помощни средства за JavaScript и на нативен код.
Необходимостта от нов език се дължи на факта, че разработването на приложения за WebAssembly на езици от ниско ниво като C++ и Rust е трудно за научаване и забавя разработката поради дългото време за компилиране. Езиците от високо ниво като Go са по-лесни за изучаване и писане на програми, но изостават по отношение на ефективността и компактността на получения код. Разработчиците на Moonbit са се опитали да съчетаят най-добрите аспекти на езиците от ниско и високо ниво в контекста на използването им с технологията WebAssembly.
За да постигне висока производителност на изпълнение, компилаторът Moonbit използва MLIR Multi-Level Intermediate Representation (MLIR), което предоставя допълнителни възможности за оптимизации, отчитащи графиките на потоците на управление и на данните, както и за по-ефективно използване кеша на процесора. Използването на MLIR дава възможност за оптимизиране и премахване на излишните конструкции на по-високо ниво, като се взема предвид структурата на цялата програма като цяло, а не на отделните ѝ модули.
За да се постигне висока скорост на изграждане и да се подобри интеграцията със средите за разработка, Moonbit поддържа паралелизация по време на компилация, извършва семантичен анализ на ниво функции и може да използва инкрементално възстановяване само на променения код. За да се намали размерът на генерирания код, Moonbit по своята същност не поддържа конструкции, които биха могли да попречат на откриването и премахването на неизползвания код, а структурата на стандартната библиотека е оптимизирана така, че да включва само кода, който е необходим в приложението.
Езикът поддържа няколко парадигми за програмиране, включително елементи на обектно-ориентираното и функционалното програмиране, предоставя проста система от типове и реализира архитектура, ориентирана към данните. Синтаксисът на Moonbit е разработен с оглед на простотата на Go и някои от усъвършенстваните характеристики на Rust, като например поддръжката на съпоставяне на шаблони, извеждането на типовете, генериците и специализирания полиморфизъм (сходство на типовете). В Moonbit, подобно на Go е реализирано автоматично управление на паметта и има рекурсивни затваряния, за да опрости разработката. За разлика от Go, Moonbit изначално не поддържа потенциално опасни елементи като например указателите.
В рамките на проекта се разработва пълноценна платформа за разработка, включваща компилатор, набор от инструменти за сглобяване, мениджър на пакети и интегрирана среда за разработка, достъпна чрез уеб браузър (поддържа се стартиране както в облака, така и офлайн). Предлага се и плъгин за редактора на код VSCode. Понастоящем проектът е в начален етап на алфа тестване, при който са налични само бинарни компилатори за изграждане и онлайн среда за експериментиране. Заявено е, че изходният код на компилатора и инструментите, разработени от проекта, ще бъде отворен след като бъде готова първата бета-версия, която се очаква да бъде пусната в средата на следващата година.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!


