Язык программирования Mash

glgfojyi0psr6vrwsr7w-ce9c_a.png
http://mash-project.org
https://github.com/RoPi0n/mash-lang

Mash?


Это язык императивный язык программирования с динамической типизацией, сборкой мусора, ООП и поддержкой многопоточности.
4whkhz_zhgx6te6jkodwhadjo3s.png
Интересно? Тогда под кат! :)

Насколько завершен проект?


qikol4xbhsuvqfmn6d_hsgwhrys.png
На данный момент язык находится на Pre-Release этапе, его функционала и производительности пока что не достаточно, чтобы решать с его помощью абсолютно любые задачи, но именно к этому я и стремлюсь.
В репозитории выложена сборка под Win64, в которой весь функционал языка отлажен и работает без багов.

По функционалу Mash схож с Python.
Язык спроектирован максимально простым и полнофункциональным.
Полностью поддерживает ООП, интроспекцию, рефлексию, функции высшего порядка, многопоточность, синхронизацию, распараллеливание и синхронизацию кода внутри тела методов.

В качестве среды выполнения языка используется стековая виртуальная машина (ВМ), поддерживающая многопоточность, сборку мусора (Reference Counting).
Реализован транслятор языка (с построением AST, все как по книжкам) в абстрактный код для ВМ и в перспективе в другие языки (но из-за сложности языка — это пока только планы на будущее).
Для удобства в ознакомлении с языком и работе с ним реализована небольшая IDE (FPC + SynEdit).

Встраиваемость


ВМ языка имеет API, функционал языка можно расширять путем написания библиотек для ВМ на любом нативном языке (FPC, Delphi, C/C++, Rust и т.д.),
также язык можно встроить в любой ваш проект, при этом получить в свое распоряжение весь функционал Mash’a и его нативных библиотек.

Debug?


У ВМ предусмотрена возможность работы в связке с отладчиком (который пока что очень сырой).
Язык поддерживает трассировку исключений.
y90wml7lh6asn10hui4lgqfveck.png

Поддержка платформ


Язык полностью написан на Free Pascal, который в свою очередь поддерживает огромный список платформ, под которые может быть собран Mash.
Зависимости от каких-либо библиотек отсутствуют.

Проект уже собирал ранее и тестировал на Windows, Linux и Android.

На что Mash способен уже сейчас?


На данный момент я работаю над реализацией стандартного набора библиотек для работы с файлами, математикой, I/O, многопоточностью, GUI, сетью, базами данных, криптографией и т.д.
m1hj-msykfecanoq5ykpcopojkc.png
ylervuwae3fafigbvdefskzaowq.png
В репозитории проекта (и в Pre-Release сборке) можно найти небольшие демо-приложения.
На Mash написана змейка, асинхронный веб сервер/фреймворк (по типу Flask’a), отрисовка графиков в декартовой и полярных системах координат, Аттрактор Лоренца, вращение простых 3D моделек по типу кубика, а так же версия транслятора Mash’a, написанная на Mash’e.

Что дальше?


Над проектом работаю пока один в рамках хобби, так что его будущее все ещё остается не определенным (+вуз, +разные неопределенные сложности и релиз может отложиться на долго).
В данной статье представлен промежуточный результат работы, все ещё далекий от конечной цели.
В разработке, помимо библиотек для ВМ, находится JIT компилятор по типу HotSpot.

Дочитали до конца?


Спасибо за внимание:)

© Habrahabr.ru