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

Mash?


Это императивный язык программирования с динамической типизацией, сборкой мусора, ООП и поддержкой многопоточности.



Интересно? Тогда под кат!

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




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

В репозитории выложена сборка под Win64, в которой весь функционал языка отлажен и работает без багов.

По функционалу Mash схож с Python.

Язык спроектирован максимально простым и полнофункциональным.

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

В качестве среды выполнения языка используется стековая виртуальная машина (ВМ), поддерживающая многопоточность, сборку мусора (Reference Counting).

Реализован транслятор языка (с построением AST, все как по книжкам) в абстрактный код для ВМ и в перспективе в другие языки (но из-за сложности языка — это пока только планы на будущее).

Для удобства в ознакомлении с языком и работе с ним реализована небольшая IDE (FPC + SynEdit).

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


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

Debug?


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

Язык поддерживает трассировку исключений.



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


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

Зависимости от каких-либо библиотек отсутствуют.

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

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


На данный момент я работаю над реализацией стандартного набора библиотек для работы с файлами, математикой, I/O, многопоточностью, GUI, сетью, базами данных, криптографией и т.д.





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

Что дальше?


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

В разработке, помимо библиотек для ВМ, находится JIT компилятор по типу HotSpot.

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


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