Компилятор ObjectPascal с LLVM-бакендом
Модератор: Модераторы
-
Kemet
- постоялец
- Сообщения: 241
- Зарегистрирован: 10.02.2010 18:28:32
- Откуда: Временно оккупированная территория
- Контактная информация:
Компилятор ObjectPascal с LLVM-бакендом
В общем есть идея, основанная на некоторой корпоративной целесообразности, таки написать фронтенд к LLVM для языка Object Pascal уровня Delphi 2006. Кроме нас нужно кому-то данное поделие?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Я бы не отказался попробовать.
В FPC уже ведётся разработка LLVM-бэкенда, см. в транке compiler\llvm и http://lists.freepascal.org/fpc-devel/2 ... 35747.html
Kemet писал(а):фронтенд к LLVM для языка Object Pascal
Что именно Вы имеете в виду? Какие конструкции будут поддерживаться, есть ли наброски? Будете ли использовать какие-либо готовые разработки, чтобы довести их до ума (к примеру ip015 или llvm-pascal)?
Дож писал(а):В FPC уже ведётся разработка LLVM-бэкенда
Вот только его использование - это скорее от безысходности.
FPC вместе с FPC RTL - это, в первую очередь, кроссплатформенность, а уже потом все остальное (производительность, оптимизация, качество кода, надежность и т.п.).
LLVM сам по себе кроссплатформенный и получаем только избыточность при кодогенерации (FPC очень старается), да и томоза тоже местами случаются.
FreePascal монстроузный, а LLVM белый и пушистый?
hinst писал(а):FreePascal монстроузный, а LLVM белый и пушистый?
FreePascal - вещь в себе. Содержит все, что необходимо для быстрого старта и завершения проекта:
1. Пишите документированными функциями с однаковым результатом
2. Приложение запускается на любой поддерживаемой платформе
3. Кросскомпиляция почти из коробки
4. Модули тестирования, свой генератор сборочных файлов (+ lazbuild) и т.п. делает большую часть разработки комфортной и простой
5. Своя IDE (Lazarus) отлично справляется с поставленными задачами
Но есть свои но:
1. Требуется очень много ресурсов, чтобы отладить серьёзный рефакторинг кодовой базы (а он много где нужен)
2. Наличие рекурсивных зависимостей внутри компонент RTL
3. Отсутствует единый сервис сборки и тестирования (по крайней мере, я не видел) изменений, поэтому 1 пункт даже при наличии ресурса не всегда можно довести до ума сразу
LLVM - это лишь бекенд, который соберет бинарник. Не белый, не пушистый, лишь инструмент. Да и воспользоваться им эффективно затруднительно: результат все равно будет опосредственный, свой кодогенератор у FPC куда лучше справляется.
wavebvg писал(а):LLVM сам по себе кроссплатформенный и получаем только избыточность при кодогенерации (FPC очень старается), да и томоза тоже местами случаются.
Например, FPC не умеет компилироваться в JS, а LLVM умеет :) Так что не только избыточность, но и новые возможности.
В чём гипотетический отдельный Pascal-фронтенд к LLVM будет лучше компиляции в LLVM из FPC?
-
Kemet
- постоялец
- Сообщения: 241
- Зарегистрирован: 10.02.2010 18:28:32
- Откуда: Временно оккупированная территория
- Контактная информация:
Не стоит путать фронтенд (синтаксис/семантика), с инфраструктурой - инфраструктура LLVM и FPC вполне нормальные(ну если закрыть глаза на сам исходный код FPC), а вот фронтенд FPC действительно монструозный.hinst писал(а):FreePascal монстроузный, а LLVM белый и пушистый?
Добавлено спустя 2 минуты 8 секунд:
Я видел - не устраимвает именно сам фронтенд и линия партии, по которой движется Дельфи и Фрипаскаль.Дож писал(а):В FPC уже ведётся разработка LLVM-бэкенда, см. в транке compilerllvm и http://lists.freepascal.org/fpc-devel/2 ... 35747.html
Добавлено спустя 2 минуты 45 секунд:
Я же написал - ориентир Delphi 2006, пока ТЗ нет. Будет писаться с нуля.wavebvg писал(а):Какие конструкции будут поддерживаться, есть ли наброски? Будете ли использовать какие-либо готовые разработки, чтобы довести их до ума (к примеру ip015 или llvm-pascal)?
Добавлено спустя 2 минуты 27 секунд:
И да, сборка мусора тоже будет поддерживаться
И да, сборка мусора тоже будет поддерживаться
Дай угадаю: вся тема — это такой пятничный троллинг?
-
Kemet
- постоялец
- Сообщения: 241
- Зарегистрирован: 10.02.2010 18:28:32
- Откуда: Временно оккупированная территория
- Контактная информация:
причем здесь троллинг? нам, реально нужен GC, ну не совсем нам, да, а клиентам, мы то сами от FPC давно отказались, пользуем Delphi в случае необходимости(невеликой), но, в силу наличия выигранного тендера и желания заказчика, придется вновь ввести объжект паскаль в продакшен - сейчас решение на FPC, как временное решениеДож писал(а):И да, сборка мусора тоже будет поддерживаться
Дай угадаю: вся тема — это такой пятничный троллинг?
Слишком много противоречий
Нельзя просто так взять и написать компилятор с нуля. А недописанный компилятор без библиотек, без IDE но с багами нафиг нужен. Поэтому ответ = не нужен
hinst писал(а):Нельзя просто так взять и написать компилятор с нуля. А недописанный компилятор без библиотек, без IDE но с багами нафиг нужен. Поэтому ответ = не нужен
ну почему, у автора ведь есть ограничения - они позволят использовать существующие IDE и даже библиотеки
hinst писал(а):недописанный компилятор без библиотек, без IDE
hinst писал(а):компилятор
Так же, как и FPC.
Идея в том, чтобы написать новый транслятор языка, а не новый язык.
-
Kemet
- постоялец
- Сообщения: 241
- Зарегистрирован: 10.02.2010 18:28:32
- Откуда: Временно оккупированная территория
- Контактная информация:
Это не полный компилятор, а фронтенд к LLVM, что несколько проще, к тому же язык - Дельфи 2006(ориентир), так что собрать ото же Лазарус или тайфун будет можно (хотя, возможно, и потребуются некоторые изменения, кроме того есть своя IDE, написанная на Delphi 2006, так что всё не так печальноhinst писал(а):Нельзя просто так взять и написать компилятор с нуля. А недописанный компилятор без библиотек, без IDE но с багами нафиг нужен. Поэтому ответ = не нужен
