8 октября 2024 года состоялся релиз языка программирования Julia 1.11. Проект сочетает в себе такие качества как высокая производительность, поддержка динамической типизации и встроенные средства для параллельного программирования.
Синтаксис Julia близок к MATLAB с заимствованием некоторых элементов из Ruby и Lisp, а метод манипуляции строками напоминает Perl. Исходный код проекта опубликован на GitHub под лицензией MIT. Предыдущая стабильная версия проекта Julia 1.10 вышла в декабре 2023 года, и именно она сейчас стала LTS-сборкой (с долгосрочной поддержкой на три года), заменив на этом месте предыдущий LTS-релиз Julia 1.6.
В числе ключевых особенностей языка Julia выступают высокая производительность, поддержка различных парадигм программирования, включая элементы объектно-ориентированного и функционального, динамическую типизацию с опциональной возможностью явного указания типов, поддержку многих числовых типов данных и средств для распараллеливания вычислений, а также возможность прямого вызова функций из библиотек на языке C без дополнительных прослоек.
Основные изменения и доработки в Julia 1.11:
• добавлен новый Memory type, который предоставляет контейнер более низкого уровня в качестве альтернативы массиву. Большая часть типа массива теперь реализована в Julia поверх памяти, что приводит к значительному ускорению нескольких функций, например, push, а также к более удобному сопровождению кода;
• public — это новое ключевое слово. Символы, отмеченные как public, считаются public AP. Символы, отмеченные как export, теперь также рассматриваются как public AP;
• ScopedValue реализует динамическую область действия с наследованием между задачами;
• файлы Manifest.toml теперь можно переименовывать в формате Manifest-v{major}.{minor}.toml;
• поддержка Unicode 15.1;
• обновлена эвристика GC для подсчёта выделенных страниц вместо отдельных объектов;
• добавлена поддержка аннотирования Base;
• файлы кэша предварительной компиляции теперь можно перемещать, а их действительность проверяется с помощью хеша содержимого исходных файлов вместо mtime;
• новый Makefile для сборки Julia и LLVM с использованием стратегий оптимизации на основе профиля и времени компоновки (PGO и LTO);
• внесены значительные дополнения, новые функции и опции в библиотеках проекта. Также переработан код стандартной библиотеки, включая элементы StyledStrings, Libdl, LinearAlgebra, Random, REPL, Dates, Statistics и Distributed;
• элементы Base.map, Iterators.map и foreach потеряли свои методы с одним аргументом;
• библиотека libuv обновлена с базы v1.44.2 до v1.48.0;
• tput больше не вызывается для проверки возможностей терминала, он был заменён на парсер terminfo на чистом Julia;
• база данных информации терминала terminfo теперь по умолчанию является вендорной, что обеспечивает лучший пользовательский интерфейс REPL, когда terminfo недоступен в системе.
Julia может быть собрана без вендорной базы данных с помощью параметра Makefile WITH_TERMINFO=0.
Язык Julia был разработан в Массачусетском технологическом институте и представлен в 2012 году. В 2015 его создатели — доктор Вирал Шах, профессор Алан Эдельман, доктор Джефф Безансон, Стефан Карпински — совместно с Дипаком Винчи и Кено Фишером основали компанию Julia Computing. Язык используют более чем 10 тыс. компаний по всему миру, включая AstraZeneca, BlackRock, Google, Intel, Microsoft, Moderna, Pfizer.