ulia är ett dynamiskt högnivå- och högpresterande språk för teknisk beräkning.
Lanseringen av Julia 1.9, den nya versionen av programmeringsspråket, tillkännagavs för några dagar sedan. Den kombinerar funktioner som hög prestanda, stöd för dynamisk typning och integrerade verktyg för parallell programmering. Julias syntax liknar MATLAB, med vissa element lånade från Ruby och Lisp.
Julia utmärker sig som ett högpresterande, dynamiskt typat programmeringsspråk för flera plattformar och paradigmer för allmän, teknisk och vetenskaplig databehandling, med en syntax som liknar den i andra liknande datormiljöer.
Huvudnyheter om Julia 1.9
Den här nya versionen av Julia 1.9 har flera förbättringar av körtid/kompilering, inklusive en betydande minskning av tiden till första exekvering. Paketförkompilering sparar nu inbyggd kod i en "pkgimage", vilket innebär att kod som genereras under förkompilering inte behöver kompileras om efter att paketet har laddats. Användningen av pkgimages-läget kan inaktiveras med alternativet "--pkgimages=no".
En annan anmärkningsvärd förändring är att anrop med icke-typspecifika argument nu kan optimeras med hjälp av unionsdelning för injektion eller statisk upplösning, även om det finns flera olika typer av inlämningskandidater. Detta kan förbättra prestandan i vissa situationer där objekttyper inte är helt upplösta statiskt, genom att statiskt upplösa platserna för " @nospecialize-d" -anrop och undvika omkompilering.
Enstaka teckenliterals stöder nu samma syntax som strängliteraler; dessa syntaxer kan representera ogiltiga UTF-8-sekvenser, vilket tillåts av Char-typen.
Dessutom försöker alternativet " --threads=auto " på Linux och Windows nu bestämma det tillgängliga antalet processorer baserat på CPU-tillhörighet, vilket är en mask som vanligtvis anges i HPC- och molnmiljöer.
Alternativet " --math-mode=fast " har inaktiverats , och det rekommenderas att använda makrot " @fastmath " istället , vilket har en väldefinierad semantik. Dessutom har parametern " --threads " nu formatet "auto | N[,auto|M]" , där M anger antalet interaktiva trådar som ska skapas.
Alternativet " –heap-size-hint=<size> " lades till för att ställa in tröskelvärdet efter vilket aktiv sophämtning börjar. Storleken kan anges i byte, kilobyte (1000 KB), megabyte (300 MB) eller gigabyte (1,5 GB).
Makrot "@invoke" som introducerades i version 1.7 är nu exporterat och tillgängligt för användning. Dessutom använder det nu metoden "Core.Typeof(x)" istället för " Any " när typannoteringen för argumentet "x" utelämnas. Detta är nödvändigt för att typer som skickas som argument ska bearbetas korrekt.
Dessutom har `Threads.@spawn` nu ett valfritt första argument, antingen `:default` eller `:interactive`. En interaktiv uppgift kräver ett svar med låg latens och är utformad för att vara kort eller köras ofta. Interaktiva uppgifter kommer att köras på interaktiva trådar om det anges när Julia startar.
Andra anmärkningsvärda förändringar inkluderar:
- Negerande av predikatfunktionen "!f" returnerar nu en sammansatt funktion "(!) ∘ f" istället för en anonym funktion.
- Dimensionsdelade funktioner fungerar nu på flera dimensioner: «varje skiva, "eachrow" och "eachcol" returnera ett objekt "Skivor» som gör att frakten kan tillhandahålla effektivare metoder.
- Makrot «@kwdef» har lagts till i det offentliga API:et.
- Fixade ett problem med operationsordningen i "fld1".
- Sorteringen är nu alltid stabil över tid (Redesigned QuickSort).
- Standardantalet BLAS-trådar är nu lika med antalet CPU-trådar på ARM-arkitektur och hälften av antalet CPU-trådar på andra arkitekturer.
- Printf: Omarbetade felmeddelanden för felaktiga strängar för bättre läsbarhet.
- Profil: Ny funktion "Profile.take_heap_snapshot(file)" som skriver en fil i JSON-baserat ".heapsnapshot"-format som stöds av Chrome.
- Lade till stöd för Unicode 15-specifikationen.
- Kapslade kombinationer av tupler och namngivna teckentupler kan nu användas som typparametrar.
Slutligen, om du är intresserad av att lära dig mer, kan du hitta detaljerna på följande länk.