ulia — це динамічна, високорівнева, високопродуктивна мова для технічних обчислень.
Кілька днів тому анонсовано вихід нової версії мови програмування Julia 1.9, який поєднує в собі такі якості, як висока продуктивність, підтримка динамічного введення тексту та вбудовані інструменти для паралельного програмування. Синтаксис Джулії близький до MATLAB, деякі елементи запозичені з Ruby та Lisp.
Юлія виділяється тим, що є мультиплатформенною та багатопарадигмальною мовою програмування з динамічною типізацією Високорівнева високопродуктивна структура для загальних, технічних і наукових обчислень із синтаксисом, подібним до синтаксису інших подібних обчислювальних середовищ.
Головні новини Юлії 1.9
У цій представленій новій версії Julia 1.9 декілька покращення середовища виконання/компілятора, оскільки там було Значне скорочення часу до першого запуску. Попередня компіляція пакета тепер зберігає рідний код у "pkgimage", що означає, що код, створений під час попередньої компіляції, не потрібно буде повторно компілювати після завантаження пакета. Використання режиму pkgimages можна вимкнути за допомогою опції «–pkgimages=no».
Ще однією із змін, що виділяється, є виклики з неспецифічними аргументами тепер можна оптимізувати за допомогою розділення об’єднань для ін’єкції або статичного дозволу, навіть якщо є кілька різних типів кандидатів на подання. Це може покращити продуктивність у певних ситуаціях, коли типи об’єктів не повністю вирішуються статично, шляхом статичного розв’язання сайтів викликів "@nospecialize-d" і уникайте повторної компіляції.
Односимвольні літерали тепер підтримують той самий синтаксис, що й рядкові літерали; цей синтаксис може представляти недійсні послідовності UTF-8, як це дозволено типом Char.
На додаток до цього в Linux і Windows опція «--threads=авто» тепер намагається визначити доступну кількість процесорів на основі спорідненості ЦП, яка є маскою, яка зазвичай встановлюється в високопродуктивних і хмарних середовищах.
Опцію вимкнено--math-mode=швидко", замість якого рекомендується використовувати макрос "@fastmath", який має чітко визначену семантику, крім параметра "–Нитки» тепер має формат «автомобіль | N[,авто|M]», де M визначає кількість інтерактивних потоків для створення.
Додана опція «--heap-size-hint=» щоб встановити поріг, після якого починається активне збирання сміття. Розмір можна вказати в байтах, кілобайтах (1000 КБ), мегабайтах (300 МБ) або гігабайтах (1,5 ГБ).
Макрос "@invoke". представлений у версії 1.7, тепер експортований і доступний для використання. Крім того, тепер використовуйте метод "Core.Typeof(x)". швидше "будь-який", коли анотація типу для аргументу "x" пропущена. Це потрібно, щоб типи, передані як аргументи, оброблялися правильно.
Крім того, «Threads.@spawn» тепер має необов’язковий перший аргумент «:default» або «:interactive». Інтерактивне завдання вимагає короткої затримки відповіді та призначене для короткого або частого виконання. Інтерактивні завдання виконуватимуться в інтерактивних потоках, якщо вони вказані під час запуску Julia.
З інші помітні зміни:
- Заперечення предикатної функції "!f" тепер повертає складену функцію "(!) ∘ f" замість анонімної функції.
- Функції розділення розмірів тепер працюють з кількома вимірами: «eachslice», «eachrow» і «eachcol» повернути об'єкт "Скибочки» що дозволяє надавати більш ефективні методи доставки.
- макрос «@kwdef» додано до публічного API.
- Виправлено проблему з порядком операцій у «fld1».
- Сортування тепер завжди стабільне з часом (перероблений QuickSort).
- Кількість потоків BLAS за замовчуванням тепер дорівнює кількості потоків ЦП на архітектурі ARM і половині кількості потоків ЦП на інших архітектурах.
- Printf: перероблено повідомлення про помилки для неправильно сформованих рядків для кращої читабельності.
- Профіль: нова функція «Profile.take_heap_snapshot(file)», яка записує файл у форматі «.heapsnapshot» на основі JSON, який підтримує Chrome.
- Додано підтримку специфікації Unicode 15.
- Вкладені комбінації кортежів і іменованих кортежів символів тепер можна використовувати як параметри типу.
Нарешті, якщо вам цікаво дізнатися більше про це, ви можете ознайомитися з деталями У наступному посиланні.