Джулія, кросплатформна мова програмування досягла версії 1.9

Юлія Ланг

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.
  • Вкладені комбінації кортежів і іменованих кортежів символів тепер можна використовувати як параметри типу.

Нарешті, якщо вам цікаво дізнатися більше про це, ви можете ознайомитися з деталями У наступному посиланні.


Додати як пріоритетне джерело в Google