Добавлен , опубликован
Добро пожаловать на главную стриницу проекта по разработке hjass! hjass - это попытка реализовать независимый, октрытый и кроссплатформенный компилятор для языка JASS, который уже вечность используется как основной скриптовый язык в Warcraft III. Была поставлена цель обеспечить полную поддержку оригинального JASS, а также его надстроек vJASS и cJass, и обеспечить удобный способ встраивания компилятора как библиотеки (подход compiler-as-a-librarary). Компилятор использует JIT компиляцию и базируется на широко распространенном фреймворке LLVM для создания оптимизирующих компиляторов, поэтому hjass на порядки быстрее своего прародителя.
Что на данный момент реализовано:
  • полная поддержка оригинального JASS, включая локальные массивы и ссылки на функции
  • базовая система модулей, позволяющая разделять код на дерево файлов:
import system.io.console // подключит system/io/console.j 
  • runtime библиотека для подключения своих native функций в язык, для вызова функций из hjass и проверки callback ссылок на hjass функции
Что пока не реализовано:
  • поддержка cJass, vJass
  • сборщик мусора (в альфе память от строк и делегатов не освобождается)
  • многопоточность
Бинарные сборки текущей альфа версии можно забрать тут.

FAQ

Какова лицензия у проекта?
Используется свободная лицензия MIT, которая позволяет программистам использовать лицензируемый код в закрытом ПО при условии, что текст лицензии предоставляется вместе с этим ПО. Является GPL совместимой.
На каком языке написан компилятор?
Весь компилятор и runtime написан на языке Haskell, однако скомпилированный в байткод hjass код не зависит от конкретного языка программирования, для реализации рантайма подходит любой язык, умеющий вызывать C функции.
Я знать не знаю Haskell и знать не хочу! Что мне делать?
Компилятор будет поставляться, и как отдельная C библиотека (.so или .dll), так и как Haskell библиотека (с немного лучшим API). А вообще, Haskell хороший язык.
Как подключать свои native функции?
Эта тематика будет подробно раскрыта в последующих материалах. Для сильных духом пока предлагаю заглянуть в тестовые примеры
Какие расширения JASS будут поддерживаться?
Сейчас в планах нативная поддержка vJass и cJass, также будет развиваться свое локальное наречие на основе лучших идей предшественников.
Какие платформы поддерживаются?
Оффициально поддерживаются Windows и GNU\Linux, остальное на усмотрение коммьюнити.
Какие имеются существенные отличия от оригинального JASS?
  • Наличие модулей
  • Снято ограничение на строгий порядок объявления функций (но для оригинального синтаксиса сохранено правило "все native, globals и объявления типов до тел функций")
Я хочу помочь. Что нужно делать?
Я всегда рад выслушать предложения и идеи, а также получить пару pull request'ов на страничке проекта на гитхабе. Также я сделаю подробные инструкции для потенциальных разработчиков, чтобы помочь продраться через первоначальный порог сборки зависимостей (для Windows ада уже есть страница )
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
12
9 лет назад
0
Интересно можно ли запихнуть cil код в юнити? Если да то можно генерировать из llvm cil код...
2
10
9 лет назад
2
Молодцы! Что сказать - буду ждать :3
0
18
9 лет назад
0
Интересно можно ли запихнуть cil код в юнити? Если да то можно генерировать из llvm cil код...
Я уже закончил базовую C обертку, поэтому можно подключить все это к юнити.
2
20
9 лет назад
Отредактирован Mihahail
2
Хаскель - очень милый язык, по выходным осваиваю потихоньку. Очень зря про него так. И вакансии и правда есть, не надо тут про 2.5 анонимуса. Единственный минус - после него не хочется уже на других языках прогать.
Ну и за llvm вообще респект. Пошёл изучать исходники.
Одного только не понимаю, почему именно jass? почему не javascript-like или, хм, rust-like, например? Теряем же в выразительности, как бы.
0
18
9 лет назад
0
Mihahail:
Хаскель - очень милый язык, по выходным осваиваю потихоньку. Очень зря про него так. И вакансии и правда есть, не надо тут про 2.5 анонимуса. Единственный минус - после него не хочется уже на других языках прогать.
Ну и за llvm вообще респект. Пошёл изучать исходники.
Одного только не понимаю, почему именно jass? почему не javascript-like или, хм, rust-like, например? Теряем же в выразительности, как бы.
Символично - мой первый язык был именно jass. А еще достаточно просто для изучающего llvm с нуля, базовый jass (абсолютный минимум императивного языка) - весь компилятор 5 тыщ строк хаскелля с тестами (blizzrad.j и common.j и то занимают больше половины репы), а потом можно расширять до vjass, cjass или вводить свои улучшения, итого получится скриптовый язык, который Я бы хотел видеть в варе или sc2.
0
20
9 лет назад
Отредактирован Mihahail
0
Ну ладно:)
Просто в свое время я открыл для себя cjass и подумал про jass - какое уныние. Потом был javascript - и я недоумевал, почему его никто не юзает как скриптовый? Потом узнал про луа - и так и недовпилил его в свой недописанный сетевой космосим с сервером на эрланге(юзал это).
Потом обратил внимание на scheme/lisp - не самый плохой вариант для скриптового движка, но потом как то всё забросилось, а я так и не осилил плюсы.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.