Интересные проекты компилятора

Я смотрю на семестровый проект в компиляторах, который также может превратиться в мою дипломную работу. У меня нет большого опыта в этой области (я написал небольшой "переводчик" для Паскаля как часть моей работы бакалавра) - я больше увлекался машинным обучением и искусственным интеллектом. Идея состоит в том, чтобы принять это как вызов и научиться чему-то в процессе.

Я взглянул на: интересные проекты компиляторов, но большинство идей кажутся устаревшими.

То же самое относится и к странице открытых проектов LLVM --- http://llvm.org/OpenProjects.html

Поскольку у меня будет семестр для работы над этим, я стремлюсь к чему-то немного значительному. Я хотел бы работать над оптимизацией или распараллеливанием. Над чем интересно работать?

1 ответ

Решение

Не стесняйтесь вносить свой вклад в Феликс, есть неограниченное количество подходящих мини-проектов, связанных практически со всем, что вас интересует:) Феликс написан на Ocaml, поэтому вам придется работать с этим. Парсер использует Scheme для кодов действий. Феликс генерирует C++, если вам нужна поддержка во время выполнения. Возможные подпроекты включают в себя:

  1. метатипирование и полиадическое поведение
  2. улучшение доказательства теорем (Феликс генерирует почему форматирует файлы из утверждений)
  3. Расширение диапазона оптимизаций
  4. Добавление новых оптимизаций
  5. Поддержка генерации OMP-директив
  6. Улучшенный сборщик мусора

Эти проблемы варьируются по сложности от простого к сложному, как вы хотите. Уровень знаний о продукте варьируется от необходимости понимать все это до простых структур данных.

Основная информация: Felix - это статически типизированный процедурный язык сценариев в семействе ML, который работает быстрее, чем C. Он генерирует C++, который передается вашему компилятору C++ для генерации двоичных файлов машин. Он использует менеджер ресурсов, чтобы найти все ресурсы и связать их, так что его так же легко использовать, как и Python. Он встраивает C и C++, поэтому можно использовать большинство ваших библиотек C/C++. Это целый программный анализатор, который фокусируется на высокоуровневых оптимизациях и позволяет вашему компилятору C++ выполнять низкоуровневые. Оптимизация высокого уровня включает в себя семантические правила очень высокого уровня, такие как указание, что обратное изменение списка дважды не допускается, или реализация параллельных назначений для минимизации затрат на хвостовую рекурсию, однако встраивание функций и переменных является основным источником производительности. Семантика выбрана так, чтобы разрешить агрессивную оптимизацию, например, режим передачи аргументов по умолчанию допускает либо нетерпеливую, либо ленивую оценку, в зависимости от того, что компилятор считает быстрее.

Свяжитесь со мной по skaller у пользователей dot sourceforge dot net.

Другие вопросы по тегам