25.09.2020

Выпуск языка программирования Julia 1.5


Опубликован релиз языка программирования Julia 1.5, сочетающего такие качества как высокая производительность, поддержка динамической типизации и встроенные средства для параллельного программирования. Синтаксис Julia близок к MATLAB с заимствованием некоторых элементов из Ruby и Lisp. Метод манипуляции строками напоминает Perl. Код проекта распространяется под лицензией MIT.

В новой версии:

  • Проведена оптимизация размещения структур в памяти, которая позволила значительно сократить число операций распределения памяти в куче (за счёт inline-развёртывания или размещения в стеке), уменьшить потребление памяти и повысить производительность.
  • Улучшена поддержка многопоточности и стабилизирован API для работы с потоками.
  • Предоставлена возможность выбора уровня оптимизации, используемого при сборке отдельных модулей.
  • При передаче аргумента ключевого слова разрешено указание только одного имени, если оно совпадает для ключевого слова и переменной для хранения значения (например, вместо «x=x» можно указывать просто «x»).
  • Добавлен новый макрос «@ccall», предоставляющий более удобный синтаксис для вызова функций на языке Си.
  • Разрешён вызов макросов без разделения пробелом (вместо «@foo {…}» теперь можно писать «@foo{…}»).
  • На 25% увеличена производительность генерации псевдослучайных чисел.
  • Добавлена опция «—bug-report=rr» для записи и отправки rr-трассировок для упрощения исправления ошибок.
  • В пакетном менеджере по умолчанию активирован протокола Pkg, подразумевающий обращение к собственному репозиторию (pkg.julialang.org) вместо загрузки пакета напрямую из GitHub, GitLab, BitBucket и подобных хранилищ.

Ключевые особенности языка:

  • Высокая производительность: одной из ключевых целей проекта является достижение производительности близкой к программам на языке Си. Компилятор Julia основан на наработках проекта LLVM и генерирует эффективный нативный машинный код для многих целевых платформ;
  • Поддержка различных парадигм программирования, включая элементы объектно-ориентированного и функционального программирования. Стандартная библиотека предоставляет в том числе функции для асинхронного ввода/вывода, управления процессами, ведения логов, профилирования и управления пакетами;
  • Динамическая типизация: язык не требует явного определения типов для переменных по аналогии со скриптовыми языками программирования. Поддерживается интерактивный режим работы;
  • Опциональная возможность явного указания типов;
  • Синтаксис, превосходно подходящий для численных вычислений, научных расчётов, систем машинного обучения и визуализации данных. Поддержка многих числовых типов данных и средств для распараллеливания вычислений.
  • Возможность прямого вызова функций из библиотек на языке Си без дополнительных прослоек.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53481

Добавить комментарий