Опубликован релиз языка программирования Julia 1.3, сочетающего такие качества как высокая производительность, поддержка динамической типизации и встроенные средства для параллельного программирования. Синтаксис Julia близок к MATLAB с заимствованием некоторых элементов из Ruby и Lisp. Метод манипуляции строками напоминает Perl. Код проекта распространяется под лицензией MIT.
В новой версии:
- Реализована возможность добавления методов в абстрактные типы;
- Обеспечена поддержка Unicode 12.1.0 и возможность использования специфичных начертаний цифровых символов Unicode (𝟎-𝟗, 𝟘-𝟡) в идентификаторах;
- Для вывода и разбора нестандартных имён переменных предложен новый синтаксис var"#str#";
- Расширены средства, связанные с многопоточностью: Добавлен макрос Threads.@spawn и ключевое слово Channel(f::Function, spawn=true) для организации запуска задач в любом доступном потоке. Все системные операции ввода/вывода с файлами и сокетами, а также генератор псевдослучайных чисел, адаптированы для многопоточных приложений (thread-safe);
- Добавлены новые библиотечные функции, включая
findfirst, findlast, findnext, findprev, findall(pattern, string), count(pattern, string), sincosd(x) и nonmissingtype.
Ключевые особенности языка:
- Высокая производительность: одной из ключевых целей проекта является достижение производительности близкой к программам на языке Си. Компилятор Julia основан на наработках проекта LLVM и генерирует эффективный нативный машинный код для многих целевых платформ;
- Поддержка различных парадигм программирования, включая элементы объектно-ориентированного и функционального программирования. Стандартная библиотека предоставляет в том числе функции для асинхронного ввода/вывода, управления процессами, ведения логов, профилирования и управления пакетами;
- Динамическая типизация: язык не требует явного определения типов для переменных по аналогии со скриптовыми языками программирования. Поддерживается интерактивный режим работы;
- Опциональная возможность явного указания типов;
- Синтаксис, превосходно подходящий для численных вычислений, научных расчётов, систем машинного обучения и визуализации данных. Поддержка многих числовых типов данных и средств для распараллеливания вычислений.
- Возможность прямого вызова функций из библиотек на языке Си без дополнительных прослоек.
|