Компиляторы 2025: Итерация 4, 5 - #5
Conversation
|
Привет! Отличная работа. 10/10 Увидел тесты на scope, они проходят. Есть даже проходы оптимизационные. Конечно, llvm тоже оптимизирует. Но сделано намного больше, чем требуется. Есть небольшое улучшение по примерам, их пока тяжеловато запускать. Если хочешь, можешь реализовать. Примеры и makefileСейчас при просто запуске make в директории с тестами сборка не происходит. Потому что первым правилом в файле стоит build/print.s, потому создается только он. Предлагаю добавить вот это в начало файла. all: run_code # или exe/main
.PHONY: all run_code
Тогда без аргументов LinuxСборка примеров пока не работает на linux. В makefile есть вызов Можно сделать в корне репозитория файл env.bash с примерно таким содержанием. #!/bin/bash
export PATH="/opt/homebrew/Cellar/llvm/19.1.7_1/bin:$PATH"
# LD_LIBRARY_PATH, если надо. CMAKE_PREFIX_PATH, если cmake не находит llvm.
export PS1='(tlang-env) $PS1' # Можно закомментировать, если не нужно.Коммитить не нужно, это под конкретную конфигурацию системы. И в таком случае достаточно просто llc в makefile вызывать по имени. И он будет выбираться через PATH. Иногда в системах (особенно на линуксах типо ubuntu, у них в репозиториях есть и llvm-14, llvm-15, llvm-18, llvm-20 и мб это не все варианты, это на ubuntu 25.04, и на прошлых версиях примерно так же было) у утилит LLVM есть суффикс в виде версии через дефис (clang-14, clang-20, можно установить пакет clang, тогда он поставит последний, вроде бы, и сделает его доступным через просто clang). Тогда можно еще переменную сделать Запустить можно командой Из минусов -- удаляется только при закрытии терминала. Потому мб можно сразу терминал под это выделить. Если не менять PS1, то можно и не замечать изменений и спокойно пользоваться. Это вообще локальный скрипт, который пишется быстро и работает. Если вдруг нужно для прода или для нескольких людей, можно вообще вдохновиться скриптом activate от пакета virtualenv для python. https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/bash/activate.sh |
Дерево scope-ов с таблицами символов уже было реализовано до этого. В этой итерации: