LLVM
Модератор: Модераторы
LLVM
А кто-нибудь в курсе что сейчас происходит с бэкендом для LLVM? Я читал в рассылке, что кто-то что-то в отдельном бранче пытался делать, но не знаю что там сейчас: разрабатывается активно, пассивно или совсем заброшено.
И там же где-то читал, что LLVM плохо стыкуется с концепцией языка, но мне тут не очень понятно, в чём проблема?
И там же где-то читал, что LLVM плохо стыкуется с концепцией языка, но мне тут не очень понятно, в чём проблема?
Ихмо проблема в исходниках FreePascal. Их писала курица лапой. Проще написать всё заново чем встроить.
На гугл-коде делали бакэнд для pascal.
Vadim писал(а):На гугл-коде делали бакэнд для pascal.
Делали, делали, да невыделовали...
Там, конечно, полноценный парсер и анализатор (на паскале, 7 дельфа с некоторыми оговорками), но для дальнейшего развития трубется хорошо попилить ту часть, которая отвечает за парсинг и кодогенерацию.
Продолжение проекта я не видел.
Pavia писал(а):Ихмо проблема в исходниках FreePascal. Их писала курица лапой
почему? из-за особого форматирования или структуры кода?
Mirage писал(а):У Мартина своеобразный подход ко всему, в том числе языку, так что это не сильно поможет.
Думаю, в FPC не все так страшно и его можно (и нужно) допилить. Сделали же JVM target.
помрёт же! не хватит критической массы пользователей, в отличии от FPC.
The MSElang compiler will also compile the Free Pascal dialect used in MSEide+MSEgui. I am currently implementing that.
Because the parser is steered by a grammar script, it is easy to add the real MSElang grammar later.
MSElang produces LLVM bitcode which will be optimised and compiled to machine code by external LLVM programs.
Because MSElang does not link to LLVM libraries it is possible to use newer LLVM versions without hassle.
I recently switched from LLVM 3.5 to 3.7 and LLVM 3.7 could read the bitcode produced by MSElang for LLVM 3.5 without problems.
I currently read plenty of LLVM C++ code. OUCH! As Jonas writes, the worst possible C++ stile. It also doesn't look fast.
Unfortunately the new Free Pascal language elements remind me to that experience.
The internal in-memory representation of the program in MSElang can run in a MSElang runtime for scripting purpose directly without use of LLVM.
Because the parser is steered by a grammar script, it is easy to add the real MSElang grammar later.
MSElang produces LLVM bitcode which will be optimised and compiled to machine code by external LLVM programs.
Because MSElang does not link to LLVM libraries it is possible to use newer LLVM versions without hassle.
I recently switched from LLVM 3.5 to 3.7 and LLVM 3.7 could read the bitcode produced by MSElang for LLVM 3.5 without problems.
I currently read plenty of LLVM C++ code. OUCH! As Jonas writes, the worst possible C++ stile. It also doesn't look fast.
Unfortunately the new Free Pascal language elements remind me to that experience.
The internal in-memory representation of the program in MSElang can run in a MSElang runtime for scripting purpose directly without use of LLVM.
debi12345 писал(а):Not fast for compile time or for resulting programs ?
Not fast for compile time. There are many stages of type casting by accessing classes at almost every line of code.
The compiled programs look very good.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
There are many stages of type casting by accessing classes at almost every line of code.
Exessive usage of polimorphism ? It's an "outstanding" C++ feature
Have You seen Blender (C++ too) code ? How do You rate it ?
Добавлено спустя 10 минут 20 секунд:
The internal in-memory representation of the program in MSElang can run in a MSElang runtime for scripting purpose directly without use of LLVM
Also do You consider easy-to-use (in single line etc) in-code alternative for IDE property setting so that user can write sophisticated programs without using IDE? IDE based project becomes cumbersome & fragile as project gets larger but it doesn't happen with pure in-code project.
Дож
Бэкенд LLVM уже несколько месяцев как влит в транк. Разработка ведётся активно.
Можно подумать, он в код заглядывал.
Какой код, сначала журнал SVN бы найти.
Бэкенд LLVM уже несколько месяцев как влит в транк. Разработка ведётся активно.
скалогрыз писал(а):почему? из-за особого форматирования или структуры кода?
Можно подумать, он в код заглядывал.
-
Kemet
- постоялец
- Сообщения: 241
- Зарегистрирован: 10.02.2010 18:28:32
- Откуда: Временно оккупированная территория
- Контактная информация:
Максим писал(а):Можно подумать, он в код заглядывал.Какой код, сначала журнал SVN бы найти.
Но код действительно ужасный, причем, насколько я помню, в версиях <= 1.x код был более вменяемый, по крайней мере местами
debi12345 писал(а):There are many stages of type casting by accessing classes at almost every line of code.
Exessive usage of polimorphism ? It's an "outstanding" C++ feature![]()
It seems so.
Have You seen Blender (C++ too) code ? How do You rate it ?
I don't know blender.
The internal in-memory representation of the program in MSElang can run in a MSElang runtime for scripting purpose directly without use of LLVM
Also do You consider easy-to-use (in single line etc) in-code alternative for IDE property setting so that user can write sophisticated programs without using IDE?
In interpreter mode? This mode is not intended for complex projects. With normal compiler you can do this already if you don't like to use *.mfm resource files.
IDE based project becomes cumbersome & fragile as project gets larger but it doesn't happen with pure in-code project.
I don't think so if one strictly separates GUI and business-logic for example with inprocess "ifi" data points and if a good version control system and regular commits will be used which can easy restore a working state in case of an accident.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
separates GUI and business-logic for example with inprocess "ifi"
Yes, it has been a surprise to me that WWW-apps (HTML+PHP+JS+CSS) are much-much easier to maintain exactly because of splitting functionality into HTML+PHP(server side = business logic) & JS(client side = GUI loading interaction) & AJAX(transport glue + parallelizing). Also this enforces the "orthogonal" approach of designing programs.
