нём яп-ы? Требуется ли какое-то внимание к ним от мейнтейнеров или всё заканчивается на генерации IR компилятором? Совсем не понимаю эту кухню...
на оптимизации машинного кода точно влияет
https://www.phoronix.com/review/gcc-clang-eoy2023
У Julia LLVM отстаёт максимум на две версии. Но, учитывая, что основная часть LLVM это в основном про оптимизацию компиляторов языков, а не про IR, который используется в Julia, то получается, что все эти новые версии LLVM это про новые аппаратные платформы, а не про новые оптимизации IR. И да, есть ~180 файлов на C/C++, которые компилит LLVM. Но странно ожидать ускорения, например на GC, где всё на условных операторах, или ускорения Array, где только структуры. Как показывает практика, новые LLVM не дают заметного ускорения, чего не скажешь об новых версиях Julia. Сейчас v1.11-alpha, обещает с новым менеджером памяти Array существенное ускорение в DataStructures, во всяких Dict's.
А есть инструмент взять код икс и запустить на н последних версиях языка?
Формально есть CI github инструмент, который работает и для пакетов, но это не для скриптиков в домашней папочке.
Но если честно, то все эти githubы сложны в настройке, поэтому я держу все актуальные версии julia. И, частенько проверяю на своих проектах, запуская `$HOME/tmp/julia/1.XY/julia mine-some-project.jl` в скрипте по версиям Julia, чтобы посмотреть выигрыш новой версии. И да, компилить актуальную версию совсем не сложно, по крайней мере на линукс.
Наверное можно docker накидать с набором разных версий установленных. Надо только изоляцию аккуратно настроить, чтобы системные библиотеки корректно подтягивались
К сожалению, Julia в Docker занимает слишком много места, чтобы быть актуальной. Точнее это будет обычный Ubuntu, где в $HOME будет несколько гигабайт локальных данных. Этим недавно @vfonov занимался с целью минимизировать образ для возможности лёгкой загрузки всем Julia.
да, без чёрной магии там не обошлось. Вот, кому интересно: https://github.com/vfonov/minc_clearswi_app Docker image занимает 4.45GB
разделить бы её на часть сборки и часть выполнения
а как узнать, какой она блоб захочит во время выполнения ?
и, кстати, на всякий случай, https://github.com/docopt/DocOpt.jl
Обсуждают сегодня