Julia, междуплатформеният език за програмиране достига своята версия 1.9

Джулия Ланг

ulia е динамичен език на високо ниво и висока производителност за технически изчисления.

Преди няколко дни беше обявено излизането на новата версия на езика за програмиране Julia 1.9, който съчетава качества като висока производителност, поддръжка за динамично въвеждане и вградени инструменти за паралелно програмиране. Синтаксисът на Julia е близък до MATLAB, с някои елементи, заимствани от Ruby и Lisp.

Джулия се отличава с това, че е многоплатформен и многопарадигмен език за програмиране с динамично писане Рамка на високо ниво с висока производителност за общи, технически и научни изчисления със синтаксис, подобен на този на други подобни изчислителни среди.

Основни новини на Julia 1.9

В тази нова версия на Julia 1.9, която е представена, няколко подобрения във времето за изпълнение/компилатора, тъй като имаше Значително намаляване на времето до първото бягане. Предварителната компилация на пакети вече запазва родния код в "pkgimage", което означава, че кодът, генериран по време на предварителната компилация, няма да трябва да се компилира отново след зареждане на пакета. Използването на режим pkgimages може да бъде деактивирано с опцията „–pkgimages=no“.

Друга от промените, които се открояват, са извикванията с аргументи, които не са специфични за типа, вече могат да бъдат оптимизирани чрез разделяне на присъединяване за инжектиране или статична резолюция, дори ако има няколко различни типа кандидати за подаване. Това може да подобри производителността в определени ситуации, когато типовете обекти не са напълно разрешени статично, чрез статично разрешаване на сайтове за повикване "@nospecialize-d" и избягвайте повторно компилиране.

Литералите с един символ вече поддържат същия синтаксис като низовите литерали; този синтаксис може да представлява невалидни UTF-8 последователности, както е позволено от типа Char.

В допълнение към това, на Linux и Windows, опцията «--threads=auto» сега се опитва да определи наличния брой процесори въз основа на афинитета на процесора, което е маска, обикновено зададена в HPC и облачни среди.

Опцията е деактивирана--math-mode=бързо", вместо което се препоръчва използването на макроса "@fastmath", който има добре дефинирана семантика, в допълнение към параметъра "–Конци» вече има формат «кола | N[,auto|M]», където M указва броя на интерактивните нишки за създаване.

Добавена опция «--heap-size-hint=» за задаване на прага, след който започва активно събиране на отпадъци. Размерът може да бъде определен в байтове, килобайти (1000 KB), мегабайти (300 MB) или гигабайти (1,5 GB).

Макросът "@invoke". въведена във версия 1.7 вече е експортирана и достъпна за използване. Освен това, сега използвайте метода "Core.Typeof(x)". по-скоро "който и да е", когато анотацията за типа за аргумента "x" е пропусната. Това е необходимо, така че типовете, предавани като аргументи, да се обработват правилно.

Освен това, „Threads.@spawn“ вече има незадължителен първи аргумент „:default“ или „:interactive“. Интерактивната задача изисква отговор с ниска латентност и е проектирана да бъде кратка или честа. Интерактивните задачи ще се изпълняват на интерактивни нишки, ако са посочени при стартиране на Julia.

От други промени, които се открояват:

  • Отричането на предикатната функция "!f" сега връща съставна функция "(!) ∘ f" вместо анонимна функция.
  • Функциите за разделяне на размери вече работят върху множество измерения: «eachslice”, “eachrow” и “eachcol” връщане на обект "Slices» което позволява на корабоплаването да предоставя по-ефективни методи.
  • макросът «@kwdef» е добавен към публичния API.
  • Коригиран проблем с реда на операциите в "fld1".
  • Сортирането вече винаги е стабилно във времето (Преработен QuickSort).
  • Броят по подразбиране на BLAS нишките вече е равен на броя на CPU нишките на ARM архитектура и половината от броя на CPU нишките на други архитектури.
  • Printf: Преработени съобщения за грешка за неправилно формирани низове за по-добра четливост.
  • Профил: Нова функция „Profile.take_heap_snapshot(file)“, която записва файл в базиран на JSON формат „.heapsnapshot“, поддържан от Chrome.
  • Добавена е поддръжка за спецификацията Unicode 15.
  • Вложени комбинации от кортежи и именувани кортежи от символи вече могат да се използват като параметри на типа.

И накрая, ако имате интерес да научите повече за него, можете да се консултирате с подробностите В следващия линк.


Добавяне като предпочитан източник в Google