Добавлен , опубликован
Добро пожаловать на главную стриницу проекта по разработке 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
29
9 лет назад
0
читал ровно до момента
Весь компилятор и runtime написан на языке Haskell
0
30
9 лет назад
0
alexprey, там дальше
Я знать не знаю Haskell и знать не хочу! Что мне делать?
У парня всё схвачено =)
0
18
9 лет назад
0
alexprey, нус, если беспокоишься о производительности, то по классическим бенчам хаскелль идет наравне с Java, C# и Scala. А все что можно из runtime вручную переведено в LLVM ассемблер и инлайнится в программы, весь рантайм со строны Haskell - передача указателей на malloc и native функции.
2
29
9 лет назад
2
NCrashed, да меня наверное меньше всего производительность беспокоит, иначе бы я был ярый фанат асма и чистого си :D Было бы на шарпах, было бы очень круто и я бы даже поковырялся бы в этом и встроил бы в юнити для фана :3
0
18
9 лет назад
0
alexprey, не срослось с шарпом, могу лишь предложить шарповые байндинги
0
29
9 лет назад
Отредактирован alexprey
0
NCrashed, да не будут проблемы с кроссплатформенностью. Ну ладно не срослось и ладно)
1
26
9 лет назад
Отредактирован Hanabishi
1
JASS
По функционалу он мягко говоря не очень на фоне реальных языков. Я считаю нет смысла его реализации, если уж так хочется, можно использовать Lua, с которого оный содран.
Любителям cJass вообще легче сразу пойти на плюсы/шарпы.
А вот например реализация гуя была бы интересной для нубов, но лично я не одобряю погромирование мышкой.
Haskell
Ахаха, а чего не на Лиспе-то? =D
Хаскель знают только 2.5 задрота в качестве хобби, реальной востребованости нет, какая ЦА у данного проекта - непонятно.
0
18
9 лет назад
0
Hanabishi, а кроме луа альтернатив и нет, а что делать, если луа не по душе? А встроить безопасно плюсы и шарп - анреал.
А какова разница от языка реализации самого компилятора? Да хоть на брейнфаке, все равно потом С апи делать.
В защиту хаскелля скажу, что на западе много вакансий и я не раз брал оплачиваемые подработки на этом языке. Печально, что вокруг этого языка такая темная слава.
А целевой аудитории у проекта нет, это дань уважения моему первому ЯП. Пусть у XGM будет своя реализация джасса.
0
29
9 лет назад
0
NCrashed, на счет шарпов ошибаешься, этож управляемый код, его спокойно можно анализировать.
0
18
9 лет назад
0
alexprey, с открытием языка это должно, наконец то, стать реализуемым. Моно сильно портил переносимость, как минимум необходимостью иметь две ветки проги. Но и написать анализатор не сильно проще, в hjass всего 5к строк.
0
24
9 лет назад
0
NCrashed, а насколько сложно будет подключить это дело к джаве, обертки небось писать и нативные либы биндить придется? Так то я предпочитаю Lua, но почему бы и не добавить разнообразия.
Что касается альтернатив - есть еще, как минимум, питон и JS.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.