Комментарии проекта hjass
22

Главная страница

» hjass
hjass - это попытка реализовать независимый, октрытый и кроссплатформенный компилятор для языка JASS, который уже вечность используется как основной скриптовый язык в Warcraft III. Была поставлена цель обеспечить полную поддержку оригинального JASS, а также его надстроек vJASS и cJass, и обеспечить удобный способ встраивания компилятора как библиотеки (подход compiler-as-a-librarary).

Читать далее...
Mihahail #1 - 5 лет назад (отредактировано ) 0
Ну ладно:)
Просто в свое время я открыл для себя cjass и подумал про jass - какое уныние. Потом был javascript - и я недоумевал, почему его никто не юзает как скриптовый? Потом узнал про луа - и так и недовпилил его в свой недописанный сетевой космосим с сервером на эрланге(юзал это).
Потом обратил внимание на scheme/lisp - не самый плохой вариант для скриптового движка, но потом как то всё забросилось, а я так и не осилил плюсы.
NCrashed #2 - 5 лет назад 0
Mihahail:
Хаскель - очень милый язык, по выходным осваиваю потихоньку. Очень зря про него так. И вакансии и правда есть, не надо тут про 2.5 анонимуса. Единственный минус - после него не хочется уже на других языках прогать.
Ну и за llvm вообще респект. Пошёл изучать исходники.
Одного только не понимаю, почему именно jass? почему не javascript-like или, хм, rust-like, например? Теряем же в выразительности, как бы.
Символично - мой первый язык был именно jass. А еще достаточно просто для изучающего llvm с нуля, базовый jass (абсолютный минимум императивного языка) - весь компилятор 5 тыщ строк хаскелля с тестами (blizzrad.j и common.j и то занимают больше половины репы), а потом можно расширять до vjass, cjass или вводить свои улучшения, итого получится скриптовый язык, который Я бы хотел видеть в варе или sc2.
Mihahail #3 - 5 лет назад (отредактировано ) 2
Хаскель - очень милый язык, по выходным осваиваю потихоньку. Очень зря про него так. И вакансии и правда есть, не надо тут про 2.5 анонимуса. Единственный минус - после него не хочется уже на других языках прогать.
Ну и за llvm вообще респект. Пошёл изучать исходники.
Одного только не понимаю, почему именно jass? почему не javascript-like или, хм, rust-like, например? Теряем же в выразительности, как бы.
NCrashed #4 - 5 лет назад 0
Интересно можно ли запихнуть cil код в юнити? Если да то можно генерировать из llvm cil код...
Я уже закончил базовую C обертку, поэтому можно подключить все это к юнити.
ZLOI_DED #5 - 5 лет назад 2
Молодцы! Что сказать - буду ждать :3
J64_ #6 - 5 лет назад 0
Интересно можно ли запихнуть cil код в юнити? Если да то можно генерировать из llvm cil код...
NCrashed #7 - 5 лет назад 0
Насчет медленного кода, посмотри на emscripten там и вовсю линуху по браузерам пускают(тоже llvm) :)
Так это совсем другая история, вариант компиляции "jass -> galaxy -> виртуальная машина sc2" заранее проигрывает в производительности "jass -> llvm". В промежуточной стадии я потеряю море возможностей для оптимизации. А за идею с emscirpten спасибо, можно прикрутить перевод llvm байткода в asm.js и получим jass в браузере (потому что можем).
jasshelper вроде бы на дельфи, adichelper на masm.
Эх, дельфи еще можно причесать до кроссплатформенного вида, а вот с masm точно будут большие проблемы под не-виндой.
А почему бы просто не поступить так: даем adichelper'у исходный код, далее даем vjass'у и потом уже в hjass?
Изначально я так и хотел делать, и это будет работать. Однако эта связка будет только под Windows, и я буду привязан к существующим косякам и хакам внутренней реализации в этих проектах. Лучше бы взять их документацию и реализовать по ней с нуля.
J64_ #8 - 5 лет назад 0
NCrashed:
J64_, в моих планах создать отдельный движок, поэтому трансляция в галакси и дота скрипт не подходит. Также такая трансляция дает намного более медленный код, чем в асм.
Насчет медленного кода, посмотри на emscripten там и вовсю линуху по браузерам пускают(тоже llvm) :)
Если мне дадут исходники, то я смогу включить их в компилятор.
jasshelper вроде бы на дельфи, adichelper на masm. А почему бы просто не поступить так: даем adichelper'у исходный код, далее даем vjass'у и потом уже в hjass?
NCrashed #9 - 5 лет назад 0
J64_, в моих планах создать отдельный движок, поэтому трансляция в галакси и дота скрипт не подходит. Также такая трансляция дает намного более медленный код, чем в асм.
Если мне дадут исходники, то я смогу включить их в компилятор.
J64_ #10 - 5 лет назад 0
Если уж llvm то почему не сделал транслятор из jass кода в код для starcraft2, и вообще в c# и юнити или в код для доты2? Так можно будеть старые карты варки портировать, хотя вызовы нативок хз как реализовать.
насчет cjass vjass, почему бы не использовать оригинальные трансляторы(jasshelper adichelper)?
NCrashed #11 - 5 лет назад 0
prog, нужно будет написать jni обертку, ее я и сам буду для себя писать.
Про питон забыл, извиняюсь. А V8 прикручивать к проекту тоже не сахар.
prog #12 - 5 лет назад 0
NCrashed, а насколько сложно будет подключить это дело к джаве, обертки небось писать и нативные либы биндить придется? Так то я предпочитаю Lua, но почему бы и не добавить разнообразия.
Что касается альтернатив - есть еще, как минимум, питон и JS.
NCrashed #13 - 5 лет назад 0
alexprey, с открытием языка это должно, наконец то, стать реализуемым. Моно сильно портил переносимость, как минимум необходимостью иметь две ветки проги. Но и написать анализатор не сильно проще, в hjass всего 5к строк.
alexprey #14 - 5 лет назад 0
NCrashed, на счет шарпов ошибаешься, этож управляемый код, его спокойно можно анализировать.
NCrashed #15 - 5 лет назад 0
Hanabishi, а кроме луа альтернатив и нет, а что делать, если луа не по душе? А встроить безопасно плюсы и шарп - анреал.
А какова разница от языка реализации самого компилятора? Да хоть на брейнфаке, все равно потом С апи делать.
В защиту хаскелля скажу, что на западе много вакансий и я не раз брал оплачиваемые подработки на этом языке. Печально, что вокруг этого языка такая темная слава.
А целевой аудитории у проекта нет, это дань уважения моему первому ЯП. Пусть у XGM будет своя реализация джасса.
Hanabishi #16 - 5 лет назад (отредактировано ) -9
JASS
По функционалу он мягко говоря не очень на фоне реальных языков. Я считаю нет смысла его реализации, если уж так хочется, можно использовать Lua, с которого оный содран.
Любителям cJass вообще легче сразу пойти на плюсы/шарпы.
А вот например реализация гуя была бы интересной для нубов, но лично я не одобряю погромирование мышкой.
Haskell
Ахаха, а чего не на Лиспе-то? =D
Хаскель знают только 2.5 задрота в качестве хобби, реальной востребованости нет, какая ЦА у данного проекта - непонятно.
alexprey #17 - 5 лет назад (отредактировано ) 0
NCrashed, да не будут проблемы с кроссплатформенностью. Ну ладно не срослось и ладно)
NCrashed #18 - 5 лет назад 0
alexprey, не срослось с шарпом, могу лишь предложить шарповые байндинги
alexprey #19 - 5 лет назад 0
NCrashed, да меня наверное меньше всего производительность беспокоит, иначе бы я был ярый фанат асма и чистого си :D Было бы на шарпах, было бы очень круто и я бы даже поковырялся бы в этом и встроил бы в юнити для фана :3
NCrashed #20 - 5 лет назад 0
alexprey, нус, если беспокоишься о производительности, то по классическим бенчам хаскелль идет наравне с Java, C# и Scala. А все что можно из runtime вручную переведено в LLVM ассемблер и инлайнится в программы, весь рантайм со строны Haskell - передача указателей на malloc и native функции.
Hellfim #21 - 5 лет назад 0
alexprey, там дальше
Я знать не знаю Haskell и знать не хочу! Что мне делать?
У парня всё схвачено =)
alexprey #22 - 5 лет назад 0
читал ровно до момента
Весь компилятор и runtime написан на языке Haskell