![](https://habrastorage.org/webt/gl/gf/oj/glgfojyi0psr6vrwsr7w-ce9c_a.png)
http://mash-project.org
https://github.com/RoPi0n/mash-lang
Mash?
Это императивный язык программирования с динамической типизацией, сборкой мусора, ООП и поддержкой многопоточности.
![](https://habrastorage.org/webt/4w/hk/hz/4whkhz_zhgx6te6jkodwhadjo3s.png)
Интересно? Тогда под кат!
Насколько завершен проект?
![](https://habrastorage.org/webt/qi/ko/l4/qikol4xbhsuvqfmn6d_hsgwhrys.png)
На данный момент язык находится на Pre-Release этапе, его функционала и производительности пока что не достаточно, чтобы решать с его помощью абсолютно любые задачи, но именно к этому я и стремлюсь.
В репозитории выложена сборка под Win64, в которой весь функционал языка отлажен и работает без багов.
По функционалу Mash схож с Python.
Язык спроектирован максимально простым и полнофункциональным.
Полностью поддерживает ООП, интроспекцию, рефлексию, функции высшего порядка, многопоточность, синхронизацию, распараллеливание и синхронизацию кода внутри тела методов.
В качестве среды выполнения языка используется стековая виртуальная машина (ВМ), поддерживающая многопоточность, сборку мусора (Reference Counting).
Реализован транслятор языка (с построением AST, все как по книжкам) в абстрактный код для ВМ и в перспективе в другие языки (но из-за сложности языка — это пока только планы на будущее).
Для удобства в ознакомлении с языком и работе с ним реализована небольшая IDE (FPC + SynEdit).
Встраиваемость
ВМ языка имеет API, функционал языка можно расширять путем написания библиотек для ВМ на любом нативном языке (FPC, Delphi, C/C++, Rust и т.д.), также язык можно встроить в любой ваш проект, при этом получить в свое распоряжение весь функционал Mash'a и его нативных библиотек.
Debug?
У ВМ предусмотрена возможность работы в связке с отладчиком (который пока что очень сырой).
Язык поддерживает трассировку исключений.
![](https://habrastorage.org/webt/y9/0w/ml/y90wml7lh6asn10hui4lgqfveck.png)
Поддержка платформ
Язык полностью написан на Free Pascal, который в свою очередь поддерживает огромный список платформ, под которые может быть собран Mash.
Зависимости от каких-либо библиотек отсутствуют.
Проект уже собирался ранее и тестировался на Windows, Linux и Android.
На что Mash способен уже сейчас?
На данный момент я работаю над реализацией стандартного набора библиотек для работы с файлами, математикой, I/O, многопоточностью, GUI, сетью, базами данных, криптографией и т.д.
![](https://habrastorage.org/webt/m1/hj/-m/m1hj-msykfecanoq5ykpcopojkc.png)
![](https://habrastorage.org/webt/yl/er/vu/ylervuwae3fafigbvdefskzaowq.png)
В репозитории проекта (и в Pre-Release сборке) можно найти небольшие демо-приложения.
На Mash написана змейка, асинхронный веб сервер/фреймворк (по типу Flask'a), отрисовка графиков в декартовой и полярных системах координат, Аттрактор Лоренца, вращение простых 3D моделек по типу кубика, а так же версия транслятора Mash'a, написанная на Mash'e.
Что дальше?
Над проектом работаю пока один в рамках хобби, так что его будущее все ещё остается не определенным (+вуз, +разные неопределенные сложности и релиз может отложиться на долго).
В данной статье представлен промежуточный результат работы, все ещё далекий от конечной цели.
В разработке, помимо библиотек для ВМ, находится JIT компилятор по типу HotSpot.
Дочитали до конца?
Спасибо за внимание.